Server Information Structure

A Server Information structure is returned from getServerInfo().

allowRemoteControl

This indicates whether the server accepts API connections from remote hosts. If this is false, API connections are only accepted from localhost.

apiControlPort

The port number on which the server will accept API connections.

APITokensAvailable

This indicates whether the server supports creation and use of API tokens. See createAPIToken().

apiVersion

The API compatibility version for the connected server. API methods are aware of the server version required, and will report an error if the API versions do not match.

authRequired

Always True. Every API connection must authenticate: call auth() or authAsync() after calling connect().

bandwidthLimits

Server Bandwidth Limits Structure

certificateValidation

A message about the server’s TLS certificate. For example: "Server certificate will expire in 42 days", or "Server certificate is expired or not yet valid".

configuration

Server Configuration Structure. Note that this key only exists for superusers. See superuser().

eventLogAvailable

This indicates whether the server’s event log is active. If active, the getEventLog command may be used to retrieve the server’s event history.

hostName

The name of the machine host that is running the server. This is different from the serverName, which is assigned to the JetStream server itself.

license

Server License Structure

multiplexAvailable

Always False. The server no longer uses one port for both sending and receiving traffic.

publicKey

A server’s public key, used for encrypted connections.

receiver

Receiver Server Information Structure

revision

An integer representing revision (version) of the server.

serverExternalAddress

Hostname and port, as specified by the --external-address option at server start.

serverId

A string that uniquely identifies a server instance. This ID is regenerated every time a server is launched.

serverName

A friendly name assigned to a server.

serverPlatform

A string that represents the OS running the server. One of windows, linux, or macOS.

serverTime

A timestamp indicating the current time on this server. See Timestamps.

serverUid

A string that uniquely identifies a server. This ID is generated once, and stored in the server’s persistent state.

serverWebShareBranding

The branding in effect for web share pages: path (None for the built-in document), logoPath, faviconPath, activeTheme and values, a map of template slot names to their values.

serverWebShareStats

Totals for the web share tier: unlocks, web links, active downloads, bytes served, connections, queue depths, cache counters and download-count ledger counters. No value names a recipient. Present only when --web-share-port is set.

serverWebShareUrl

The public HTTPS address that a browser recipient opens for a web share. None when the server was started without --web-share-url.

serverWebShareWarnSize

The share size, in bytes, above which JetStream tells recipients and sharers that a browser download cannot continue after an interruption. It is a message only, not a limit. Set it with --web-share-warn-size.

sharedTokensAvailable

This indicates whether the server supports creation and use of shared tokens. See createSharedToken().

user

Server User Structure

version

A string representing the version of the server.

Changed in version 1.5.0: Added version and revision keys.

Changed in version 1.6.0: Added bandwidthLimits.

Changed in version 3.0.0: (API 47) Added budgetSource, budgetInForce, budgetOverride, minTransferRate and budgetEstimateEnabled to bandwidthLimits. These report the server’s transfer scheduler, which since this version limits how many transfers run at once rather than only how fast they run. Unlike the other rates in this structure, these are in megabits-per-second.

Changed in version 3.0.0: (API 62) Added maxConcurrentTransfers to bandwidthLimits: the most transfers the server runs at once, a count rather than a rate.

Changed in version 3.0.0: (API 63) Removed minTransferRate and pathsIdle from bandwidthLimits. Admission is maxConcurrentTransfers alone, in every regime; a budget of any source is a ceiling on the total rate and decides nothing about how many transfers run.

Changed in version 1.7.0: Added certificateValidation.

Changed in version 2.4.0: Added APITokensAvailable.

Receiver Server Information Structure

A Receiver Server Information structure is returned as part of the Server Information Structure.

authRequired

True if the server required a username and password for transfers.

onlyAuthorizedClientsAllowed

Indicates whether this receiving server allows only pre-authenticated clients. Clients may be pre-authenticated using the addAuthorizedClientAsync() command.

receiverIP

The IP for the receiver connection. An IP of 0.0.0.0 is a wildcard that means the server is listening for connections from any IP.

receiverPort

The port for the receiver connection.

receiverPorts

A list of the receive ports of every receiver on this server.

registrations

The connections this receiver holds open to other servers, from addRegistration() or from jetstream server --recv-relay-host. A registration is how a receiver behind a NAT stays reachable: it connects out to that server and holds the connection open, and the server sends to it through that connection.

Each item has:

  • address — the server it connects to. Give this to removeRegistration() to stop it.

  • registered — True if that server can reach this receiver now. This is the question to ask when a transfer to this machine does not start.

  • gaveUp — True if the receiver stopped trying. This happens only for a failure that a retry cannot correct, such as a key the far server does not authorize.

  • lastStatus — the last answer the far server gave.

  • persistent — True if this registration comes back after a restart. A registration from the command-line option comes back from the option instead, and is False here.

This is not the same as relayRegistered, which reports only the one relay that jetstream server --recv-relay-host names.

Added in version 3.0.0.

relayIP

The IP for the relay server, if using a relay. Will be None if not using a relay.

relayPort

The port for the relay server, if using a relay. Will be None if not using a relay.

relayRegistered

True if the receiver can be reached through the relay that jetstream server --recv-relay-host names, at this moment.

socketRecvBufferSize

The size of the buffer allocated for receiving data.

socketSendBufferSize

The size of the buffer allocated for sending data.

tcpDataPort

The TCP port that a sender dials for a TCP transfer to this receiver. 0 when this server has no TCP data plane.

udpRecvDrops

The number of datagrams that the operating system discarded from a full UDP receive buffer since the receiver started. None on a platform that cannot measure it.

udpRecvDropsScope

What udpRecvDrops counts: socket (Linux, this port only) or host (macOS, the whole machine). None together with udpRecvDrops.

Server Bandwidth Limits Structure

A Bandwidth Limits structure is returned as part of the Server Information Structure.

borrowIncoming

If both incoming and outgoing rate limits are active, add unused incoming bandwidth to the outgoing rate limit.

borrowOutgoing

If both incoming and outgoing rate limits are active, add unused outgoing bandwidth to the incoming rate limit.

budgetEstimateEnabled

Whether the server is allowed to estimate a budget from its own measurements when no limit is configured. False when the server was started with --disable-budget-estimate.

Read this before drawing a conclusion from budgetSource: none on a busy server: with estimation turned off, none means “no limit was configured”, not “nothing has been measured yet”.

budgetInForce

The budget the server is actually scheduling against, in megabits-per-second, or None when budgetSource is none.

This is not the same number as outgoingRateLimit: that is what an operator asked for, while this is what is in force after the server reserves capacity for acknowledgement traffic — or, on a server with no configured limit, a measurement of the link.

Note

This field and the one below it are in megabits-per-second, while incomingRateLimit and outgoingRateLimit in the same structure are in kilobits-per-second. The scheduler’s values match the units you set them in with updateSchedulerParams(), so that a value never means one thing when you set it and another when you read it back.

budgetOverride

The budget an administrator set on the running server, in megabits-per-second, or None if none is set.

Reported separately from budgetSource because the two answer different questions. budgetSource says what the last scheduling decision used, and scheduling decisions only happen while the server is sending; this says what was set. On an idle server an override is in effect but not yet in force.

budgetSource

Where the outgoing bandwidth budget the server is scheduling against came from. Read-only; there is no way to set it. One of:

override

A value an administrator set on the running server with updateSchedulerParams(). This outranks a configured limit and behaves the same way. It is never saved, so it is gone after a restart.

configured

An explicit outgoingRateLimit. This is policy: it is enforced as a ceiling on the server’s total outgoing rate. It does not decide how many transfers run at once – since API 63 that is maxConcurrentTransfers alone – and it does not cap any one transfer at a share: admitted transfers draw from one shared ceiling.

estimated

Derived from the transport’s own measurement of what the network can carry, reported when no limit is configured. Since API 63 it is reported and nothing more – it does not decide how many transfers run, never pauses a running transfer, and never caps a rate. (It used to bound admission; that was a feedback loop, because the measurement is formed from the transfers admission had already allowed.)

none

No limit is configured and nothing has been measured yet, or measurement is turned off. Admission is unaffected either way: in every case it is maxConcurrentTransfers.

incomingLimitActive

Whether incoming limits are applied.

incomingMaxConnections

The maximum number of incoming connections.

incomingRateLimit

The maximum incoming data rate, in kilobits-per-second.

maxConcurrentTransfers

The most transfers the server runs at once, set with --max-concurrent-transfers. 0 means no limit. A transfer that reports waiting waits on this number or on maxTransfersPerDestination.

The most browser downloads from web shares that the server runs at once, set with --max-concurrent-weblinks. 0 means no limit. This count is separate from maxConcurrentTransfers.

maxTransfersPerDestination

The most transfers to one destination that the server runs at once, set with --max-transfers-per-destination. 0 means no limit.

maxWeblinksPerDestination

The most browser downloads to one recipient that the server runs at once, set with --max-weblinks-per-destination. 0 means no limit.

outgoingLimitActive

Whether outgoing limits are applied.

outgoingRateLimit

The maximum outgoing data rate, in kilobits-per-second.

Server Configuration Structure

A Configuration structure is returned as part of the Server Information Structure. It holds data about how the server is configured and is only available to a superuser. See superuser().

cloudFileCache

Cloud File Cache Structure

garbageCollect

Garbage Collection Structure

persistentStateDir

The path to which the server will save its encryption key files. If this directory is specified at launch, the server will provide a consistent public key for its encryption interfaces.

triggersAvailable

This indicates whether the server’s trigger system is active. If active, any triggers found in the triggersDir will be executed in response to their associated events.

triggersDir

The directory in which the server looks for triggers.

Changed in version 1.8.0: Added fileCache and garbageCollect keys.

Changed in version 2.6.0: Renamed fileCache to cloudFileCache.

Cloud File Cache Structure

A Cloud File Cache structure is returned as part of the Server Configuration Structure. It holds the server’s cloud file cache information.

highWatermark

The size, in bytes, of memory allocated to cloud file cache.

maximumSize

Maximum size, in bytes, of the cloud file cache. This can be defined at server startup using --max-cloud-cache-size

Garbage Collection Structure

A Garbage Collection structure is returned as part of the Server Configuration Structure. It holds the server’s garbage collection configuration.

intervalSeconds

The time, in seconds, between each garbage collection.

timeLimitSeconds

The grace period, in seconds, to allow for items that are ready to be garbage collected.

Server License Structure

A License structure is returned as part of the Server Information Structure.

clientAddress

The address of this server as the license server saw it.

errorMessage

If a license is invalid, a message indicating the reason.

expiry

The date on which the JetStream license expires for this server.

maxSyncFolders

The most watch folders that the license allows.

valid

This indicates whether the license is currently valid (True) or invalid (False).

Server User Structure

A User structure is returned as part of the Server Information Structure.

authed

This indicates whether authentication has been performed on the current API connection.

permissions

Permissions granted to this user. See PERMISSIONS

sandboxed

This indicates whether the user is restricted to a sandbox directory, instead of full filesystem access. Returns None when not authenticated.

superuser

This indicates whether the authenticated user is a superuser. If not authenticated, this will be False.

token

The token of the currently authenticated user. If not authenticated or user name auth was used, this will be None.

tokenSession

The token session of the currently authenticated user. If not authenticated or user name auth was used, this will be None.

userId

The ID of the currently authenticated user. For token authentication, this is the token.

userName

The name of the currently authenticated user. If not authenticated or if token auth was used, this will be None.

wrangler

This indicates whether the authenticated user has wrangler privileges on this connection. A wrangler can access and modify all data. See wrangler().

Changed in version 1.5.0: Renamed username to userName.

Changed in version 2.4.0: Added permissions.