Skip to content

Account and tenant

GraphQL schema reference · API guide · SDKs

The tenant, wallet and email identities.

Types used by more than one domain are on Shared types.

Get the current tenant’s profile and settings.

tenant: Tenant

Returns: Tenant (Tenant)

SDK

OperationTypeScriptGoPython
GetTenantGetTenantDocumentGetTenantget_tenant

Link an email to a wallet-only account. This enables the upgrade path from prepaid to postpaid billing. A verification email will be sent to confirm the address.

linkEmail(
input: LinkEmailInput!
): LinkEmailResult!

Returns: LinkEmailResult! (LinkEmailResult)

Arguments

  • input: LinkEmailInput! (LinkEmailInput) — Email and password to set on the account.

SDK

OperationTypeScriptGoPython
LinkEmailLinkEmailDocumentLinkEmaillink_email

Link an additional wallet to the current user’s account. Requires an existing authenticated session.

linkWallet(
input: WalletLoginInput!
): LinkWalletResult!

Returns: LinkWalletResult! (LinkWalletResult)

Arguments

  • input: WalletLoginInput! (WalletLoginInput) — The wallet input containing address, message, and signature.

SDK

OperationTypeScriptGoPython
LinkWalletLinkWalletDocumentLinkWalletlink_wallet

Unlink a wallet from the current user’s account. Cannot unlink the last wallet if user has no email.

unlinkWallet(
walletId: ID!
): UnlinkWalletResult!

Returns: UnlinkWalletResult! (UnlinkWalletResult)

Arguments

  • walletId: ID! — The wallet identity ID to unlink.

SDK

OperationTypeScriptGoPython
UnlinkWalletUnlinkWalletDocumentUnlinkWalletunlink_wallet

Update the current tenant’s profile.

updateTenant(
input: UpdateTenantInput!
): UpdateTenantResult!

Returns: UpdateTenantResult! (UpdateTenantResult)

Arguments

SDK

OperationTypeScriptGoPython
UpdateTenantUpdateTenantDocumentUpdateTenantupdate_tenant

Authenticate using a signed message from an Ethereum wallet. Returns a JWT token for API access. Creates a new account if the wallet has not been seen before (auto-provisioning).

walletLogin(
input: WalletLoginInput!
): WalletLoginResult!

Returns: WalletLoginResult! (WalletLoginResult)

Arguments

  • input: WalletLoginInput! (WalletLoginInput) — The wallet input containing address, message, and signature.

SDK

OperationTypeScriptGoPython
WalletLoginWalletLoginDocumentWalletLoginwallet_login

object

Verification + certificate lifecycle for a tenant’s BYO domain. Returned by Navigator’s GetCustomDomainStatus and surfaced verbatim so the dashboard can guide the operator through the manual DNS setup.

  • domain: String! — The domain Navigator is tracking (mirrors Tenant.customDomain).
  • state: String! — pending_verification | verified | pending_alias | cert_issuing | cert_issued | cert_failed | verification_failed | tearing_down — verbatim from Navigator. pending_alias means the CNAMEs are verified and the domain waits for the tenant alias certificate. verification_failed means the CNAMEs were not verified within the fixed verification period.
  • requiredTrafficCname: String — CNAME the operator points their public hostname at so the platform’s TLS ingress receives traffic.
  • requiredAcmeChallengeCname: String — CNAME the operator points _acme-challenge.<their-domain> at so Navigator can complete DNS-01 issuance via the acme-dns.<root> delegated subzone.
  • lastVerifiedAt: Time (Time) — Wall-clock UTC of the last successful verification check (null when never).
  • certIssuedAt: Time (Time) — Wall-clock UTC of the most recent successful cert issuance (null when never).
  • certExpiresAt: Time (Time) — Wall-clock UTC of the current cert’s expiry (null when no cert).
  • lastError: String — Most recent error from verification / issuance, null when clean.

input_object

Input for linking email to a wallet-only account.

  • email: String! — Email address to link.
  • password: String! — Password to set for email-based login.

object

Successful email link response.

  • success: Boolean! — Whether the operation succeeded.
  • message: String! — Human-readable status message.
  • verificationSent: Boolean! — Whether a verification email was sent.

union

union

object

  • id: ID!
  • name: String!
  • subdomain: String — Platform-managed tenant DNS label. When set and the tenant alias has issued TLS, playback uses foghorn.<subdomain>.cdn.<root> instead of the global Foghorn host.
  • cluster: String
  • createdAt: Time! (Time)
  • customDomain: String — BYO domain configured for this tenant. Null when the tenant has not opted in.
  • customDomainStatus: CustomDomainStatus (CustomDomainStatus) — Lifecycle state for the BYO domain, surfacing the CNAMEs the operator must publish for verification + traffic plus any current error/expiry timestamps. Null when no customDomain is configured.
  • monitoringEnabled: Boolean! — Tenant-wide Skipper AI monitoring master switch. Default true.

union

input_object

Input for updating tenant settings.

  • name: String — New tenant name.
  • settings: JSON (JSON) — Custom settings JSON. Supports primaryClusterId, subdomain, customDomain, and deploymentModel.
  • customDomain: String — BYO domain. Empty string clears it; null leaves it unchanged. Navigator picks up the change on the next reconciler tick and starts/teardowns the verification + cert lifecycle accordingly.
  • monitoringEnabled: Boolean — Tenant-wide Skipper AI monitoring master switch. null leaves it unchanged.

union

object

  • id: ID!
  • email: String — User’s email address. Null for wallet-only accounts.
  • name: String
  • role: String!
  • createdAt: Time! (Time)
  • wallets: [WalletIdentity!]! (WalletIdentity) — Linked wallet addresses for this user.

object

A linked cryptocurrency wallet for authentication. Users can link multiple wallets across different chains.

  • id: ID! — Unique identifier for this wallet link.
  • address: String! — The wallet address (chain-specific format, e.g. 0x… for Ethereum).
  • createdAt: Time! (Time) — When this wallet was linked.
  • lastAuthAt: Time (Time) — When this wallet was last used for authentication.

input_object

Input for wallet-based authentication. The signature proves ownership of the wallet address.

  • address: String! — Ethereum address (0x-prefixed, 40 hex characters).
  • message: String! — Message that was signed, including timestamp and nonce for replay protection.
  • signature: String! — EIP-191 personal_sign signature (0x-prefixed, 65 bytes hex).

object

Successful wallet login response containing JWT and user info.

  • token: String! — JWT access token for API authentication.
  • user: User! (User) — The authenticated user.
  • expiresAt: Time! (Time) — When the token expires.
  • isNewAccount: Boolean! — True if this was a new account created by the login.

union