Skip to content

Schemas

Generated at build time from docs/api/openapi.yaml; the gateway uses the same schemas. Do not edit this page: change the document.

Uuid

UUIDv7 (RFC 9562), lowercase canonical form.

Type: string (uuid)

CorrelationId

W3C trace ID (16 bytes) of the request, written as a lowercase UUID; not a UUIDv7. Generated by the server.

Type: string (uuid)

Example: 4bf92f35-77b3-4da6-a3ce-929d0e0e4736.

Timestamp

RFC 3339 timestamp in UTC with millisecond precision and suffix Z.

Type: string (date-time)

Cursor

Opaque pagination cursor. Clients must not parse or build cursors.

Type: string

Example: eyJrIjoiMDE5MmY0YTAtN2IxYy03MDAwLThhMDAtMDAwMDAwMDAwMDAxIn0.

Level

Grant level. Ordered read < write < trigger.

Type: string

Values: read, write, trigger.

Capability

Capability next to the level. terminal exists only on the target host.

Type: string

Values: approve_actions, upload, export, manage, terminal.

PrincipalKind

Type: string

Values: user, agent, app.

ActorKind

Type: string

Values: user, agent, app, system.

BillingMode

Backend policy of an agent. personal runs on the subscription of exactly one person.

Type: string

Values: personal, organization.

ToolClass

Tool class of an agent runtime, ordered chat < scoped < host (07, 2.11).

Type: string

Values: chat, scoped, host.

ToolClassSet

Property Type Required Description
tool_class ToolClass yes
reason string yes Max length 500. Example: Agent now works in a project checkout.

No other properties are allowed.

BillingEvidence

How the runtime proves its actual billing mode. Never a key value or prefix (schema billing_evidence.v1).

Property Type Required Description
provider string no Pattern ^[a-z0-9][a-z0-9_.:-]*$. Example: anthropic.
key_type string yes Values: api_key, oauth, cloud, none, unknown.
method string no Pattern ^[a-z0-9][a-z0-9_.:-]*$. Example: resolved_credentials.

No other properties are allowed.

Money

Amount in micro units of the currency. Never a float.

Property Type Required Description
amount_micros integer (int64) yes Example: 1250000.
currency string yes ISO 4217 code. Example: USD.
is_estimate boolean yes True until the amount was reconciled with the provider invoice.

CspReportList

Reports of the Reporting API (https://www.w3.org/TR/reporting-1/); each item is a report object whose body is a CSP violation report (https://www.w3.org/TR/CSP3/#reporting). The server reads only type, body.effectiveDirective, body.blockedURL and body.disposition.

Type: array of JsonObject

CspReportLegacy

Legacy report of the report-uri directive (CSP Level 2). The server reads only effective-directive (else violated-directive), blocked-uri and disposition of csp-report.

Property Type Required Description
csp-report JsonObject yes

No other properties are allowed.

JsonObject

Free-form JSON object whose schema is named in the field description.

Type: object

JsonValue

Any JSON value except null. The schema of the value is defined by its key.

Type: any

JsonPatchOperation

One RFC 6902 operation, restricted to add, replace and remove.

Property Type Required Description
op string yes Values: add, replace, remove.
path string yes JSON Pointer (RFC 6901) into the run document. Example: /steps/0192f4a0-7b1c-7000-8a00-0000000000a1/status.
value JsonValue no

No other properties are allowed.

PrincipalRef

Minimal public view of a principal, embedded in other objects.

Property Type Required Description
id Uuid yes
kind PrincipalKind yes
handle string yes Example: alex.
display_name string yes Example: Alex.
avatar_file_id Uuid no

Problem

Error body after RFC 9457 (application/problem+json). type is a relative URI with full path /api/v1/problems/{code}; code repeats its last segment for convenience.

Property Type Required Description
type string (uri-reference) yes Example: /api/v1/problems/not_found.
title string yes Example: Not found.
status integer yes Example: 404.
detail string no Human-readable explanation for this occurrence. Never contains content or secrets.
instance string (uri-reference) no Request path of this occurrence without query string. Path parameters that carry a secret (the token of postIncomingWebhook) appear as their template, e.g. {token}. Example: /api/v1/threads/0192f4a0-7b1c-7000-8a00-000000000301.
code string yes Stable machine code; the known values are x-problem-codes of this schema. Clients treat unknown codes by HTTP status. Example: not_found.
correlation_id CorrelationId yes
reason string no Machine-readable cause that refines code (06 section 5): the deny reason of 07 section 4.1 for denials where it reveals nothing, or a cause named by the chapter of the operation, e.g. billing_mode_personal_not_holder, quota_exceeded. A new cause is a new reason, never a new code outside x-problem-codes. Clients treat unknown values by code.
hint string no Short instruction for the person making the change, e.g. switch the agent to organization first.
errors array of FieldError no Field errors for validation_failed.
current JsonObject no Current representation of the resource for version_conflict and base_version_conflict.
attempts_remaining integer no Present with fingerprint_mismatch; 0 means the host fell back to pairing and needs a new pairing code (24, 3.2). Minimum 0.
conflicts array of InvariantViolation no Present with i1_violation (one entry per agent, 10-backend-policy, 5.4) and i6_violation (one entry per host, 24, 7.3).

FieldError

Property Type Required Description
pointer string yes Where the violation is: a JSON Pointer (RFC 6901) to the offending member of the request body (for an unknown or missing member the pointer names that member, e.g. /name), or #path/<name>, #query/<name>, #header/<name> for parameters; empty for a rule of the whole request or the body as a whole. Example: /content_md.
code string yes Machine-readable rule the field violates. Schema validation uses required, unknown_member (W7: request schemas are closed), invalid_type, invalid_format, invalid_enum, too_long, too_short, too_large, too_small, too_many_items, too_few_items, pattern_mismatch and invalid for any other rule; use cases add limit_reached and not_enabled (06 section 5). Clients treat unknown codes like invalid. Example: too_long.
detail string no Short English explanation; never repeats the submitted value.

ProblemType

Documentation of one problem type, served at its type URI.

Property Type Required Description
code string yes Example: version_conflict.
status integer yes Example: 412.
title string yes Example: Version conflict.
description string yes
client_action string no What a client should do.

Discovery

Public instance metadata for login screens, SDKs and adapters.

Property Type Required Description
instance_id Uuid yes
setup_required boolean yes True until the first owner exists (08, 4); every other operation answers 503 setup_required until then.
api_versions array of string yes
spec_version string yes SemVer of openapi.yaml served by this instance. Example: 1.0.0.
features array of string no Feature keys this server implements beyond the base contract of its spec version.
gateway GatewayInfo yes
branding PublicBranding yes
auth_providers array of AuthProviderInfo yes
local_password_enabled boolean no
jwks_uri string (uri-reference) yes Example: /api/v1/instance/jwks.
webhook_keys_uri string (uri-reference) yes Example: /api/v1/instance/webhook-keys.
min_client_versions array of ClientVersionRequirement no

GatewayInfo

Property Type Required Description
url string (uri-reference) yes Example: /api/v1/gateway.
protocol_versions array of integer yes

ClientVersionRequirement

Property Type Required Description
platform DevicePlatform yes
min_version string yes Below this version the app does not connect (client.min_version.<platform>, 18 section 9). Example: 1.0.0.
recommended_version string no Below this version the app shows an update note (client.recommended_version.<platform>). Example: 1.2.0.

AuthProviderInfo

Property Type Required Description
id Uuid yes
kind IdentityProviderKind yes
name string yes Example: Company SSO.

PublicBranding

Property Type Required Description
product_name string yes Example: Team Chat.
accent_color string no Key of a category color of the design system (spruce, loch, heather, rowan, amber, gorse, moss), never a free color value (ADR 0044). Example: loch.
logo_url string (uri-reference) no Example: /api/v1/instance/branding/logo.

Branding

Property Type Required Description
product_name string yes Example: Team Chat.
accent_color string no Example: loch.
logo_file_id Uuid no
version integer (int64) yes

BrandingUpdate

Property Type Required Description
product_name string yes Min length 1. Example: Team Chat.
accent_color string no Example: loch.

No other properties are allowed.

Jwks

JSON Web Key Set (RFC 7517) with the public keys for access tokens, invocation tokens and terminal session tokens.

Property Type Required Description
keys array of JsonObject yes

WebhookKeys

Public keys for Standard Webhooks v1a signatures.

Property Type Required Description
keys array of WebhookKey yes

WebhookKey

Property Type Required Description
kid string yes Example: whk-2026-10.
public_key string yes Ed25519 public key with prefix whpk_, followed by the standard base64 (with padding) of its DER-encoded SubjectPublicKeyInfo (RFC 8410). Example: whpk_MCowBQYDK2VwAyEA6h3uZ0Q4i1Yv1o1Wg8bQq3c0o8bq9oQm3Kc8n3m3v0I=.
state string yes Values: next, active, retiring.
not_after Timestamp no

InstanceInfo

Instance view for an authenticated principal.

Property Type Required Description
instance_id Uuid yes
branding Branding yes
locale_default string yes Example: de.
spec_version string yes Example: 1.0.0.
features array of EvaluatedFlag yes Feature flags evaluated for the caller.
limits InstanceLimits yes
telemetry_dashboard_url string (uri) no Link of the administration to the telemetry backend, from the configuration key telemetry.dashboard_url (17 8). Present only for owners and only when the key is set, because the address names internal infrastructure; clients open it in the system browser or a new tab, never in a WebView or iframe. Example: https://telemetry.example.com/d/bothy.
stats_time_zone string no IANA name of the time zone in which the day, week and month buckets of the statistics operations start (stats.time_zone, 17 8); clients align the ranges of their statistics queries to its calendar days. Example: Europe/Berlin.

EvaluatedFlag

Property Type Required Description
key string yes Example: dm.enabled.
enabled boolean yes

InstanceLimits

Effective values of limits that clients enforce before sending.

Property Type Required Description
message_max_content_bytes integer (int64) yes Example: 262144.
message_max_attachments integer yes Example: 10.
file_max_upload_bytes integer (int64) yes Example: 104857600.
thread_title_max_chars integer yes Example: 200.
voice_max_duration_ms integer (int64) yes Longest voice message (voice.max_duration, 12). Example: 900000.

InstanceSetting

A registered key without a stored row has its default value and version 0, without updated_by and updated_at.

Property Type Required Description
key string yes Example: locale.default.
value JsonValue yes
version integer (int64) yes
updated_by Uuid no
updated_at Timestamp no

InstanceSettingPut

Property Type Required Description
value JsonValue yes

No other properties are allowed.

InstanceSettingList

Property Type Required Description
items array of InstanceSetting yes

FeatureFlag

Registration from the code plus the stored value (ADR 0064). A key without a stored row has its default and version 0; a stored key without registration is orphaned and off.

Property Type Required Description
key string yes Example: voice.enabled.
kind string no Absent for orphaned keys. Values: release, option.
description string no From the registration (English); absent for orphaned keys. Example: Voice messages with transcription.
default boolean no Registered default; absent for orphaned keys.
remove_by string no Server version by which a release flag is removed. Example: 1.4.0.
module string no Module that owns the flag. Example: files.
orphaned boolean yes
enabled boolean yes Global value; the stored value or the registered default.
rollout FlagRollout yes
version integer (int64) yes
updated_by Uuid no
updated_at Timestamp no

FlagRollout

Principals and groups for which the flag has the opposite value of enabled.

Property Type Required Description
user_ids array of Uuid no
group_ids array of Uuid no

No other properties are allowed.

FeatureFlagPut

Property Type Required Description
enabled boolean yes
rollout FlagRollout no
reason string yes Min length 1. Example: Pilot with the support team.

No other properties are allowed.

FeatureFlagList

Property Type Required Description
items array of FeatureFlag yes

SigningKeyRotate

Property Type Required Description
purpose SigningKeyPurpose yes
mode string yes scheduled announces the next key (state next); the rotation job makes it active after agent.jwks_max_age. emergency retires every key of the purpose at once and creates a new active key. Required, because the two modes have opposite effects. Values: scheduled, emergency. Example: scheduled.
reason string yes Example: Scheduled rotation.

No other properties are allowed.

SigningKeyRotation

Property Type Required Description
purpose SigningKeyPurpose yes
new_kid string yes Example: inv-2026-11.
previous_kid string yes Example: inv-2026-10.
previous_not_after Timestamp yes

IdentityProvider

Property Type Required Description
id Uuid yes
kind IdentityProviderKind yes
name string yes Example: Company SSO.
config JsonObject yes Schema identity_provider.<kind>.v1. Secrets appear only as secret_ref names.
enabled boolean yes
allow_provisioning boolean yes
updated_at Timestamp no

IdentityProviderCreate

Property Type Required Description
kind IdentityProviderKind yes
name string yes Example: Company SSO.
config JsonObject yes
enabled boolean no
allow_provisioning boolean no

No other properties are allowed.

IdentityProviderUpdate

Property Type Required Description
name string no
config JsonObject no
enabled boolean no
allow_provisioning boolean no

No other properties are allowed.

IdentityProviderList

Property Type Required Description
items array of IdentityProvider yes

DevicePlatform

Type: string

Values: ios, android, macos, windows, web, cli.

DeviceRegistration

Device and device keys sent with every login completion. The DPoP proof of the request must be signed with the dpop key (public_jwk); step_up_key is the second key with user verification (08, 6.1), absent where no secure key store exists.

Property Type Required Description
device_id Uuid yes
name string yes Example: Alex iPhone.
platform DevicePlatform yes
app_version string no Example: 1.4.0.
public_jwk JsonObject yes Public JWK (RFC 7517) of the device key, without private members.
alg string yes Values: ES256, EdDSA.
attestation JsonObject no Platform attestation, if the platform provides one.
step_up_key DeviceKeyRegistration no

No other properties are allowed.

DeviceKeyRegistration

Property Type Required Description
public_jwk JsonObject yes Public JWK (RFC 7517) without private members.
alg string yes Values: ES256, EdDSA.
attestation JsonObject no

No other properties are allowed.

PairingBeginRequest

Property Type Required Description
device DeviceRegistration yes

No other properties are allowed.

PairingStarted

Property Type Required Description
pairing_id Uuid yes
pairing_code string yes Shown on the new device only; auth.pairing_code_chars characters (Crockford Base32). Example: 7KQ2-M9XD.
expires_at Timestamp yes

DeviceApprove

Property Type Required Description
verification_code string yes Code shown on the pending device, typed by the approving person. Pattern ^[0-9]+$. Example: 042517.

No other properties are allowed.

PairingApprove

Property Type Required Description
pairing_code string yes Example: 7KQ2-M9XD.

No other properties are allowed.

PairingCompleteRequest

Property Type Required Description
pairing_id Uuid yes

No other properties are allowed.

PairingStatus

Property Type Required Description
pairing_id Uuid yes
status string yes Not yet approved; ask again after a short wait. Values: requested.
expires_at Timestamp yes

OidcBeginRequest

Property Type Required Description
client LoginClient no
provider_id Uuid yes
app_redirect_uri string yes Redirect target of the app (loopback or claimed scheme, RFC 8252). Must match the allow-list of the provider. Example: com.example.teamchat:/login.
client_challenge string yes Base64url SHA-256 of a client verifier, binds the later login_code to this app instance. Example: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM.
enrollment_code string no Optional enrollment code (purpose first_login, recovery or identity_link). Checked at begin, consumed at complete; an unknown subject is then linked to the person of the code (08, 3.1). Example: en_EXAMPLE.

No other properties are allowed.

OidcBeginResponse

Property Type Required Description
login_attempt_id Uuid yes
authorization_url string (uri) yes Example: https://login.example.com/authorize?client_id=chat&state=s1.
expires_at Timestamp yes

OidcCompleteRequest

Property Type Required Description
client LoginClient no
login_code string yes One-time code the server appended to app_redirect_uri after the provider callback. Example: lc_8f2d1c.
client_verifier string yes Example: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk.
device DeviceRegistration no

No other properties are allowed.

TrustedHeaderLoginRequest

Property Type Required Description
client LoginClient no
device DeviceRegistration no
enrollment_code string no Optional enrollment code; links an unknown header login to the person of the code (08, 3.1). Example: en_EXAMPLE.

No other properties are allowed.

EnrollRedeemRequest

Redeems an enrollment code with device keys only; the redeeming device becomes active (08, 3.2).

Property Type Required Description
enrollment_code string yes Example: en_EXAMPLE.
device DeviceRegistration yes

No other properties are allowed.

ExtensionSessionCreate

Child session of the calling app session for an app extension with its own refresh family (08, 7.4).

Property Type Required Description
client_component string yes Values: share_ext.

No other properties are allowed.

WebAuthnChallenge

Property Type Required Description
challenge_id Uuid yes ID of the stored ceremony challenge; valid once until expires_at.
public_key JsonObject yes WebAuthn PublicKeyCredentialRequestOptions or PublicKeyCredentialCreationOptions in JSON form.
expires_at Timestamp yes

PasskeyLoginBeginRequest

Property Type Required Description
login_name string no Optional; without it the server offers discoverable credentials. Example: alex.

No other properties are allowed.

PasskeyLoginCompleteRequest

Property Type Required Description
client LoginClient no
challenge_id Uuid yes
credential JsonObject yes WebAuthn PublicKeyCredential in JSON form.
device DeviceRegistration no

No other properties are allowed.

EnrollBeginRequest

Property Type Required Description
enrollment_code string yes Example: en_4KX9-2MQA.

No other properties are allowed.

EnrollCompleteRequest

Property Type Required Description
challenge_id Uuid yes
credential JsonObject yes
passkey_name string yes Example: Laptop.
device DeviceRegistration yes

No other properties are allowed.

PasswordLoginRequest

Property Type Required Description
client LoginClient no
login_name string yes Example: alex.
password string (password) yes
totp_code string yes Example: 492039.
device DeviceRegistration no

No other properties are allowed.

TokenRefreshRequest

Property Type Required Description
refresh_token string yes Example: rt_q2Z0.

No other properties are allowed.

TokenResponse

Token pair after login or refresh. token_type is always DPoP (RFC 9449).

Property Type Required Description
access_token string yes Example: eyJhbGciOiJFZERTQSJ9.e30.sig.
token_type string yes Values: DPoP.
expires_in integer yes Seconds until the access token expires. Example: 900.
refresh_token string yes Example: rt_q2Z0.
refresh_expires_at Timestamp yes
session Session yes
device Device yes

LoginClient

console: no device or DPoP; cookie, no token (08, 7.5).

Type: string

Values: app, console.

ConsoleSession

Property Type Required Description
user_id Uuid yes
display_name string yes
expires_at Timestamp yes
idle_timeout_seconds integer yes
step_up_at Timestamp no
step_up_method string no Values: passkey, password_totp, oidc_reauth.
step_up_valid_until Timestamp no
step_up_methods_available array of string yes Values: passkey, oidc_reauth, password_totp.
view_as object no
view_as.user_id Uuid yes
view_as.display_name string yes
view_as.started_at Timestamp yes
view_as.ends_at Timestamp yes

StepUpPasswordRequest

Property Type Required Description
challenge_id Uuid yes
password string (password) yes
totp_code string yes

No other properties are allowed.

StepUpOidcBeginRequest

Property Type Required Description
challenge_id Uuid yes
provider_id Uuid yes
app_redirect_uri string yes
client_challenge string yes

No other properties are allowed.

StepUpChallenge

Property Type Required Description
challenge_id Uuid yes
challenge string yes Base64url random value to sign. Single use, valid auth.step_up_challenge_ttl. Clients show their own localized prompt text. Example: Zm9vYmFyYmF6.
passkey_options JsonObject no WebAuthn request options when the user has passkeys; their challenge is this step-up challenge.
expires_at Timestamp yes

StepUpPasskeyRequest

Property Type Required Description
challenge_id Uuid yes
credential JsonObject yes

No other properties are allowed.

StepUpDeviceKeyRequest

Property Type Required Description
challenge_id Uuid yes
signature string yes Compact JWS signed by the active step_up key of the session's device after user verification on the device. Header alg only (no jwk, jku, x5u, x5c, crit); payload {"challenge": <challenge>, "sid": <session id>, "iat": <NumericDate>} (08, 6.2). Example: eyJhbGciOiJFUzI1NiJ9.EXAMPLEpayload.EXAMPLEsignature.

No other properties are allowed.

StepUpResult

Property Type Required Description
step_up_at Timestamp yes
valid_until Timestamp yes

Me

The calling principal.

Property Type Required Description
principal PrincipalRef yes
is_owner boolean yes
email string (email) no Example: alex@example.com.
locale string no Example: de.
time_zone string no Example: Europe/Berlin.
permission_version integer (int64) yes
session_id Uuid no
device_id Uuid no
step_up_valid_until Timestamp no

User

Directory entry of a person.

Property Type Required Description
id Uuid yes
handle string yes Example: sam.
display_name string yes Example: Sam.
avatar_file_id Uuid no
status UserStatus yes Example: active.
is_owner boolean yes
locale string no Example: en.
time_zone string no Example: Europe/Berlin.
created_at Timestamp yes

UserCreate

Property Type Required Description
handle string yes Pattern ^[a-z0-9][a-z0-9._-]*$. Example: robin.
display_name string yes Example: Robin.
email string (email) no Example: robin@example.com.
locale string no Example: de.
time_zone string no Example: Europe/Berlin.
local_account boolean no Create an enrollment code for the local identity provider.

No other properties are allowed.

UserCreated

Property Type Required Description
user User yes
enrollment EnrollmentCode no

UserUpdate

Property Type Required Description
display_name string no
email string (email) no
locale string no
time_zone string no

No other properties are allowed.

ProfileUpdate

Property Type Required Description
display_name string no Example: Alex.
locale string no Example: de.
time_zone string no Example: Europe/Berlin.

No other properties are allowed.

EnrollmentCode

One-time code shown once to the owner, handed to the person out of band. A replay of the creating request with the same Idempotency-Key does not repeat it (409 conflict, reason: one_time_secret).

Property Type Required Description
code string yes Example: en_4KX9-2MQA.
purpose string yes Values: first_login, recovery, identity_link.
expires_at Timestamp yes

ReasonBody

Property Type Required Description
reason string yes Min length 1. Example: Left the team.

No other properties are allowed.

ResolveI1

Guided flow (05 rule 1.6, 10 section 11): switch these agents to organization first, in the same transaction as the change.

Property Type Required Description
switch_to_organization array of Uuid yes Min items 1; unique items True.
reason string yes Reason of the switch, in the audit entry of every switched agent; at most audit.reason_max_chars characters, no control or bidi characters. Min length 1. Example: Sam triggers the assistant too.

No other properties are allowed.

OwnerAdd

Property Type Required Description
user_id Uuid yes
reason string yes Example: Second owner as deputy.
resolve_i1 ResolveI1 no

No other properties are allowed.

Owner

Property Type Required Description
user PrincipalRef yes
granted_by Uuid no
granted_at Timestamp yes
reason string yes

OwnerList

Property Type Required Description
items array of Owner yes

Identity

Property Type Required Description
id Uuid yes
provider_id Uuid yes
provider_kind IdentityProviderKind yes
subject string yes Example: alex.
issuer string no Example: https://login.example.com.
email_at_link string (email) no
linked_at Timestamp yes
last_login_at Timestamp no

Passkey

Property Type Required Description
id Uuid yes
name string yes Example: Laptop.
aaguid Uuid no
backup_eligible boolean yes
created_at Timestamp yes
last_used_at Timestamp no

CredentialOverview

Property Type Required Description
identities array of Identity yes
passkeys array of Passkey yes
local_password_set boolean yes
totp_enrolled boolean yes

IdentityLinkBegin

Property Type Required Description
provider_id Uuid yes
app_redirect_uri string yes Example: com.example.teamchat:/link.
client_challenge string yes Example: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM.

No other properties are allowed.

IdentityLinkComplete

Property Type Required Description
login_code string yes Example: lc_8f2d1c.
client_verifier string yes Example: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk.

No other properties are allowed.

PasskeyRegisterComplete

Property Type Required Description
challenge_id Uuid yes
credential JsonObject yes
name string yes Example: Laptop.

No other properties are allowed.

LocalCredentialSet

Sets or replaces the local password, starts a TOTP enrollment (totp_enroll, the response carries the new secret once) or confirms it (totp_code). At least one member; the first call sets password. The password path counts as established once TOTP is confirmed (08, 2.5).

Property Type Required Description
password string (password) no
totp_enroll boolean no
totp_code string no Current code of the enrolled TOTP secret; confirms the enrollment. Pattern ^[0-9]{6}$. Example: 492039.

No other properties are allowed.

LocalCredentialResult

Property Type Required Description
password_set boolean yes
totp_enabled boolean yes True once a TOTP enrollment is confirmed.
totp_secret_uri string no otpauth URI, returned once when totp_enroll was set. Example: otpauth://totp/Team%20Chat:alex?secret=JBSWY3DPEHPK3PXP.

Device

Property Type Required Description
id Uuid yes
user_id Uuid yes
name string yes Example: Alex iPhone.
platform DevicePlatform yes
state string yes Values: pending, active, revoked. Example: active.
app_version string no Example: 1.4.0.
key_thumbprint string no RFC 7638 thumbprint of the active dpop device key (cnf.jkt). Example: 0ZcOCORZNYy-DWpqq30jZyJGHTN0d2HglBV3uiguA4I.
step_up_key_thumbprint string no RFC 7638 thumbprint of the active step_up device key, if the device has one.
verification_code string no Only in responses to the pending device itself (TokenResponse, getDevice, listMyDevices for its own entry); never shown to other devices or owners (08, 5.2). Pattern ^[0-9]+$.
revoke_reason string no Values: revoked_by_self, revoked_by_owner, user_disabled, inactive, verification_failed, pending_expired, pairing_expired.
approved_at Timestamp no
revoked_at Timestamp no
created_at Timestamp yes
last_seen_at Timestamp no
push_registrations array of PushRegistration no Every push registration of the device, active and disabled, ascending by id, never with a token (13, 13). Absent when the device has none.

Session

Property Type Required Description
id Uuid yes
user_id Uuid yes
device_id Uuid yes
auth_method string yes Values: oidc, trusted_header, passkey, password_totp, enrollment_code, device_pairing.
client_component string no Values: app, share_ext, console.
created_at Timestamp yes
expires_at Timestamp yes
step_up_at Timestamp no
step_up_method string no Values: passkey, device_key, password_totp, oidc_reauth.
last_seen_at Timestamp no
current boolean no True for the session of this request. Set only in REST responses.

ApiToken

Property Type Required Description
id Uuid yes
principal_id Uuid yes
name string yes Example: Adapter production.
token_prefix string yes bothy_<kind>_ plus the first characters of the random part (03 api_tokens). Example: bothy_agt_EXAMPL.
scopes array of AppScope yes
dpop_jkt string no
expires_at Timestamp no
created_at Timestamp yes
last_used_at Timestamp no
revoked_at Timestamp no

ApiTokenCreate

Property Type Required Description
name string yes Example: Adapter production.
scopes array of AppScope no Only for app tokens, a subset of the granted scopes of the installation; absent or empty takes all granted scopes at this moment. A scope granted later needs a new token. Agent tokens (all agent scopes implicitly) and personal tokens (the grants of the person) carry none.
dpop_jkt string no RFC 7638 thumbprint (43 base64url characters) of the key the token is bound to; requests must then use DPoP. Required for the kinds in auth.dpop_required_for.
expires_at Timestamp yes Required; at most auth.api_token_max_ttl (agents, apps) or auth.personal_token_max_ttl (personal) ahead.

No other properties are allowed.

ApiTokenCreated

Property Type Required Description
token ApiToken yes
secret string yes Full token value bothy_<kind>_<random>_<checksum> (prefix for secret scanners). Shown exactly once. Example: bothy_agt_EXAMPLEOnlyNotARealTokenForTheChecksumTests_3NymP3.

AppScope

Type: string

Values: messages:read, messages:write, files:read, files:write, commands:write, components:write, users:read, events:subscribe, costs:reconcile.

Group

Property Type Required Description
id Uuid yes
name string yes Example: Support.
description string yes Example: Support team.
source GroupSource yes
provider_id Uuid no OIDC provider whose group claim manages the members; set exactly for source = oidc_claim.
external_ref string no Claim value of the provider; set exactly for source = oidc_claim.
member_count integer yes
created_at Timestamp yes

GroupCreate

Property Type Required Description
name string yes Example: Support.
description string no
source GroupSource no
provider_id Uuid no Required with source = oidc_claim; the OIDC provider whose claim manages the members.
external_ref string no Required with source = oidc_claim; the claim value.

No other properties are allowed.

GroupUpdate

Property Type Required Description
name string no Example: Support.
description string no

No other properties are allowed.

GroupMember

Property Type Required Description
user PrincipalRef yes
added_by Uuid no
added_at Timestamp yes
expires_at Timestamp no

GroupMemberAdd

Property Type Required Description
user_id Uuid yes
expires_at Timestamp no
resolve_i1 ResolveI1 no

No other properties are allowed.

TargetKind

host is a connected host for the terminal; it has no level and only the capability terminal (24, 8.1).

Type: string

Values: instance, space, channel, host.

GrantSubjectKind

Type: string

Values: user, group, agent, app.

Grant

Property Type Required Description
id Uuid yes
subject_kind GrantSubjectKind yes
subject_id Uuid yes Principal ID for user, agent, app; group ID for group.
target_kind TargetKind yes
target_id Uuid no Absent for instance.
level Level no Absent exactly for target_kind = host.
capabilities array of Capability yes
expires_at Timestamp no
reason string yes Example: Support team works in this space.
granted_by Uuid yes
granted_at Timestamp yes
revoked_at Timestamp no
revoked_by Uuid no
revoke_reason string no

GrantCreate

level is required for every target except host, where it must be absent and capabilities must be exactly [terminal] (07, 2.12).

Property Type Required Description
subject_kind GrantSubjectKind yes
subject_id Uuid yes
target_kind TargetKind yes
target_id Uuid no
level Level no
capabilities array of Capability no
expires_at Timestamp no
reason string yes Example: Support team works in this space.
resolve_i1 ResolveI1 no

No other properties are allowed.

GrantPreview

Effect of a grant before it is created. No state changes (07, 9.3).

Property Type Required Description
allowed boolean yes False if a delegation limit of the caller (denial_reason) or an invariant would reject the grant.
denial_reason string no Reason code of 07 section 4.1 when a delegation limit rejects the grant, for example delegation_exceeds_own_level. Example: delegation_exceeds_own_level.
effects array of AccessEffect yes
invariant_violations array of InvariantViolation yes
hints array of PreviewHint yes
text string yes Plain text from templates in text_locale, lines separated by a line feed, no trailing line feed.
text_locale string yes Values: de, en.

PreviewHint

terminal_not_effective (grant on a host, 07, 2.12 point 4) says that SR10 or SR12 keep the grant from taking effect: with principal_id for a user subject, with group_id and count (members in effect it does not reach, absent when 0) for a group subject.

Property Type Required Description
code string yes Values: read_horizon, trigger_blocked_tool_class, group_reach, expiry_missing, terminal_not_effective.
agent_id Uuid no
principal_id Uuid no
group_id Uuid no
space_id Uuid no
channel_id Uuid no
count integer (int64) no

AccessEffect

Property Type Required Description
principal PrincipalRef yes
target_kind TargetKind yes
target_id Uuid no
before_level LevelOrNone yes
after_level LevelOrNone yes
capabilities_added array of Capability yes

InvariantViolation

i1_violation names agent_id; i6_violation names host_id.

Property Type Required Description
code string yes Example: i1_violation.
agent_id Uuid no
host_id Uuid no
credential_holder_id Uuid no Credential holder of the agent (i1_violation) or of the personal LLM login of the host (i6_violation); absent if the agent has none.
principal_ids array of Uuid yes With i1_violation the principals that would gain trigger next to the credential holder; with i6_violation the people other than the holder that a valid grant on the host names, directly or as members in effect of a group grant (empty for a group without members).
organization_ready boolean no True when the agent reports organization among its billing_modes_supported.
hint string no Example: Switch the agent to organization first.

AccessExplanation

Property Type Required Description
target_kind AccessTargetKind yes
target_id Uuid yes
entries array of AccessEntry yes

AccessEntry

Property Type Required Description
principal PrincipalRef yes
level LevelOrNone yes none only for entries whose sources are all via_agent.
inactive boolean no True when the principal is not active; the level is what its grants would give (07, 9.1).
capabilities array of Capability yes
sources array of AccessSource yes

AccessSource

Property Type Required Description
kind string yes Values: owner, direct, group, inherited, dm_participant, operator, via_agent, guard_blocked.
grant_id Uuid no
group_id Uuid no
from_target_kind TargetKind no
from_target_id Uuid no
agent_id Uuid no Agent of an operator, via_agent or guard_blocked source.
rule string no Guard rule of a guard_blocked source. Values: sr2, sr3.
expires_at Timestamp no Expiry of the grant.
membership_expires_at Timestamp no
reason string no Reason of the grant.

AccessTarget

Property Type Required Description
kind AccessTargetKind yes
id Uuid yes
level Level no
previous_level Level no
capabilities array of Capability no

Space

Property Type Required Description
id Uuid yes
name string yes Example: Support.
icon string no Glyph name from the list space-icons of the design tokens (kernel/designkeys). No emoji. Example: headset.
color string no Key of a category color of the design system, never a hex value. Example: moss.
sort_key string yes Fractional index, compared bytewise. Example: a0.
default_operator_agent_id Uuid no
archived_at Timestamp no
version integer (int64) yes
created_at Timestamp yes

SpaceCreate

Property Type Required Description
name string yes At most space.name_max_chars characters. Min length 1. Example: Research.
icon string no Glyph name from the list space-icons of the design tokens. Example: flask.
color string no Key of a category color of the design system, never a hex value. Example: heather.
after_space_id Uuid no Insert after this space; absent inserts at the end.

No other properties are allowed.

SpaceUpdate

Changes only the fields sent; icon and color cannot be cleared.

Property Type Required Description
name string no At most space.name_max_chars characters. Min length 1. Example: Research.
icon string no Glyph name from the list space-icons of the design tokens.
color string no Key of a category colour of the design system, never a hex value.

No other properties are allowed.

MovePosition

New position relative to siblings. Exactly one of both fields; none moves to the start.

Property Type Required Description
after_id Uuid no
before_id Uuid no

No other properties are allowed.

OperatorSet

Operator assignment. inherit is only valid for channels.

Property Type Required Description
mode OperatorMode yes
agent_id Uuid no Required for mode agent.
reason string yes Example: Support agent takes over.
resolve_i1 ResolveI1 no

No other properties are allowed.

SpaceView

Property Type Required Description
space Space yes
level Level yes Effective level on the space. A space visible only through one of its channels reports read and no capabilities.
capabilities array of Capability yes

ChannelKind

Type: string

Values: text, forum, dm.

ChannelOperator

Property Type Required Description
mode OperatorMode yes
agent_id Uuid no
effective_agent_id Uuid no Operator after resolving inheritance; absent means no operator.

Channel

Property Type Required Description
id Uuid yes
space_id Uuid no Absent for dm.
kind ChannelKind yes
name string yes Example: tickets.
topic string yes Example: Customer tickets.
sort_key string yes Example: a1.
operator ChannelOperator yes
forum_default_sort ForumSort no
default_notification_level NotificationLevel no Default for people without an own setting (13, 3.1); absent means none.
read_only boolean yes Write-protected for every principal including owners; only a running import writes (05, rule 1.8).
main_thread_id Uuid no Thread with kind = main of text and DM channels.
dm_participant_ids array of Uuid no
archived_at Timestamp no
version integer (int64) yes
settings_version integer (int64) yes
created_at Timestamp yes

ChannelCreate

Property Type Required Description
kind string yes Values: text, forum.
name string yes Min length 1. Example: tickets.
topic string no At most channel.topic_max_chars characters, no control or bidi characters.
forum_default_sort ForumSort no
after_channel_id Uuid no

No other properties are allowed.

ChannelUpdate

Property Type Required Description
name string no Min length 1. Example: tickets.
topic string no At most channel.topic_max_chars characters, no control or bidi characters.
forum_default_sort ForumSort no
default_notification_level NotificationLevel no
clear_default_notification_level boolean no Removes the channel default; there is no JSON null (R-API-03).

No other properties are allowed.

ChannelReadOnlySet

Property Type Required Description
read_only boolean yes
reason string yes Max length 500. Example: Channel is mirrored from the old system.

No other properties are allowed.

ChannelView

Property Type Required Description
channel Channel yes
level Level yes
capabilities array of Capability yes

ChannelBehavior

Behavior of the operator in a channel. Readable only with manage; never in events.

Property Type Required Description
require_mention boolean yes
thread_require_mention boolean yes
free_response boolean yes
auto_thread boolean yes
allow_mentioned_agents boolean yes
history_backfill_limit integer yes Example: 20.
prompt string yes Example: Answer support tickets politely. Ask before closing a ticket..
skills array of string yes Ordered skill references the adapter understands; the server does not interpret them.
project_binding ProjectBinding no
settings_version integer (int64) yes

ChannelBehaviorPut

Property Type Required Description
require_mention boolean yes
thread_require_mention boolean yes
free_response boolean yes
auto_thread boolean yes
allow_mentioned_agents boolean yes
history_backfill_limit integer yes Minimum 0. Example: 20.
prompt string yes Example: Answer support tickets politely..
skills array of string yes

No other properties are allowed.

ProjectBinding

Property Type Required Description
workspace_ref string yes Opaque reference the runner resolves; never a server path. Example: website.
repository_url string no Display only; the server never fetches this URL. Example: https://git.example.com/team/website.
default_branch string no Example: main.
runner_config ProjectRunnerConfig yes
ready boolean yes
version integer (int64) yes

ProjectBindingPut

Property Type Required Description
workspace_ref string yes Example: website.
repository_url string no Example: https://git.example.com/team/website.
default_branch string no Example: main.
runner_config ProjectRunnerConfig no
reason string yes Min length 1. Example: Website project moves to this forum.

No other properties are allowed.

ProjectRunnerConfig

Schema project_runner_config.v1. No secrets.

Property Type Required Description
model string no Min length 1.
allowed_tools array of string no Unique items True.

No other properties are allowed.

AgentChannelConfig

Configuration an operator agent loads for a channel it serves.

Property Type Required Description
channel_id Uuid yes
space_id Uuid no
behavior ChannelBehavior yes

DmCreate

Property Type Required Description
participant_ids array of Uuid yes Other people in the conversation; the caller is added. Min items 1.

No other properties are allowed.

SidebarState

Property Type Required Description
space_id Uuid yes
collapsed boolean yes
sort_key string no Personal order; absent uses the global order. Example: a0V.
version integer (int64) yes
updated_by_device_id Uuid no

SidebarStatePut

Property Type Required Description
collapsed boolean yes
sort_key string no
use_global_order boolean no True removes the personal order. Replaces sending null.

No other properties are allowed.

SidebarStateList

Property Type Required Description
items array of SidebarState yes

ForumTag

Property Type Required Description
id Uuid yes
channel_id Uuid yes
name string yes Example: bug.
color string no Key of a category color of the design system, never a hex value. Example: rowan.
sort_key string yes Example: a0.
restricted boolean yes

ForumTagCreate

Property Type Required Description
name string yes Example: bug.
color string no Key of a category color of the design system, never a hex value. Example: rowan.
restricted boolean no
after_tag_id Uuid no

No other properties are allowed.

ForumTagUpdate

Property Type Required Description
name string no Example: bug.
color string no Key of a category color of the design system, never a hex value.
clear_color boolean no Removes the color; not together with color. There is no JSON null (R-API-03).
restricted boolean no

No other properties are allowed.

ForumTagList

Property Type Required Description
items array of ForumTag yes

Thread

Property Type Required Description
id Uuid yes
channel_id Uuid yes
kind string yes Values: main, thread.
parent_message_id Uuid no
title string yes Example: Invoice export fails.
title_source string yes Values: auto, manual.
state ThreadState yes
closed_at Timestamp no
closed_by Uuid no
operator_agent_id Uuid no Fixed operator of a thread of kind thread (R-DM-12). Absent for the main thread (kind = main, R-DM-21) and for threads without operator; clients then use Channel.operator.effective_agent_id.
billing_mode BillingMode no Current policy of operator_agent_id, for the header badge; absent exactly when operator_agent_id is absent. Changes arrive with agent.updated.
last_message_seq integer (int64) yes
unread_floor_seq integer (int64) no Messages up to this thread_seq never count as unread (import); absent means 0.
last_activity_at Timestamp yes
message_count integer yes
created_by Uuid yes
created_at Timestamp yes
moved_at Timestamp no
version integer (int64) yes
tag_ids array of Uuid yes

ThreadCreate

Creates a forum post (with title and first_message) or a thread from a message of the main thread (with parent_message_id, optional first_message). first_message.run_id is never valid, because a new thread has no run: 400 validation_failed with pointer /first_message/run_id and errors[].code run_mismatch.

Property Type Required Description
title string no Example: Invoice export fails.
parent_message_id Uuid no
tag_ids array of Uuid no Forum posts only; at most thread.max_tags. Restricted tags need manage, as with setThreadTags.
first_message MessageCreate no

No other properties are allowed.

ThreadCreated

Property Type Required Description
thread Thread yes
first_message Message no

ThreadTitlePut

Property Type Required Description
title string yes Min length 1. Example: Invoice export fails for March.

No other properties are allowed.

ThreadMove

Property Type Required Description
target_channel_id Uuid yes
reason string yes Example: Belongs to billing.

No other properties are allowed.

ThreadTagsPut

Property Type Required Description
tag_ids array of Uuid yes Complete set, at most thread.max_tags, without duplicates.

No other properties are allowed.

AgentSession

Property Type Required Description
id Uuid yes
thread_id Uuid yes
agent_id Uuid yes
external_session_ref string no Example: sess-7f3a.
is_current boolean yes
started boolean yes
model string no Example: model-large.
cost Money yes
created_at Timestamp yes
ended_at Timestamp no
end_reason string no Values: reset, rebind, import, agent_changed.
cost_baseline_micros integer (int64) no The cumulative amount of the external session before it was bound to this row (agent_sessions.cost_baseline_micros, 22 9 step 7), in micro units of currency; present only when above 0. An adapter whose runtime reports cumulative session values books per run only the part above it (09, 18.7; RK-75). Example: 1250000.
currency string no ISO 4217 code of cost_baseline_micros (agent_sessions.currency); present exactly when cost_baseline_micros is. Example: USD.
version integer (int64) yes

AgentSessionList

Property Type Required Description
items array of AgentSession yes

AgentSessionBind

Property Type Required Description
external_session_ref string yes Example: sess-7f3a.
expected_current_session_id Uuid no Current session of the thread as the client saw it; absent when the thread has none. A mismatch answers 409 conflict with reason session_changed (09, 9.4).
take_over boolean no Required when the session is current in another thread; otherwise 409 conflict with reason session_bound_elsewhere. Default: false.

No other properties are allowed.

AgentSessionReport

Property Type Required Description
external_session_ref string yes The reference the runtime actually uses; a different one replaces the stored reference of the session (09, 9.5 item 3). At most agent.session_ref_max_bytes bytes of display text. Example: sess-7f3a.
model string no The pattern of default_model (09, 2.2), at most agent.session_ref_max_bytes bytes. Example: model-large.
started boolean no true once the runtime confirmed the external session (09, 9.1); started only moves forward, false never resets it.
bind_failed string no The bound session no longer exists in the runtime and the adapter started a new one (09, 9.5 item 4); only for a started session, otherwise 409 conflict with reason session_not_bound. Values: session_missing.

No other properties are allowed.

MessageKind

Type: string

Values: text, voice, run, card, system.

MessageOrigin

Type: string

Values: human, agent, app, import, system.

TriggerState

Type: string

Values: received, queued, working, done, failed, cancelled, followup_delivered.

Message

Property Type Required Description
id Uuid yes
thread_id Uuid yes
channel_id Uuid yes
thread_seq integer (int64) yes Example: 42.
author PrincipalRef yes
client_msg_id Uuid yes
origin MessageOrigin yes
kind MessageKind yes
system_code string no Set exactly for kind = system; clients render the localized line from it and author. content_md is empty then. agent_session.resume_failed is written once when the runtime no longer knew the bound session and the agent started a new one (09 9.5, 03 R-DM-42); its author is the run's agent. A system line never reopens a done thread. Values: thread.reopened, agent_session.resume_failed.
content_md string yes Markdown. In lists longer contents are cut at message.list_content_max_bytes with content_truncated. Example: @support-agent the invoice export fails since this morning..
content_format integer yes Version of the Markdown dialect; 1 is CommonMark 0.31.2 without raw HTML, with mention tokens (03 messages). Example: 1.
content_truncated boolean no Set when content_md was cut (events above sync.event_payload_max_bytes, lists above message.list_content_max_bytes); getMessage returns the full content.
reply_to_message_id Uuid no
run_id Uuid no Set only for kind = run: the run whose live box this anchor holds.
trigger_state TriggerState no
trigger_state_at Timestamp no
trigger_state_reason string no Reason when trigger_state is failed or cancelled, e.g. billing_mode_personal_not_holder, run_active_other_agent, user_cancelled.
silent boolean yes
attachments array of Attachment yes Attachments in position order (the order of attachment_file_ids at sending); empty for a message without attachments and for a deleted message.
mention_ids array of Uuid yes Principals resolved from the mention tokens of content_md, sorted. Clients render a token as a mention only for these.
reactions array of ReactionSummary yes
my_reactions array of string no Emoji the caller reacted with. Only in REST responses, never in events.
pinned boolean yes
components array of Component yes
version integer (int64) yes
edited_at Timestamp no
deleted_at Timestamp no
created_at Timestamp yes

MessageCreate

Property Type Required Description
client_msg_id Uuid yes UUIDv7 created by the client before the first attempt; unique per author forever.
kind string no voice is a voice message (12, 8.1): exactly one entry in attachment_file_ids (none gives 400 validation_failed with errors[].code required, more than one limit_reached, pointer /attachment_file_ids), an MP4 audio file (audio/mp4, .m4a) for every author and also MP3 (audio/mpeg) for agents, and the file must be ready. Another format, an MP4 with a video track or without a duration in mvhd give 400 validation_failed with errors[].code voice_format_unsupported, a duration above voice.max_duration voice_too_long, both with the pointer of the entry (/attachment_file_ids/0); a file whose upload or scan has not ended gives 409 file_not_ready, a blocked or failed file 409 file_blocked. content_md may be empty. Values: text, voice, card.
content_md string no Empty or white space only content is allowed only when attachment_file_ids lists at least one file (a picture without caption); otherwise 400 validation_failed with errors[].code empty. Example: @support-agent the invoice export fails since this morning..
reply_to_message_id Uuid no
attachment_file_ids array of Uuid no Own files uploaded for the channel of this message with a completed upload session, in the order they appear in the message; at most message.max_attachments. Needs the right upload in addition to write (403 forbidden with reason capability_missing). A file that is not attachable (not the caller's, another channel, upload not completed or failed, deleted, already attached, or listed twice) answers 409 conflict with reason file_not_attachable and the pointer of the entry in detail; more than message.max_attachments answer 400 validation_failed with errors[].code limit_reached. Files whose scan has not ended are attachable.
mention_ids array of Uuid no Optional check. The server resolves mentions from content_md (03 messages, content format; 07 section 4.6); when present, the set must equal the resolved set, else 400 validation_failed with code mention_mismatch.
silent boolean no
clear_draft boolean no
run_id Uuid no Agents only; the run this message belongs to. It must name an active run (queued, running, waiting_input) of the calling agent in this thread. Never stored on the message (Message.run_id stays absent). A person or app, an unknown run, a run of another thread or of another agent answer alike 400 validation_failed with errors[].code run_mismatch; an ended own run answers 409 conflict with reason run_not_active. With kind = card it also binds the components of the card to this run (Component.run_id, 09 11.4) and is part of the canonical request of client_msg_id (bothy-msg-v2); for every other kind it is not (09 4.7).
components array of ComponentCreate no Requires kind = card, and kind = card requires at least one component; at most component.max_per_message. Agents and apps send cards (people get invalid). An app needs write and messages:write as for every message; without components:write its components stay inactive, and a use answers 409 component_used. The whole message.created payload of the card must fit sync.event_payload_max_bytes, else too_long on /components. An agent whose owner switched supports_components off gets 403 feature_disabled (09, 2.2 and 11.1); the switch does not apply to apps.

No other properties are allowed.

MessageUpdate

The server resolves the mentions of the resulting content again; mention_ids is an optional check as in MessageCreate.

Property Type Required Description
content_md string no Example: @support-agent the invoice export fails since 08:00..
mention_ids array of Uuid no

No other properties are allowed.

MessagePage

Messages in ascending thread_seq. Tombstones are included.

Property Type Required Description
items array of Message yes
has_more_before boolean yes
has_more_after boolean yes

MessageRevision

Property Type Required Description
revision integer yes Example: 1.
content_md string yes Example: @support-agent the invoice export fails..
edited_by Uuid yes
created_at Timestamp yes

MessageRevisionList

Property Type Required Description
items array of MessageRevision yes

ReactionSummary

Property Type Required Description
emoji string yes Exactly one Unicode grapheme cluster. Example: 👍.
count integer yes Example: 3.

Reaction

Property Type Required Description
emoji string yes Example: 👍.
principal PrincipalRef yes
created_at Timestamp yes

Pin

Property Type Required Description
message_id Uuid yes
thread_id Uuid yes
pinned_by Uuid yes
pinned_at Timestamp yes

MentionItem

Property Type Required Description
message Message yes
created_at Timestamp yes

Template

Property Type Required Description
id Uuid yes
scope string yes Values: personal, channel.
channel_id Uuid no
name string yes Example: Escalation.
content_md string yes Example: Please escalate this ticket to second level..
version integer (int64) yes

TemplateCreate

Property Type Required Description
name string yes Example: Escalation.
content_md string yes Example: Please escalate this ticket to second level..

No other properties are allowed.

TemplateUpdate

Property Type Required Description
name string no
content_md string no

No other properties are allowed.

TemplateList

Property Type Required Description
items array of Template yes

Attachment

Property Type Required Description
position integer yes
file File yes

File

Property Type Required Description
id Uuid yes
sha256 string no Hex SHA-256 of the stored bytes. Example: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08.
size_bytes integer (int64) yes Example: 48213.
mime_type string yes Detected by the server. Example: image/png.
original_name string yes Example: screenshot.png.
uploaded_by Uuid yes
purpose string yes Values: attachment, avatar, branding, gdpr_export.
scope_channel_id Uuid no Channel the file was uploaded for; present only before the file is attached to a message. An attached file is read through the channel of its message.
upload_state string yes Values: pending, complete, failed. Example: complete.
scan_status string yes Values: pending, clean, infected, error, skipped. Example: clean.
width integer no
height integer no
duration_ms integer (int64) no
transcript_status TranscriptStatus yes
transcript_language string no
transcript_source TranscriptSource no
thumbnails array of Thumbnail yes
created_at Timestamp yes

Thumbnail

Property Type Required Description
variant string yes Values: small, medium, large, poster.
mime_type string yes Example: image/jpeg.
width integer yes Example: 320.
height integer yes Example: 180.

UploadCreate

Property Type Required Description
name string yes Example: screenshot.png.
size_bytes integer (int64) yes Minimum 1. Example: 48213.
declared_mime_type string no Example: image/png.
sha256 string yes Lowercase hex SHA-256 of the whole file; the verify pass checks it. Pattern ^[0-9a-f]{64}$.

No other properties are allowed.

UploadSession

Upload plan. In mode direct the part URLs point to this server; in mode presigned they point to the object store. The client uploads all parts, then calls complete.

Property Type Required Description
file_id Uuid yes
mode string yes Values: direct, presigned.
part_size_bytes integer (int64) yes
parts array of UploadPart yes
expires_at Timestamp yes

UploadState

State of an own upload session, for resuming after a network loss.

Property Type Required Description
file_id Uuid yes
upload_state string yes Values: pending, uploading, complete.
part_size_bytes integer (int64) yes
completed_parts array of object yes Parts the server has confirmed, with their ETag.
completed_parts[].part_number integer yes Minimum 1.
completed_parts[].etag string yes Example: "9b2cf535f27731c974343645a3985328".
expires_at Timestamp yes

FileTicketCreate

Property Type Required Description
variant string yes Values: original, small, medium, large, poster.

No other properties are allowed.

FileTicket

Short-lived fetch URL for media players without DPoP (12, 9.2). Checked again on every fetch.

Property Type Required Description
url string (uri-reference) yes Example: /api/v1/files/0192f4a0-7b1c-75c7-88f6-199cc394b56a/content?ticket=c2lnbmVk.
expires_at Timestamp yes

UploadPart

Property Type Required Description
part_number integer yes Minimum 1.
url string (uri-reference) yes Example: /api/v1/uploads/0192f4a0-7b1c-7000-8a00-000000000501/parts/1.
headers array of HeaderPair yes Headers the client must send with the PUT.

HeaderPair

Property Type Required Description
name string yes Example: Content-Type.
value string yes Example: application/octet-stream.

UploadPartResult

Property Type Required Description
part_number integer yes
etag string yes Example: "3858f62230ac3c915f300c664312c11f".

No other properties are allowed.

UploadComplete

Property Type Required Description
parts array of UploadPartResult yes

No other properties are allowed.

TranscriptSubmit

Property Type Required Description
text string yes The transcript; may be empty (a silent recording), must not contain U+0000 and is at most message.max_content_bytes UTF-8 bytes. Example: Please call the customer back tomorrow morning..
language string no Optional BCP 47 tag of the spoken language, a primary subtag of two or three letters followed by subtags of two to eight letters or digits. Pattern ^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$. Example: en.

No other properties are allowed.

Transcript

Property Type Required Description
file_id Uuid yes
status TranscriptStatus yes
text string no Example: Please call the customer back tomorrow morning..
language string no Example: en.
source TranscriptSource no

SearchHit

One hit. kind names which of the optional objects is set.

Property Type Required Description
kind SearchHitKind yes
score number (double) no Only with sort = relevance.
message Message no
thread Thread no
file File no
thread_title string no
channel_name string no
space_name string no
segments array of object yes Excerpt split at the matches; no markup, HTML in the content stays text (14, 4.6).
segments[].text string yes
segments[].match boolean yes

ReadState

Property Type Required Description
thread_id Uuid yes
channel_id Uuid yes
last_read_seq integer (int64) yes Example: 41.
mention_count integer yes Unread mentions of the caller in this thread, computed when the response or event is built (03 read_states); never stored.
version integer (int64) yes
updated_by_device_id Uuid no
updated_at Timestamp no

ReadStatePut

Advances the read position. The server keeps the maximum of old and new.

Property Type Required Description
last_read_seq integer (int64) yes Minimum 0. Example: 42.

No other properties are allowed.

ReadStateList

Property Type Required Description
items array of ReadState yes

Draft

Property Type Required Description
id Uuid yes
thread_id Uuid no
channel_id Uuid yes
content_md string yes Example: Draft of a reply.
reply_to_message_id Uuid no
file_ids array of Uuid yes
version integer (int64) yes
updated_by_device_id Uuid no
updated_at Timestamp no

DraftPut

Property Type Required Description
content_md string yes Example: Draft of a reply.
reply_to_message_id Uuid no
file_ids array of Uuid no
base_version integer (int64) no Version the client edited; older than current sets overwrote_newer.

No other properties are allowed.

DraftPutResult

Property Type Required Description
draft Draft yes
overwrote_newer boolean yes

DraftList

Property Type Required Description
items array of Draft yes

UserSetting

Property Type Required Description
key string yes Example: composer.enter_sends.
value JsonValue yes
version integer (int64) yes
updated_by_device_id Uuid no
updated_at Timestamp no

UserSettingPut

Property Type Required Description
value JsonValue yes

No other properties are allowed.

UserSettingList

Property Type Required Description
items array of UserSetting yes

NotificationLevel

Type: string

Values: all, mentions, mute.

NotificationPreference

Property Type Required Description
target_kind string yes Values: space, channel, thread.
target_id Uuid yes
level NotificationLevel yes
muted_until Timestamp no
version integer (int64) yes

NotificationPreferencePut

Property Type Required Description
level NotificationLevel yes
muted_until Timestamp no

No other properties are allowed.

NotificationPreferenceList

Property Type Required Description
items array of NotificationPreference yes

QuietHoursRule

Property Type Required Description
id Uuid yes
weekdays integer yes Bit mask, bit 0 = Monday. Minimum 1; maximum 127. Example: 31.
start_local string yes Local time HH:MM. Pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$. Example: 22:00.
end_local string yes Pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$. Example: 07:00.
time_zone string no IANA time zone name; absent means the person's time zone (users.time_zone). Example: Europe/Berlin.
enabled boolean yes
version integer (int64) yes

QuietHoursRuleInput

Property Type Required Description
weekdays integer yes Minimum 1; maximum 127. Example: 31.
start_local string yes Pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$. Example: 22:00.
end_local string yes Pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$. Example: 07:00.
time_zone string no IANA time zone name; absent means the person's time zone (users.time_zone). Example: Europe/Berlin.
enabled boolean yes

No other properties are allowed.

QuietHoursList

Property Type Required Description
items array of QuietHoursRule yes

PushRegistration

Property Type Required Description
id Uuid yes
device_id Uuid yes
provider PushProvider yes
environment PushEnvironment yes
app_id string yes Example: com.example.teamchat.
created_at Timestamp yes
disabled_at Timestamp no
disabled_reason string no

PushRegistrationCreate

Property Type Required Description
provider PushProvider yes
token string yes Push token of the provider, at most push.registration_field_max_bytes bytes (too_long at /token). Never returned. An apns token is an even number of hexadecimal digits and is stored in lower case; an fcm token is printable ASCII without white space; otherwise pattern_mismatch at /token. Example: EXAMPLE-device-token-a1b2.
environment PushEnvironment no
app_id string yes Bundle ID or package of the app, at most push.registration_field_max_bytes bytes (too_long at /app_id). For apns it must be one of push.apns.topics (invalid at /app_id). apns needs a device with platform ios or macos, fcm one with android (invalid at /provider); sandbox exists only for apns (invalid at /environment); an absent environment is production. Example: com.example.teamchat.

No other properties are allowed.

PushRegistrationCreated

A new push registration with its preview token, which is shown exactly once and never again (13, 6.4).

All of: PushRegistration

Property Type Required Description
preview_token string yes Preview token of the registration (bothy_pvw_...), shown exactly once. The app keeps it in the store it shares with its notification extension. Example: bothy_pvw_EXAMPLEpushpreviewtoken00000000000000000000_4Z1L0A.

UnreadThread

Property Type Required Description
thread_id Uuid yes
channel_id Uuid yes
unread_count integer yes
mention_count integer yes
last_message_seq integer (int64) yes
last_read_seq integer (int64) yes

DraftRef

Property Type Required Description
id Uuid yes
thread_id Uuid no
channel_id Uuid yes
version integer (int64) yes

AgentPresence

Property Type Required Description
agent_id Uuid yes
state AgentRuntimeState yes
reported_billing_mode BillingMode no

Snapshot

State without thread contents, delivered by ready and GET /sync/snapshot.

Property Type Required Description
head_seq integer (int64) yes Example: 5300.
permission_version integer (int64) yes Example: 418.
sync_epoch Uuid yes Time line of the event log (04, 7.5).
principal PrincipalRef yes
is_owner boolean yes
spaces array of SpaceView yes
channels array of ChannelView yes
sidebar array of SidebarState yes
unread_threads array of UnreadThread yes Only threads with unread messages or mentions.
active_runs array of RunSummary yes
agents array of AgentPresence yes
settings array of UserSetting yes
drafts array of DraftRef yes
features array of EvaluatedFlag yes Feature flags evaluated for the principal, as in InstanceInfo.features (04 section 6.3, step 4).

Agent

Property Type Required Description
id Uuid yes
handle string yes Example: support-agent.
display_name string yes Example: Support Agent.
avatar_file_id Uuid no
status string yes Values: active, disabled, deleted.
adapter_kind string yes Example: hermes.
description string yes Example: Answers support tickets.
billing_mode BillingMode yes
credential_holder_id Uuid no
billing_mode_changed_at Timestamp no
tool_class ToolClass yes
presence AgentRuntimeStatus yes
operator_config JsonObject yes Schema agent_operator_config.v1. No secrets.
version integer (int64) yes

AgentRuntimeStatus

Reported state of the agent runtime (heartbeat), not the configured state.

Property Type Required Description
state AgentRuntimeState yes
reported_billing_mode BillingMode no
runtime_version string no Example: 2.3.1.
last_heartbeat_at Timestamp no
billing_modes_supported array of BillingMode no
reported_tool_class ToolClass no
billing_mode_matches boolean no False when the reported mode differs from the configured billing_mode.
rate_limit AgentRateLimitState no
billing_evidence BillingEvidence no
warnings array of string no Known values billing_mode_mismatch (the reported mode has differed from the configured one for longer than billing.mismatch_alert_after), billing_mode_unsupported (no reported mode and the configured one is not in billing_modes_supported), billing_evidence_unknown (billing_evidence.key_type is unknown) and tool_class_mismatch (the reported tool class differs from the configured one). Only while the state is online or degraded.

AgentCreate

Property Type Required Description
handle string yes Pattern ^[a-z0-9][a-z0-9._-]*$. Example: support-agent.
display_name string yes Example: Support Agent.
adapter_kind string yes Example: hermes.
description string no Example: Answers support tickets.
operator_config JsonObject no

No other properties are allowed.

AgentUpdate

Property Type Required Description
display_name string no Example: Support Agent.
description string no
operator_config JsonObject no

No other properties are allowed.

BillingModeSet

Property Type Required Description
billing_mode BillingMode yes
credential_holder_id Uuid no Required for personal.
reason string yes Min length 1. Example: Team uses the agent now.

No other properties are allowed.

BillingModeSetAll

Switches several agents in one transaction, all or nothing (10, 9.1).

Property Type Required Description
billing_mode BillingMode yes
credential_holder_id Uuid no Required for personal.
agent_ids array of Uuid no Required for personal. Without it organization affects every agent not yet on organization.
reason string yes Min length 1. Example: Switch all agents to the company key.

No other properties are allowed.

BillingModeSetAllResult

Property Type Required Description
changed_agent_ids array of Uuid yes

CredentialHolderSet

Property Type Required Description
credential_holder_id Uuid yes
reason string yes Min length 1. Example: Handover to deputy.

No other properties are allowed.

Heartbeat

Property Type Required Description
state string yes Values: online, degraded.
runtime_version string no Version of the agent runtime (column reported_runtime_version); the adapter's own version is details.adapter.version. Pattern ^[0-9A-Za-z][0-9A-Za-z.+_-]*$. Example: 2.3.1.
reported_billing_mode BillingMode no Absent when the adapter follows the configured mode per run; then billing_modes_supported names both modes and the per-run check binds (ruling L8).
billing_modes_supported array of BillingMode no
billing_evidence BillingEvidence no
reported_tool_class ToolClass no
rate_limit AgentRateLimitState no Stored in agents.reported_details.rate_limit as exactly state and resets_at; absent clears a stored one, because every heartbeat is the full reported state. Shown by getStatsBackends.
details JsonObject no Further fields of schema agent_heartbeat.v1, a closed object; any other key, also inside capabilities, adapter and runtime, is refused. Keys: capabilities (object: followups steer or queue; components, voice_input, title, files_out booleans), active_runs (distinct run ids), degraded_reasons (distinct codes), adapter (name required, version optional), runtime (name required), protocol_version (integer, at least 1). Names match ^[a-z0-9][a-z0-9._-]*$, versions ^[0-9A-Za-z][0-9A-Za-z.+_-]*$, codes ^[a-z0-9][a-z0-9_.:-]*$. No secrets, no content, no paths.
project_readiness array of ProjectReadiness no Readiness per bound forum of a runner (M2-03); the channels must be distinct. Applied only when present and different from the last list this server process applied; absent means "unchanged".

No other properties are allowed.

ProjectReadiness

Property Type Required Description
channel_id Uuid yes
ready boolean yes

No other properties are allowed.

HeartbeatAck

Property Type Required Description
presence AgentRuntimeStatus yes
interval_ms integer (int64) yes Interval the adapter should keep, sync.heartbeat_interval.

ConsumerAck

Property Type Required Description
seq integer (int64) yes Minimum 0. Example: 5301.

No other properties are allowed.

ConsumerState

Property Type Required Description
consumer string yes Example: default.
acked_seq integer (int64) yes
head_seq integer (int64) yes

RunState

Type: string

Values: queued, running, waiting_input, completed, failed, cancelled.

RunMetrics

Schema run_metrics.v1.

Property Type Required Description
context_pct number (double) no Example: 37.5.
tokens_in integer (int64) no
tokens_out integer (int64) no
tokens_cache_read integer (int64) no
tokens_cache_write integer (int64) no Cache writes with 5 minutes (or without a stated duration).
tokens_cache_write_1h integer (int64) no Cache writes with 1 hour, counted separately.
subagents integer no
background_jobs integer no
api_retries integer no
progress_events integer no Count of progress messages of the runtime in the current turn that changed nothing visible (for example a long running tool); a patch of it counts as progress against run.stall_after (09 5.5, 18.4).
last_api_retry RunApiRetry no

No other properties are allowed.

RunApiRetry

Last retry of a model API call, shown in the live box while set.

Property Type Required Description
attempt integer yes Example: 2.
max_retries integer no Example: 5.
retry_delay_ms integer (int64) no Example: 4000.
error string no Example: overloaded.

No other properties are allowed.

RunPlan

Schema run_plan.v1, shown in the live box.

Property Type Required Description
items array of object yes
items[].id string yes Example: step-1.
items[].text string yes Example: Reproduce the export error.
items[].status string yes Values: pending, in_progress, completed.

RunContext

Context of an own active run, schema run_context.v1 (09, 4.6). Built by the server because only authz knows how trustworthy each author is.

Property Type Required Description
run_id Uuid yes
trigger_message RunContextMessage yes
thread_context array of RunContextMessage yes
channel_context array of RunContextMessage no Main-thread messages before the parent message of the thread, without the parent message itself. Present (possibly empty) exactly on a run in session mode new or bind and on a guest run, in a thread with parent_message_id whose parent message lies in the thread's current channel; absent otherwise, also after the thread was moved to another channel.
context_floor_seq integer (int64) yes
truncated_before_seq integer (int64) no Refers to the run's thread. Set when older selectable messages of thread_context are missing (the history_backfill_limit window or the byte budget left them out); then it is the thread_seq of the oldest element of thread_context, or of the triggering message when thread_context is empty. Load older messages with thread.read.

RunContextMessage

Property Type Required Description
message_id Uuid yes
thread_seq integer (int64) yes
created_at Timestamp yes
author PrincipalRef yes
role string yes Values: user, assistant, other.
origin MessageOrigin yes
kind MessageKind yes
channel_id Uuid yes Channel of the message (SEC-AI-1).
content_md string yes
truncated boolean no Present and true only when content_md was cut at agent.context_message_max_bytes on a UTF-8 boundary; never on trigger_message.
attachments array of RunContextAttachment yes
reply_to_message_id Uuid no
trust string yes How the runtime must treat the content; unverified only as marked data, never as instruction. Values: trigger, authorized, self, unverified, system.
already_delivered boolean no Present and true only in session mode resume for a message already delivered to this session as a follow-up (run_followups in delivered or absorbed).

RunContextAttachment

Property Type Required Description
file_id Uuid yes
original_name string yes Example: screenshot.png.
mime_type string yes Example: image/png.
size_bytes integer (int64) yes
scan_status string yes Example: clean.
transcript string no

AgentTriggerers

Principals that may trigger the calling agent (allow list of the adapter).

Property Type Required Description
principal_ids array of Uuid yes
permission_version integer (int64) yes Example: 418.

RunSummary

Summary for sidebars, "running now" and collapsed live boxes.

Property Type Required Description
id Uuid yes
thread_id Uuid yes
channel_id Uuid yes
agent_id Uuid yes
triggered_by Uuid yes
state RunState yes
state_reason string no Example: user_cancelled.
version integer (int64) yes
billing_mode_expected BillingMode yes
billing_mode_used BillingMode no
status_line string no Example: Reading the export logs.
summary string no Example: Found the cause and proposed a fix.
cost Money yes
step_count integer yes
duration_ms integer (int64) no
queued_at Timestamp yes
started_at Timestamp no
finished_at Timestamp no
stall_warned_at Timestamp no Set by runs.stall_check when a running run made no progress for run.stall_after (notice "no movement since ..."); the next stored patch clears it (09 5.5).

Run

Run document (run_document.v1), the content of the live box.

Property Type Required Description
id Uuid yes
thread_id Uuid yes
channel_id Uuid yes
agent_id Uuid yes
agent_session_id Uuid no
trigger_kind string no Values: message, command, interaction.
triggering_message_id Uuid no
triggering_command_id Uuid no
triggering_interaction_id Uuid no
triggered_by Uuid yes
state RunState yes
state_reason string no
version integer (int64) yes
billing_mode_expected BillingMode yes
billing_mode_used BillingMode no
model string no Example: model-large.
status_line string no Example: Reading the export logs.
last_text_excerpt string no
metrics RunMetrics yes
cost Money yes
summary string no
steps map of RunStep yes Steps keyed by step ID; order comes from ordinal.
followups map of RunFollowup yes Follow-ups keyed by message ID.
queued_at Timestamp yes
started_at Timestamp no
finished_at Timestamp no
duration_ms integer (int64) no
plan RunPlan no
stall_warned_at Timestamp no Set by runs.stall_check when a running run made no progress for run.stall_after (notice "no movement since ..."); the next stored patch clears it (09 5.5).

RunStep

Property Type Required Description
id Uuid yes
ordinal integer yes
parent_step_id Uuid no
kind string yes Values: tool_call, status, subagent, workflow, background_job.
name string yes Example: read_file.
title string yes Example: Reading export.log.
status string yes Values: pending, running, completed, failed, cancelled.
detail JsonObject no Schema run_step_detail.v1, cut to run.step_detail_max_bytes. A step of kind subagent, workflow or background_job may carry the member usage (object with the optional integers tokens, tool_uses, duration_ms, cost_micros and the text currency, required with cost_micros), reported by the adapter for display only, never a booking (09 5.6).
started_at Timestamp yes
finished_at Timestamp no

RunStepPage

Property Type Required Description
items array of RunStep yes
next_cursor Cursor no

RunFollowup

Property Type Required Description
message_id Uuid yes
state string yes Values: queued, delivered, absorbed, deferred, discarded.

RunPatch

Property Type Required Description
base_version integer (int64) yes Example: 7.
ops array of JsonPatchOperation yes Min items 1.

No other properties are allowed.

RunPatchResult

Property Type Required Description
version integer (int64) yes Example: 8.

RunStart

Property Type Required Description
invocation_token string yes JWS from the delivered invocation (I3). Example: eyJhbGciOiJFZERTQSIsImtpZCI6Imludi0yMDI2LTEwIn0.e30.sig.
billing_mode_used BillingMode yes
tool_class_used ToolClass yes
external_session_ref string no Absent when the runtime creates the reference only during the run; then the first reportAgentSession creates the session row. Example: sess-7f3a.
model string no Example: model-large.
billing_evidence BillingEvidence no

No other properties are allowed.

InvocationTokenRenew

Property Type Required Description
invocation_token string yes The current invocation token of the run, or on a retry after a lost answer the token the last renewal replaced; it may have expired (09 section 4.5.1). Example: eyJhbGciOiJFZERTQSIsImtpZCI6Imludi0yMDI2LTEwIn0.e30.sig.

No other properties are allowed.

InvocationTokenGrant

Property Type Required Description
invocation_token string yes Fresh invocation token with a new jti; it replaces the current one of the run. Example: eyJhbGciOiJFZERTQSIsImtpZCI6Imludi0yMDI2LTEwIn0.e30.signature.
expires_at string (date-time) yes Example: 2026-10-10T09:31:00.000Z.

RunAwaitInput

Property Type Required Description
status_line string yes Example: Waiting for approval.

No other properties are allowed.

RunFinish

Property Type Required Description
state string yes Values: completed, failed, cancelled.
reason string no Required for failed and cancelled, e.g. billing_mode_mismatch, adapter_error, user_cancelled. Example: adapter_error.
summary string no Example: Found the cause and proposed a fix.
metrics RunMetrics no
costs array of CostReport no The consumption of this run, one report per model (a second report of the same provider and model is invalid). The server books one cost entry per report at the end of the run (10, 12.1); a repeated finish books nothing. Only a run that started (billing_mode_used set) may report costs.

No other properties are allowed.

CostReport

Cost of one model in this run as reported by the adapter: the consumption of this run, never a session sum; stored as estimate. The server computes the amount from the price table when the price set of provider, model and the end of the run covers every consumed unit (source computed, the adapter amount is ignored), otherwise it books amount_micros (source adapter_reported), otherwise 0 (source unpriced, "Price missing"). Token counts and amount_micros are not negative and below 2^53; absent token counts are 0.

Property Type Required Description
provider string yes Example: anthropic.
model string yes Example: model-large.
tokens_in integer (int64) no
tokens_out integer (int64) no
tokens_cache_read integer (int64) no
tokens_cache_write integer (int64) no Cache writes with 5 minutes (or without a stated duration).
tokens_cache_write_1h integer (int64) no Cache writes with 1 hour, priced with cache_write_1h_mtok.
amount_micros integer (int64) no Absent lets the server compute from the price table.
currency string yes ISO 4217 code. Example: USD.

No other properties are allowed.

RunCancel

Property Type Required Description
reason string no Example: Wrong ticket.

No other properties are allowed.

CostBreakdown

Property Type Required Description
thread_id Uuid yes
totals array of CostTotal yes Valid sums per billing mode and currency, never converted; sums of mode personal only when billing.show_personal_estimates is on.
runs array of RunCost yes Runs of the thread with at least one valid cost entry, by run_id ascending.

CostTotal

Property Type Required Description
billing_mode BillingMode yes
amount_micros integer (int64) yes
currency string yes ISO 4217 code. Example: USD.
is_estimate boolean yes True while any summed entry is an estimate.

RunCost

Property Type Required Description
run_id Uuid yes
billing_mode BillingMode yes
agent_session_id Uuid no
tokens TokenCounts yes
costs array of Money no One amount per currency; absent when amounts are hidden (mode personal without billing.show_personal_estimates).
unpriced boolean yes A valid entry of the run has neither a price nor an amount of the adapter ("Price missing").

TokenCounts

Property Type Required Description
tokens_in integer (int64) yes
tokens_out integer (int64) yes
tokens_cache_read integer (int64) yes
tokens_cache_write integer (int64) yes
tokens_cache_write_1h integer (int64) yes

Component

Property Type Required Description
id Uuid yes
custom_id string yes Example: approve-refund.
type ComponentType yes
definition JsonObject yes Schema component.v1 (09, 11.1) as stored, with the defaults applied (button style, select min_values and max_values, field required).
position integer yes
single_use boolean yes
required_capability Capability no
restricted_to ComponentRestriction yes
run_id Uuid no
state string yes Values: active, used, expired, disabled.
expires_at Timestamp no
used_by Uuid no
used_at Timestamp no
version integer (int64) yes

ComponentCreate

Property Type Required Description
custom_id string yes Example: approve-refund.
type ComponentType yes
definition JsonObject yes Schema component.v1 (09, 11.1), a closed member set per type; 400 validation_failed with one entry per finding below /components/<index>/definition and the codes required, invalid or limit_reached.
single_use boolean no
required_capability Capability no
restricted_to ComponentRestriction no
expires_at Timestamp no

No other properties are allowed.

ComponentUpdate

Property Type Required Description
state string no Values: active, disabled.
definition JsonObject no A new component.v1 object for the type of the component (09, 11.1); it may change in every state. Type, custom_id, single_use, required_capability, restricted_to and run_id cannot change.

No other properties are allowed.

InteractionCreate

Property Type Required Description
client_interaction_id Uuid yes
values JsonObject no Selected options or form values, validated against the component definition (09, 11.1); absent means {}. Button: {}. Select: {"selected": [<option value>, ...]} with between min_values and max_values distinct option values. Form: an object keyed by field name (text and textarea strings, number a finite number, boolean a boolean, choice one of choices). A finding gives 400 validation_failed with code interaction_values_invalid and its pointer; values whose interaction.created would exceed sync.event_payload_max_bytes give too_long on /values.

No other properties are allowed.

Interaction

Property Type Required Description
id Uuid yes
component_id Uuid yes
custom_id string no Example: approve-refund.
message_id Uuid yes
thread_id Uuid no
run_id Uuid no Run of the agent card the component belongs to; absent for a component of an app card.
principal_id Uuid yes
client_interaction_id Uuid yes
values JsonObject yes
state string yes received when stored. For a component of an agent card the delivery sets dispatched when it hands interaction.created to the agent, or failed when the re-check denies (09, 11.2). For a component of an app card the job runs.app_dispatch acts after the commit: failed when the app has no active installation; for an app whose manifest declares delivery.interactions_url it re-checks with the rights of that moment (failed without a request on a denial), sets dispatched when it hands the event to that address, then acknowledged on a 200 answer whose reply message is written in the name of the app, and failed when the app does not answer within app.interaction_timeout or gives any other answer; a 202 keeps dispatched until the app calls respondToInteraction. For an app that receives its events over the gateway the interaction stays received until respondToInteraction. respondToInteraction moves the state from received or dispatched to acknowledged, failed or rejected; every change is a compare-and-swap, so the first of the job and the owner wins and the job never overwrites the answer of the owner. Values: received, dispatched, acknowledged, failed, rejected.
response InteractionResponse no
created_at Timestamp yes

InteractionResponse

Property Type Required Description
text string no Example: Refund approved.

No other properties are allowed.

InteractionRespond

Property Type Required Description
state string yes Values: acknowledged, failed, rejected.
response InteractionResponse no

No other properties are allowed.

CommandOption

Property Type Required Description
name string yes Example: ticket.
description string yes Example: Ticket number.
type string yes Values: string, integer, boolean, choice, user, file.
required boolean yes
choices array of CommandChoice no
autocomplete boolean no

No other properties are allowed.

CommandChoice

Property Type Required Description
name string yes Example: High priority.
value string yes Canonical string form of the value; the option type defines its syntax. Example: high.

No other properties are allowed.

Command

Property Type Required Description
id Uuid yes
owner_principal_id Uuid yes
name string yes Example: escalate.
description string yes Example: Escalate the ticket to second level.
scope_kind TargetKind yes
scope_id Uuid no
options array of CommandOption yes
required_level CommandLevel yes
control boolean yes
version integer (int64) yes

CommandRegister

Property Type Required Description
name string yes Pattern ^[a-z0-9][a-z0-9_-]*$. Example: escalate.
description string yes Example: Escalate the ticket to second level.
scope_kind TargetKind no
scope_id Uuid no
options array of CommandOption no
required_level CommandLevel no
control boolean no

No other properties are allowed.

CommandList

Property Type Required Description
items array of Command yes

CommandOptionValue

Property Type Required Description
name string yes Example: ticket.
value string yes Example: 4711.

No other properties are allowed.

CommandInvoke

Property Type Required Description
thread_id Uuid no Absent: in a text channel the main thread for a control command, and for a model command only when auto_thread is false; otherwise 400 validation_failed (/thread_id, required), because a command has no message from which the auto_thread thread could start. For an app command absent means the main thread in a text channel and no thread in a forum channel, never 400; auto_thread does not apply.
options array of CommandOptionValue no

No other properties are allowed.

CommandInvocation

Property Type Required Description
invocation_id Uuid yes New per accepted invocation; it appears as invocation_id in command.invoked and, for agent commands, as command_invocation_id in agent.invocation.
command_id Uuid yes
channel_id Uuid yes
thread_id Uuid no Target thread of the invocation; absent when there is none, for example for an app command in a forum channel without thread_id.
run_id Uuid no Run created for non-control commands of agents. Always absent for app commands, because apps have no runs.
accepted boolean yes Always true, also for app commands; a refusal is an error response.

AutocompleteQuery

Property Type Required Description
thread_id Uuid no
option string yes Example: ticket.
value string yes Example: 47.
options array of CommandOptionValue no Values of the other options entered so far.

No other properties are allowed.

AutocompleteResult

Property Type Required Description
choices array of CommandChoice yes At most command.autocomplete_max_choices. Max items 25.

AutocompleteAnswer

Property Type Required Description
choices array of CommandChoice yes At most command.autocomplete_max_choices. Max items 25.

No other properties are allowed.

AppManifest

Schema app_manifest.v1 (11, 3.1). Unknown members are an error. Beyond the schema the server applies the check rules of 11, 3.2: scopes from the catalogue, only subscribable events with the scope of their receive action and events:subscribe, https delivery addresses whose host is in webhook.allowed_hosts, requested_grants at most write and at most the capability upload and never on a host, commands without reserved names and at most command.max_per_principal, and at most app.manifest_max_bytes.

Property Type Required Description
schema_version integer yes Values: 1. Example: 1.
slug string yes Unique in the instance; becomes the handle of the app principal. Pattern ^[a-z0-9][a-z0-9-]*$. Example: ticket-sync.
name string yes Becomes the display name of the app principal. Min length 1. Example: Ticket Sync.
description string yes Min length 1. Example: Mirrors tickets of a help desk into a forum..
publisher string yes Min length 1. Example: Example Ltd.
version string yes SemVer 2.0.0 of the manifest (apps.manifest_version). Example: 1.2.0.
homepage_url string no Absolute https address for display only; the server never loads it. Example: https://apps.example.com/ticket-sync.
min_api_version string yes Lowest API version (major.minor) the app needs; not above the version of this server. Pattern ^[0-9]+\.[0-9]+$. Example: 1.0.
scopes object yes
scopes.required array of AppScope yes
scopes.optional array of AppScope yes
events array of string no Durable event types (05, 6) the app may subscribe to; each needs the scope of its receive action and events:subscribe.
delivery object no Required with events, commands or components.
delivery.mode string yes Values: gateway, webhook.
delivery.events_url string no Required for webhook, not allowed for gateway; https, host in webhook.allowed_hosts. Example: https://apps.example.com/ticket-sync/events.
delivery.interactions_url string no Required for commands or components without the gateway; https, host in webhook.allowed_hosts. Example: https://apps.example.com/ticket-sync/interactions.
commands array of CommandRegister no Commands after 09, 10, without reserved names and without a target.
components array of string no Component types the app uses; only shown for the consent. Values: button, select, form.
requested_grants array of object no Grants the app asks for; the owner creates them per target with createGrant. Only read or write, at most the capability upload, never on a host.
requested_grants[].target_kind TargetKind yes
requested_grants[].level Level yes
requested_grants[].capabilities array of Capability no
requested_grants[].purpose string yes Min length 1. Example: Posts per ticket.
incoming_webhooks array of object no
incoming_webhooks[].name string yes Min length 1. Example: alerts.
incoming_webhooks[].purpose string yes Min length 1. Example: Alerts of the help desk.
data_egress string no Plain text on which data leave the instance and where to; required with events or interactions_url. Example: Messages of the granted channels go to apps.example.com..

No other properties are allowed.

App

Property Type Required Description
id Uuid yes
slug string yes Example: ticket-sync.
display_name string yes Example: Ticket Sync.
manifest AppManifest yes
manifest_version string yes Example: 1.2.0.
installation AppInstallation yes

AppInstallation

Property Type Required Description
id Uuid yes
granted_scopes array of AppScope yes
event_subscriptions array of string yes
state string yes Values: active, suspended, uninstalled.
installed_by Uuid no
installed_at Timestamp yes

AppInstall

Property Type Required Description
manifest AppManifest yes
granted_scopes array of AppScope yes
event_subscriptions array of string no
reason string yes Example: Sync tickets with the help desk.

No other properties are allowed.

AppScopesPut

Property Type Required Description
granted_scopes array of AppScope yes
event_subscriptions array of string no
reason string yes Example: App no longer needs files.

No other properties are allowed.

ManifestValidation

Property Type Required Description
valid boolean yes
errors array of FieldError yes

WebhookSubscription

Property Type Required Description
id Uuid yes
app_id Uuid no Set for subscriptions of an app.
agent_id Uuid no Set for subscriptions of an agent (agent transport, 04 15.6); exactly one of app_id and agent_id.
url string yes Example: https://hooks.example.com/chat.
event_types array of string yes
state string yes Values: active, paused, disabled.
consecutive_failures integer yes
signature_schemes array of string yes Values: v1a, v1.
signing_key_kid string yes Example: whk-2026-10.
created_at Timestamp yes
disabled_at Timestamp no

WebhookSubscriptionCreate

Property Type Required Description
url string yes HTTPS URL; the host must be in webhook.allowed_hosts. Example: https://hooks.example.com/chat.
event_types array of string yes
enable_hmac boolean no Also sign with Standard Webhooks v1 (HMAC); the secret is returned once.

No other properties are allowed.

WebhookSubscriptionUpdate

Property Type Required Description
url string no
event_types array of string no
state string no Values: active, paused.
rotate_hmac_secret boolean no

No other properties are allowed.

WebhookSubscriptionCreated

Property Type Required Description
subscription WebhookSubscription yes
hmac_secret string no Standard Webhooks secret with prefix whsec_. Shown once. Example: whsec_EXAMPLE.

WebhookSubscriptionList

Property Type Required Description
items array of WebhookSubscription yes

WebhookDelivery

Property Type Required Description
id Uuid yes
subscription_id Uuid yes
event_id Uuid yes
event_seq integer (int64) yes
event_type string no Type of the event, read from the event log; absent once the event left the event log (sync.event_retention). Example: message.created.
attempt integer yes
status WebhookDeliveryStatus yes
response_code integer no
last_error string no Example: timeout.
next_attempt_at Timestamp no
created_at Timestamp yes
delivered_at Timestamp no

IncomingWebhook

Property Type Required Description
id Uuid yes
app_id Uuid yes
channel_id Uuid yes
thread_id Uuid no
name string yes Example: Monitoring alerts.
created_at Timestamp yes
last_used_at Timestamp no
revoked_at Timestamp no

IncomingWebhookCreate

Body of createIncomingWebhook. app_id names an app principal whose installation is active (else 400 validation_failed with errors[].code app_not_installed) and that may write in the channel (else app_cannot_write); thread_id, when present, is a thread of this channel (else not_in_channel, an unknown ID too). name is not empty and has no control or bidi characters.

Property Type Required Description
app_id Uuid yes
name string yes Example: Monitoring alerts.
thread_id Uuid no

No other properties are allowed.

IncomingWebhookCreated

Property Type Required Description
webhook IncomingWebhook yes
url string yes Absolute URL from server.public_url including the token, shown once. Senders that set a header drop the last segment and send the token as Authorization: Bearer <token>. Example: https://chat.example.com/api/v1/hooks/0192f4a0-7b1c-7000-8a00-000000000901/bothy_whi_EXAMPLE000000000000000000000000000000000000_2WwD3e.

IncomingWebhookList

The active incoming webhooks of a channel in creation order; revoked ones are not listed.

Property Type Required Description
items array of IncomingWebhook yes

IncomingWebhookPost

Body of an incoming webhook call in one of two shapes, recognised per request (11 8.2, docs/DECISIONS.md D-M2-27-5, D-M7-20-5). A body with at least one Alertmanager member (version, groupKey, truncatedAlerts, status, receiver, groupLabels, commonLabels, commonAnnotations, externalURL, alerts) is the unchanged webhook payload of Prometheus Alertmanager (format alertmanager) and must contain no native member; other members of such a payload, at the top and in each alert, are ignored, because Alertmanager adds members in new versions and drops a notification answered with 400. Every other body is native, needs content_md and refuses every other member with 400 validation_failed and errors[].code unknown_member.

Property Type Required Description
content_md string no Native. Markdown content, at most message.max_content_bytes UTF-8 bytes. Example: Disk usage above threshold on build host..
client_msg_id Uuid no Native. Optional UUIDv7; makes retries of the sender idempotent.
title string no Native. Title of a new thread when the webhook has no fixed thread; required in a forum. Example: Disk alert.
thread_id Uuid no Native. Thread of the webhook's channel to write into when the webhook has no fixed thread.
version string no Alertmanager. Version of the webhook payload. Values: 4.
groupKey string no Alertmanager. Key of the alert group.
truncatedAlerts integer (int64) no Alertmanager. Number of alerts left out of alerts. Minimum 0.
status string no Alertmanager. State of the group. Values: firing, resolved.
receiver string no Alertmanager. Name of the receiver.
groupLabels JsonObject no Alertmanager. Labels of the group; every value is a string.
commonLabels JsonObject no Alertmanager. Labels all alerts share; every value is a string.
commonAnnotations JsonObject no Alertmanager. Annotations all alerts share; every value is a string.
externalURL string no Alertmanager. Address of the sending Alertmanager; written as text, never fetched.
alerts array of AlertmanagerAlert no Alertmanager. The alerts of the notification. Min items 1.

AlertmanagerAlert

One alert of an Alertmanager webhook payload; status and labels are required (checked with errors[].code required); other members are ignored (D-M7-20-5).

Property Type Required Description
status string no Values: firing, resolved.
labels JsonObject no Labels of the alert; every value is a string.
annotations JsonObject no Annotations of the alert; every value is a string.
startsAt string (date-time) no
endsAt string (date-time) no
generatorURL string no Address of the rule's source; written as text, never fetched.
fingerprint string no

AuditEvent

Property Type Required Description
seq integer (int64) yes
id Uuid yes
occurred_at Timestamp yes
actor_principal_id Uuid no
actor_device_id Uuid no
actor_session_id Uuid no
action string yes Example: grant.create.
decision AuditDecision yes
deny_reason string no
resource_kind string no Example: grant.
resource_id Uuid no
details JsonObject yes
correlation_id CorrelationId no
prev_hash string yes Hex.
hash string yes Hex.

AuditVerifyRequest

Property Type Required Description
from_seq integer (int64) no
to_seq integer (int64) no

No other properties are allowed.

AuditVerifyResult

Property Type Required Description
ok boolean yes
checked_from_seq integer (int64) yes
checked_to_seq integer (int64) yes
first_broken_seq integer (int64) no
failure_reason string no Values: hash_mismatch, link_mismatch, seq_gap, checkpoint_mismatch, checkpoint_invalid.
checkpoints_compared integer (int64) yes
last_checkpoint_seq integer (int64) no
warnings array of string yes Known value checkpoint_sink_not_configured.

StatsBucket

One time bucket of one group. group_key is set when the query groups (space, agent, tool).

Property Type Required Description
start Timestamp yes Start of the bucket as a UTC instant (local midnight of stats.time_zone for day, week and month).
group_key string no Space ID, agent ID or tool name, as the operation names it; never a person. Example: 0192f4a0-7b1c-7000-8a00-000000000101.
metrics map of number (double) yes Metric name to value. Names per endpoint are listed in its description; a metric without a value is absent.
below_min_group array of string no Metrics that count people and were withheld because their value is below privacy.stats_min_group_size; the client shows "fewer than" the minimum group.

StatsSeries

Property Type Required Description
granularity StatsGranularity yes
buckets array of StatsBucket yes

CostSeries

Property Type Required Description
granularity StatsGranularity yes
currency string yes Example: USD.
buckets array of CostBucket yes

CostBucket

Property Type Required Description
start Timestamp yes
group_key string no
billing_mode BillingMode yes
amount_micros integer (int64) yes
is_estimate boolean yes

Price

Property Type Required Description
id Uuid yes
provider string yes Example: anthropic.
model string yes Example: model-large.
unit PriceUnit yes
price_micros integer (int64) yes
currency string yes Example: USD.
valid_from Timestamp yes
valid_to Timestamp no
source_url string yes Example: https://provider.example.com/pricing.
retrieved_at Timestamp yes

PriceCreate

A price per unit (per million tokens for the *_mtok units) with its public source. valid_to, when present, lies after valid_from; valid_from may lie in the past. source_url is an absolute https URL without user info and fragment; retrieved_at is not in the future.

Property Type Required Description
provider string yes Example: anthropic.
model string yes Example: model-large.
unit PriceUnit yes
price_micros integer (int64) yes
currency string yes Example: USD.
valid_from Timestamp yes
valid_to Timestamp no
source_url string yes Example: https://provider.example.com/pricing.
retrieved_at Timestamp yes

No other properties are allowed.

PriceClose

The new end of the validity, after valid_from.

Property Type Required Description
valid_to Timestamp yes

No other properties are allowed.

PriceList

Property Type Required Description
items array of Price yes

CostReconcile

Property Type Required Description
provider string yes Min length 1. Example: anthropic.
period_start Timestamp yes
period_end Timestamp yes
entries array of ReconcileEntry yes

No other properties are allowed.

ReconcileEntry

Property Type Required Description
run_id Uuid yes
amount_micros integer (int64) yes Minimum 0.
currency string yes ISO 4217 code. Pattern ^[A-Z]{3}$. Example: USD.

No other properties are allowed.

CostReconcileResult

Property Type Required Description
reconciled integer yes
unmatched_run_ids array of Uuid yes

CostEstimate

Estimate of one run in the requested range for the reconciliation (10, 12.4; 05, R-AZ-28). Names no channel, thread or content.

Property Type Required Description
run_id Uuid yes
agent_id Uuid yes
provider string yes Example: anthropic.
currency string yes ISO 4217 code. Example: USD.
estimate_micros integer (int64) yes Sum in micro units of the run's estimate entries in the range whose successor, if any, is not an estimate; the estimate before any reconciliation. Example: 1250000.
reconciled boolean yes True when every valid entry of the run in the range has source = reconciled.

CostEstimatePage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of CostEstimate yes
next_cursor Cursor no

ClientMetricsBatch

Anonymous client measurements (15, section 17). No contents, no IDs of threads, channels or people.

Property Type Required Description
platform string yes Values: ios, android, macos, windows, web.
app_version string yes Example: 1.4.0.
density string no Mobile apps always send touch (01, section 11). Values: comfortable, compact, touch.
theme string no Values: light, dark.
metrics array of ClientMetric yes Max items 200.

No other properties are allowed.

ClientMetric

Property Type Required Description
name string yes One name of the closed list in docs/observability/signals.md section 4.6a: client.cold_start.duration, client.thread_open.duration, client.send_local.duration, client.frames, client.frames.over_budget, client.catchup.duration, client.catchup.events, client.resync, client.reconnects, client.outbox.depth, client.push_display.duration, client.push.placeholder. Not an enum on purpose: the server drops an entry with an unknown name, or with a kind that does not match the type of its name, one by one and still accepts the rest of the batch, so a newer app does not lose its batch against an older server. Max length 64; pattern ^client\.[a-z_.]+$. Example: client.thread_open.duration.
kind string yes Values: histogram, counter, gauge.
close_code integer no Only for client.reconnects; a close code of 04 section 6.4. Example: 4009.
value number (double) no Counter increment or gauge value.
buckets array of object no Histogram buckets (upper bound and count).
buckets[].le number (double) yes
buckets[].count integer (int64) yes

No other properties are allowed.

StatusComponentState

Type: string

Values: operational, degraded, partial_outage, major_outage, maintenance.

StatusComponent

Property Type Required Description
id Uuid yes
name string yes Example: Messages.
description string yes
sort_key string yes Example: a0.
state StatusComponentState yes
health_source string no Example: db.
agent_id Uuid no
updated_at Timestamp yes

StatusComponentInput

Property Type Required Description
name string yes Example: Messages.
description string no
state StatusComponentState no
health_source string no
agent_id Uuid no
after_component_id Uuid no

No other properties are allowed.

StatusIncidentState

Type: string

Values: scheduled, investigating, identified, monitoring, resolved.

StatusIncident

Property Type Required Description
id Uuid yes
title string yes Example: Push notifications delayed.
kind StatusIncidentKind yes
impact StatusIncidentImpact yes
state StatusIncidentState yes
started_at Timestamp yes
resolved_at Timestamp no
component_ids array of Uuid yes
updates array of StatusIncidentUpdate yes

StatusIncidentUpdate

Property Type Required Description
id Uuid yes
state StatusIncidentState yes
body_md string yes Example: The push provider reports delays. We are monitoring..
created_at Timestamp yes

StatusIncidentCreate

Property Type Required Description
title string yes Example: Push notifications delayed.
kind StatusIncidentKind yes
impact StatusIncidentImpact yes
state StatusIncidentState no
started_at Timestamp yes
component_ids array of Uuid yes
body_md string yes Example: The push provider reports delays..

No other properties are allowed.

StatusIncidentUpdateCreate

Property Type Required Description
state StatusIncidentState yes
body_md string yes Example: Delays are resolved..

No other properties are allowed.

StatusPage

Property Type Required Description
overall_state StatusComponentState yes
components array of StatusComponent yes
incidents array of StatusIncident yes Open incidents and recent ones within status.history_window.

ImportSource

Property Type Required Description
id Uuid yes
kind ImportKind yes
name string yes Example: Old community server.
config JsonObject yes Schema import_source.<kind>.v1; credentials only as secret_ref names.
state string yes A dry run writes nothing and keeps the state. Values: draft, running, paused, completed, failed.
stats JsonObject yes Counters without content. The server's counters per item kind and state are under server (server.<item_kind>.<state>, server.source_changed, server.cancelled); the counters of the import tool from setImportCursor are under tool.
cursor JsonObject no The object last stored by setImportCursor (progress and the run lease of the import tool, 22 7.3 and 7.4); {} before the first one. The server never interprets it.
created_at Timestamp yes
started_at Timestamp no
finished_at Timestamp no

ImportSourceCreate

Property Type Required Description
kind ImportKind yes
name string yes Example: Old community server.
config JsonObject yes For kind = discord the mapping of schema import_source.discord.v1, see ImportSourceDiscordConfig (22, 5.2); every violation is one error of 400 validation_failed with its JSON pointer, all reported at once. kind = archive is 400 validation_failed with the code not_enabled.

No other properties are allowed.

ImportItem

Property Type Required Description
id Uuid yes
origin_key string yes Example: message:1029384756:0.
item_kind string yes Values: space, channel, forum_tag, thread, message, file, user, reaction, pin.
target_kind string no
target_id Uuid no
state ImportItemState yes
error string no
source_changed boolean no Present and true when a repeated key came with a content_sha256 different from the stored one; nothing was changed (22, 7.2 item 4).
session string no Present on a thread item that carried earlier_session and has a thread (22, 9 step 1): taken_over when the earlier agent_sessions row was written by this batch, already_present when a row of the same thread, agent and reference with end_reason = import existed, dropped_late when the thread has had a current session since the import and nothing was written (22, 9 step 6). Values: taken_over, already_present, dropped_late.
created_at Timestamp yes

GdprRequest

Property Type Required Description
id Uuid yes
subject_user_id Uuid yes
kind GdprRequestKind yes
state GdprRequestState yes
requested_by Uuid yes
approved_by Uuid no
reason string yes Example: Request by the person.
due_at Timestamp yes
result_expires_at Timestamp no
progress JsonObject no
error string no
created_at Timestamp yes
completed_at Timestamp no

GdprRequestCreate

Property Type Required Description
subject_user_id Uuid no Absent means the caller. Others only for owners.
kind GdprRequestKind yes
reason string yes Example: Request by the person.

No other properties are allowed.

GdprDecision

Property Type Required Description
decision string yes Values: approve, reject.
reason string yes Example: Identity verified.

No other properties are allowed.

ViewAsSnapshot

Read-only view of what a person can see, for owners (07, 9.2). Direct messages never appear.

Property Type Required Description
user PrincipalRef yes
expires_at Timestamp yes End of the view, authz.view_as_max_duration after its start.
spaces array of SpaceView yes
channels array of ChannelView yes

EventScope

Location of the event. Members are absent where not applicable.

Property Type Required Description
space_id Uuid no
channel_id Uuid no
thread_id Uuid no

EventResource

Property Type Required Description
kind string yes Example: message.
id Uuid no
version integer (int64) no

EventActor

Property Type Required Description
id Uuid no
kind ActorKind yes

EventEnvelope

Common envelope of every event. Each event schema adds type and its payload. Durable events carry seq and permission_version; ephemeral events carry neither. Delivery-only members (invocation_token, redelivered, sync_epoch) are set per delivery and never stored in the event log.

Property Type Required Description
id Uuid yes
seq integer (int64) no Global commit-ordered sequence; absent for ephemeral events. Example: 5301.
schema_version integer yes Example: 1.
occurred_at Timestamp yes
actor EventActor no
scope EventScope yes
resource EventResource yes
audience string no Values: self.
redacted boolean no
truncated boolean no The payload was cut to sync.event_payload_max_bytes; load the resource via REST.
correlation_id CorrelationId no
trace_context string no W3C traceparent of the triggering request; only in deliveries to agent adapters and only if the request was recorded. Example: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01.
client_msg_id Uuid no
permission_version integer (int64) no
invocation_token string no Fresh invocation token (JWS, I3); only on agent-addressed invocation events.
redelivered boolean no Set on redelivery to an agent consumer after agent.ack_timeout.
sync_epoch Uuid no Delivery-only member of outgoing webhooks; the time line of the event log (04, 7.5; ADR 0059). A receiver that sees a new epoch resets its seq state.

MessagePayload

Property Type Required Description
message Message yes

MessageDeletedPayload

Property Type Required Description
message_id Uuid yes
thread_id Uuid yes
thread_seq integer (int64) yes
deleted_at Timestamp yes
deleted_by Uuid no

ReactionPayload

Property Type Required Description
message_id Uuid yes
thread_id Uuid yes
emoji string yes Example: 👍.
principal_id Uuid yes
count integer yes Count for this emoji after the change.

PinPayload

Property Type Required Description
pin Pin yes

ThreadPayload

Property Type Required Description
thread Thread yes

ThreadMovedPayload

Property Type Required Description
thread Thread yes
from_channel_id Uuid yes

ThreadMovedOutPayload

Sent in the source channel. Does not name the target channel.

Property Type Required Description
thread_id Uuid yes
channel_id Uuid yes

AgentSessionChangedPayload

Property Type Required Description
thread_id Uuid yes
agent_session AgentSession yes

RunStateChangedPayload

Property Type Required Description
run RunSummary yes
triggering_message_id Uuid no
trigger_state TriggerState no

SpacePayload

Property Type Required Description
space Space yes

ChannelPayload

Property Type Required Description
channel Channel yes

ChannelSettingsChangedPayload

Property Type Required Description
channel_id Uuid yes
settings_version integer (int64) yes

CommandChangedPayload

Property Type Required Description
command Command yes
change string yes Values: registered, updated, removed.

FilePayload

Property Type Required Description
file File yes

UserPayload

Property Type Required Description
user User yes

AgentPayload

Property Type Required Description
agent Agent yes

InstanceUpdatedPayload

Property Type Required Description
changed_keys array of string yes Setting or flag keys that changed; values are loaded via REST.

StatusUpdatedPayload

Property Type Required Description
overall_state StatusComponentState yes
changed_component_ids array of Uuid no
changed_incident_ids array of Uuid no

GrantChangedPayload

Property Type Required Description
grant Grant yes
change string yes Values: created, revoked, expired.

GroupChangedPayload

Property Type Required Description
group Group yes
change string yes member_expired: a membership ended by expiry, reported once by the job authz.expiry_sweep. Values: created, updated, deleted, member_added, member_removed, member_expired.
user_id Uuid no

AccessChangedPayload

Property Type Required Description
permission_version integer (int64) yes Example: 418.
added array of AccessTarget yes
removed array of AccessTarget yes
changed array of AccessTarget yes

AccessExpiringPayload

A grant or group membership ends within authz.expiry_reminder_lead.

Property Type Required Description
kind string yes Values: grant, group_membership.
grant_id Uuid no
group_id Uuid no
subject_id Uuid yes
target AccessTarget no Absent for a grant on the instance.
expires_at Timestamp yes

DevicePendingPayload

A new device of the human waits for approval (R-AZ-31). Carries only IDs and the platform.

Property Type Required Description
device_id Uuid yes
platform DevicePlatform yes

GdprRequestDuePayload

An open privacy request reaches the reminder lead before its statutory deadline (R-AZ-35). Carries only the ID, the kind and the deadline.

Property Type Required Description
request_id Uuid yes
kind GdprRequestKind yes
due_at Timestamp yes

SessionRevokedPayload

Property Type Required Description
session_id Uuid yes
reason string yes Values: logout, admin, device_revoked, refresh_reuse, user_disabled, expired, inactive, step_up_failed, trusted_header_mismatch.

ReadStatePayload

Property Type Required Description
read_state ReadState yes

DraftPayload

Property Type Required Description
draft Draft yes

DraftDeletedPayload

Property Type Required Description
draft_id Uuid yes
thread_id Uuid no
channel_id Uuid yes

SettingsPayload

Property Type Required Description
setting UserSetting yes
deleted boolean no

SidebarPayload

Property Type Required Description
state SidebarState yes

NotificationPrefPayload

Property Type Required Description
preference NotificationPreference yes
deleted boolean no

QuietHoursPayload

Property Type Required Description
rules array of QuietHoursRule yes Complete list after the change, ascending by id.

GdprRequestPayload

Property Type Required Description
request GdprRequest yes

ImportProgressPayload

Property Type Required Description
import ImportSource yes

AgentInvocationPayload

Sent to the agent; the envelope carries a fresh invocation_token per delivery.

Property Type Required Description
run_id Uuid yes
thread_id Uuid yes
channel_id Uuid yes
space_id Uuid no
trigger_kind string yes Values: message, interaction, command.
message_id Uuid no Triggering message; the adapter reads its content with run.context.read (09, 4.6). Events outside resource message never carry message content (04, 2.2).
interaction_id Uuid no
command_invocation_id Uuid no
command_id Uuid no Triggering command; set exactly for trigger_kind = command.
command_name string no Name of the triggering command; set exactly for trigger_kind = command. Example: escalate.
options array of CommandOptionValue no Parsed option values in the order of the command definition; set exactly for trigger_kind = command.
triggered_by PrincipalRef yes
billing_mode BillingMode yes
agent_session AgentSession no The session row of the run (09, 9.1); absent for session_mode = new without a row and for a guest run. With started = false the adapter reuses its external_session_ref; its version is the If-Match of the first reportAgentSession.
session_mode string no session.mode of 09, 9.1: new creates the external session (with the reference of agent_session when present), resume continues it, bind takes over a session that no run used yet (rebinding, import; 9.5). Present exactly for a run of the thread's operator; a guest run has neither session_mode nor agent_session (09, 3.6). Values: new, resume, bind.
settings_version integer (int64) no Channel settings version; reload agent.config.read when newer than cached.

AgentFollowupPayload

Property Type Required Description
run_id Uuid yes
thread_id Uuid yes
message_id Uuid yes Follow-up message; the adapter reads its content with getMessage (message.read); its author is sub of the invocation token of this delivery.

RunCancelRequestedPayload

Property Type Required Description
run_id Uuid yes
thread_id Uuid yes
reason string yes Values: user_cancelled, access_revoked, agent_disabled, user_disabled, channel_read_only.
requested_by Uuid no

InteractionCreatedPayload

Property Type Required Description
interaction Interaction yes

CommandInvokedPayload

Property Type Required Description
invocation_id Uuid yes
command_id Uuid yes
command_name string yes Example: escalate.
control boolean yes
channel_id Uuid yes
thread_id Uuid no
run_id Uuid no Active run of the command owner in the thread at execution time; absent when the owner has none (R-AZ-25). Never the run of another agent. Always absent for app commands, because apps have no runs.
invoked_by PrincipalRef yes
options array of CommandOptionValue yes

AgentConfigChangedPayload

Property Type Required Description
channel_id Uuid yes
settings_version integer (int64) yes

TypingStartedPayload

Property Type Required Description
thread_id Uuid yes
principal_id Uuid yes
expires_at Timestamp yes

RunUpdatedPayload

Coalesced live-box patch. Either ops (from base_version to version) or a full snapshot.

Property Type Required Description
run_id Uuid yes
base_version integer (int64) no
version integer (int64) yes
ops array of JsonPatchOperation no
snapshot Run no

AgentPresencePayload

Property Type Required Description
agent_id Uuid yes
state AgentRuntimeState yes
reported_billing_mode BillingMode no

CommandAutocompleteRequestedPayload

Sent to one gateway connection of the command owner (04, 15.7); agents get an invocation token with trigger_kind = autocomplete in the delivery fields.

Property Type Required Description
request_id Uuid yes
command_id Uuid yes
channel_id Uuid yes
thread_id Uuid no
user_id Uuid yes
option string yes Example: ticket.
value string yes Example: 47.
options array of CommandOptionValue no
expires_at Timestamp yes

EventPage

Property Type Required Description
events array of Event yes
next_cursor integer (int64) yes Highest checked seq; use as after for the next call even if events is empty.
head_seq integer (int64) yes
sync_epoch Uuid yes Time line of the event log; a client stores it with its cursor (04, 7.5).

GatewayHello

Property Type Required Description
heartbeat_interval_ms integer (int64) yes Example: 30000.
resume_window_ms integer (int64) yes Example: 300000.
protocol_versions array of integer yes
dpop_nonce string yes Example: eyJ7S_zG.eyJH0-Z.HX4w-7v.
server_time Timestamp yes
sync_epoch Uuid yes Time line of the event log; a client stores it with its cursor (04, 7.5).

GatewayClientInfo

Property Type Required Description
platform DevicePlatform yes
version string yes Example: 1.4.0.

No other properties are allowed.

GatewayIdentify

People send access_token, dpop, device_id; agents and apps send api_token, consumer and dpop when the token is DPoP-bound.

Property Type Required Description
protocol_version integer yes Example: 1.
access_token string no
api_token string no
dpop string no DPoP proof with htm = GET, htu = HTTPS form of the gateway URL, nonce from hello, ath.
device_id Uuid no
consumer string no Pattern ^[a-z0-9][a-z0-9_-]*$. Example: default.
cursor integer (int64) no Last processed seq; absent on first connect.
sync_epoch Uuid no Epoch stored with the cursor; absent on first connect. A mismatch gives resync_required with epoch_changed.
client GatewayClientInfo no

No other properties are allowed.

GatewayReady

Property Type Required Description
gateway_session_id Uuid yes
principal PrincipalRef yes
device_id Uuid no
permission_version integer (int64) yes
head_seq integer (int64) yes
snapshot Snapshot yes
sync_epoch Uuid yes Time line of the event log; a client stores it with its cursor (04, 7.5).

GatewayResume

Property Type Required Description
gateway_session_id Uuid yes
access_token string no
api_token string no
dpop string no
cursor integer (int64) yes
sync_epoch Uuid no

No other properties are allowed.

GatewayResumed

Property Type Required Description
gateway_session_id Uuid yes
head_seq integer (int64) yes
sync_epoch Uuid yes Time line of the event log; a client stores it with its cursor (04, 7.5).

GatewayHeartbeat

Property Type Required Description
last_seq integer (int64) yes
agent Heartbeat no Agents only; equivalent to POST /agents/me/heartbeat. The liveness rules of the op run first (heartbeat_ack); then the agent part passes rl.agent_runtime and agent.heartbeat. Its errors (forbidden, validation_failed, rate_limited, internal_error) answer error and keep the connection. A heartbeat of an agent without this member changes no presence.

No other properties are allowed.

GatewayHeartbeatAck

Property Type Required Description
server_time Timestamp yes

GatewayReauth

Property Type Required Description
access_token string yes
dpop string yes

No other properties are allowed.

GatewayReauthRequired

Property Type Required Description
expires_at Timestamp yes
dpop_nonce string yes

GatewayFocus

Property Type Required Description
thread_ids array of Uuid yes Complete set of focused threads; replaces the previous set. More than sync.max_focused_threads ids answer error with validation_failed and keep the previous set.
idle boolean no True when the window is open but unused; live-box patches continue, but the person does not count as watching (13, 4.4).
background_thread_ids array of Uuid no Threads whose runs the app shows without their messages (control room cards, a run graph opened from a card). They get the run document and run.updated but no typing, never count as "Active in the thread" and are not part of the presence focus (13 4.4). Unreadable threads are ignored as in thread_ids; a thread in both lists counts as in thread_ids; both lists together hold at most sync.max_focused_threads distinct threads (04 6.2, R-SY-27).

No other properties are allowed.

GatewayTyping

Property Type Required Description
thread_id Uuid yes

No other properties are allowed.

GatewayAck

Property Type Required Description
seq integer (int64) yes Minimum 0.

No other properties are allowed.

GatewayRunUpdate

Property Type Required Description
run_id Uuid yes
base_version integer (int64) yes
ops array of JsonPatchOperation yes
ref string no Client reference echoed in error frames for this op.

No other properties are allowed.

GatewayAutocompleteResult

Answer of the command owner to command.autocomplete_requested (action command.autocomplete.respond).

Property Type Required Description
request_id Uuid yes
choices array of CommandChoice yes At most command.autocomplete_max_choices. Max items 25.
ref string no Client reference echoed in error frames for this op.

No other properties are allowed.

GatewayCursor

Property Type Required Description
seq integer (int64) yes

GatewayCatchupComplete

Property Type Required Description
head_seq integer (int64) yes

GatewayResyncRequired

Property Type Required Description
reason string yes Values: epoch_changed, retention, too_far_behind, cursor_ahead.
head_seq integer (int64) yes
sync_epoch Uuid yes Time line of the event log; a client stores it with its cursor (04, 7.5).

GatewayError

Property Type Required Description
op string yes Example: focus.
code string yes Same codes as REST problem types. Example: rate_limited.
detail string no
ref string no

PageLimit

Page size. Default api.page_size_default; larger values than api.page_size_max are capped.

Type: integer

Minimum 1.

ImageUpload

Image as the one multipart part file (a further part is rejected with 400 validation_failed). The server detects the type from the bytes; it accepts only JPEG and PNG, whose metadata it removes losslessly, and still WebP, which it converts to PNG or JPEG without metadata. Thumbnails are re-encoded. Any other detected type ends the file failed with file_type_denied.

Property Type Required Description
file string (binary) yes

No other properties are allowed.

IncomingWebhookResult

Property Type Required Description
message_id Uuid yes
thread_id Uuid yes The thread the message landed in; with a title in a text channel the new thread that starts from the message, which itself stands in the main thread.

StatsMetric

Metric of the own measurement in stats_minutes (docs/spec/25-visualization.md, section 3.2).

Type: string

Values: messages_created, threads_created, runs_started, runs_finished, tool_calls, approval_cards, cost, invocations_denied, billing_mode_switches, catchups, resyncs, slow_consumer_closes, sli.api_availability, sli.delivery_latency, sli.reconnect, sli.push_acceptance, sli.run_start, sli.turn_duration.

StatsScope

Property Type Required Description
kind string yes Values: instance, space.
space_id Uuid no

AgentRateLimitState

Rate-limit state of the agent runtime at its provider as reported by the adapter (agent_heartbeat.v1). Never quotas of an account, keys or subscription names.

Property Type Required Description
state string yes Values: ok, near_limit, limited, unknown.
resets_at Timestamp no

No other properties are allowed.

StatsLiveStep

Current step of a run; only kind and name (for tools the tool name), never title or detail.

Property Type Required Description
kind string yes Values: tool_call, status, subagent, workflow, background_job.
name string yes Example: Bash.

StatsLiveRun

Property Type Required Description
run_id Uuid yes
thread_id Uuid yes
channel_id Uuid yes
space_id Uuid yes
agent_id Uuid yes
state string yes Values: queued, running, waiting_input.
queued_at Timestamp yes
started_at Timestamp no
billing_mode BillingMode yes Mode used by the run, else the configured mode.
step StatsLiveStep no
approval_pending boolean yes An approval card of this run waits for a decision.
cost_micros integer (int64) no Cost so far; only with cost.read.aggregate.
currency string no Example: USD.
cost_is_estimate boolean no

StatsLiveAgent

Property Type Required Description
agent_id Uuid yes
presence AgentRuntimeState yes
billing_mode BillingMode yes
reported_billing_mode BillingMode no Absent when the adapter follows the configured mode per run.
rate_limit AgentRateLimitState no

StatsLiveRate

Sum of count (and sum where meaningful) of one metric over the last full minute and the current minute up to at.

Property Type Required Description
metric StatsMetric yes
dimension string no Dimension code; absent means all dimensions summed.
last_minute integer (int64) yes
current_minute integer (int64) yes
last_minute_sum integer (int64) no Sum of values (milliseconds or micro units) of the last full minute.
currency string no Only for metric cost.

StatsLiveSli

Property Type Required Description
metric StatsMetric yes
total integer (int64) yes
good integer (int64) yes
ratio number (double) no good / total; absent when total is 0.

StatsLiveConnections

Gateway connections of this node; only with cluster.mode = single.

Property Type Required Description
user integer yes
agent integer yes
app integer yes

StatsLiveFrame

Live frame (docs/spec/25-visualization.md, section 5.2). No person values, no content.

Property Type Required Description
at Timestamp yes
interval_ms integer yes Example: 1000.
scope StatsScope yes
runs array of StatsLiveRun yes
runs_truncated boolean yes
agents array of StatsLiveAgent yes
rates array of StatsLiveRate yes
sli array of StatsLiveSli no Only for the instance scope.
connections StatsLiveConnections no

StatsTimelineBucket

One row of stats_minutes.

Property Type Required Description
start Timestamp yes
metric StatsMetric yes
channel_id Uuid no
agent_id Uuid no
dimension string yes Code from the closed list per metric; empty string when the metric has none.
currency string no
count integer (int64) yes
sum integer (int64) yes
good integer (int64) yes

StatsTimelineRun

Property Type Required Description
run_id Uuid yes
channel_id Uuid yes
agent_id Uuid yes
queued_at Timestamp yes
started_at Timestamp no
finished_at Timestamp no
state RunState yes

StatsTimeline

Property Type Required Description
from Timestamp yes
to Timestamp yes
buckets array of StatsTimelineBucket yes
runs array of StatsTimelineRun yes Runs of the visible channels whose interval from queued_at to finished_at (now for an unfinished run) intersects the range, ordered by queued_at, then run_id; at most stats.timeline_max_runs.
runs_truncated boolean yes True when more runs intersect the range than runs holds.

StatsSloState

Traffic light of one SLO (docs/spec/25-visualization.md, section 6.4).

Type: string

Values: green, amber, red, insufficient_data.

StatsSloEntry

Property Type Required Description
slo string yes service/name of the Sloth file. Example: bothy-sync/delivery-latency.
metric StatsMetric yes
objective number (double) yes Objective in percent from the Sloth file.
threshold_ms integer no Threshold of a latency SLO; absent for ratio SLOs.
period_days integer yes
total integer (int64) yes
good integer (int64) yes
ratio number (double) no
budget_remaining number (double) no Remaining error budget, 1 - (1 - ratio) / (1 - objective/100); may be negative.
state StatsSloState yes

StatsSloReport

Property Type Required Description
at Timestamp yes
measured_by string yes Always own; the values come from the own measurement, not from Prometheus. Values: own.
items array of StatsSloEntry yes

StatsBackendCost

Property Type Required Description
billing_mode BillingMode yes
currency string yes
amount_micros integer (int64) yes
is_estimate boolean yes

StatsBackendDenials

Property Type Required Description
i2_denied integer (int64) yes
billing_mode_mismatch integer (int64) yes

StatsBackendAgent

Property Type Required Description
agent_id Uuid yes
billing_mode BillingMode yes
reported_billing_mode BillingMode no
billing_modes_supported array of BillingMode yes
switches integer (int64) yes Billing mode switches in the range.
invocations_denied StatsBackendDenials yes
costs array of StatsBackendCost no Only with cost.read.aggregate.
rate_limit AgentRateLimitState no

StatsBackendReport

Property Type Required Description
items array of StatsBackendAgent yes

GatewayStatsSubscribe

Subscribe to stats.live; without space_id the instance (owner). Replaces an earlier subscription of the connection.

Property Type Required Description
space_id Uuid no

No other properties are allowed.

GatewayStatsUnsubscribe

End the stats.live subscription of the connection.

Type: object

No other properties are allowed.

StatsLiveEvent

Ephemeral event stats.live (no seq, at most once), only to connections with a subscription.

All of: EventEnvelope

Property Type Required Description
type string yes Values: stats.live.
payload StatsLiveFrame yes

StatsGranularity

Size of a statistics bucket.

Type: string

Values: hour, day, week, month.

IdentityProviderKind

Kind of identity provider (B9).

Type: string

Values: oidc, trusted_header, local.

ForumSort

Sort order of forum posts.

Type: string

Values: last_activity, created.

AgentRuntimeState

State derived from heartbeats.

Type: string

Values: unknown, online, degraded, offline.

SigningKeyPurpose

Purpose of a server signing key (03 server_signing_keys.purpose). terminal signs terminal session tokens (24 section 5.3); audit_checkpoint signs audit checkpoints (19 SEC-AUD-7).

Type: string

Values: access_token, invocation, terminal, webhook_out, audit_checkpoint.

UserStatus

Type: string

Values: pending, active, disabled, deleted.

GroupSource

Type: string

Values: local, oidc_claim.

LevelOrNone

Level including none for no access.

Type: string

Values: none, read, write, trigger.

AccessTargetKind

host appears only in access.changed and access.expiring (terminal capability, no level).

Type: string

Values: space, channel, host.

OperatorMode

inherit takes the default operator of the space (channels only).

Type: string

Values: inherit, none, agent.

ThreadState

Type: string

Values: open, closed.

TranscriptStatus

Type: string

Values: none, pending, done, failed.

TranscriptSource

Type: string

Values: agent, service.

SearchHitKind

Type: string

Values: message, thread, file.

PushProvider

Type: string

Values: apns, fcm, unifiedpush, wns.

PushEnvironment

Type: string

Values: production, sandbox.

ComponentType

Type: string

Values: button, select, form.

ComponentRestriction

run_starter: only the person who started the run, or an owner. owner: only owners.

Type: string

Values: any, run_starter, owner.

CommandLevel

Type: string

Values: write, trigger.

WebhookDeliveryStatus

Type: string

Values: pending, succeeded, failed, dead.

AuditDecision

Type: string

Values: allow, deny, error.

PriceUnit

Type: string

Values: input_mtok, output_mtok, cache_read_mtok, cache_write_mtok, cache_write_1h_mtok, request.

StatusIncidentKind

Type: string

Values: incident, maintenance.

StatusIncidentImpact

Type: string

Values: none, minor, major, critical.

ImportKind

Type: string

Values: discord, archive.

ImportItemState

Type: string

Values: pending, posted, skipped, failed.

ImportObject

Property Type Required Description
origin_key string yes Example: message:1029384756.
item_kind string yes Values: space, channel, forum_tag, thread, message, user, pin.
content_sha256 string no Hex SHA-256 of the converted content; a different value on a later run is counted as changed at the source.
data JsonObject yes Fields of the target object, schema import_object.<item_kind>.v1 (22, sections 5 and 6). Structure items use ImportSpaceData (space), ImportChannelData (channel), ImportForumTagData (forum_tag) and ImportUserData (user); content items ImportThreadData (thread), ImportMessageData (message) and ImportPinData (pin).

No other properties are allowed.

ImportBatch

One transaction. Objects of one thread, in source order; structure objects (space, channel, forum tag, person) come in batches without thread_origin_key.

Property Type Required Description
thread_origin_key string no thread:<id> for a thread or forum post, channel:<id> for the main thread of a text channel; absent for a structure batch. Example: thread:1029384700.
items array of ImportObject yes At most import.batch_max_items. Min items 1; max items 100.

No other properties are allowed.

ImportBatchResult

Property Type Required Description
items array of ImportItem yes
unread_floor_seq integer (int64) no New threads.unread_floor_seq of the thread of this batch.

ImportFileCreate

Property Type Required Description
origin_key string yes Example: file:1029384799.
channel_id Uuid yes
author_id Uuid yes
name string yes Example: report.pdf.
size_bytes integer (int64) yes Minimum 1.
sha256 string yes Lowercase hex SHA-256 of the bytes (file_upload_sessions.declared_sha256); the scan checks the bytes against it. Pattern ^[0-9a-f]{64}$.
declared_mime_type string no Example: application/pdf.

No other properties are allowed.

ImportFileSlot

The pending item reserves the file ID; a repeated call with the same key returns the same ID (22, 7.2).

Property Type Required Description
item ImportItem yes
upload UploadSession no Absent when the file is already posted. Its part URLs name uploadImportFilePart.

ImportThreadData

Data of a thread item (22, 5.1.1). The title is name cut to thread.title_max_chars, title_source is auto for a placeholder name and manual otherwise; the operator is the planned operator of the channel in the mapping; parent_message_id is the starter message only when its item is posted in the main thread of the same channel; the tags are the posted forum_tag items of the same channel. A posted thread only follows the mirror rules of 22 12.2 step 3.

Property Type Required Description
channel_origin_key string yes Example: channel:1029384600.
name string yes Example: Login fails on mobile.
created_at Timestamp yes
last_activity_at Timestamp yes
closed boolean yes The archive rule of the tool (22 5.1.1, R-IM-11).
closed_at Timestamp no Required exactly when closed is true.
starter_message_origin_key string no Example: message:1029384700.
tag_origin_keys array of string no
earlier_session ImportEarlierSession no

No other properties are allowed.

ImportEarlierSession

The agent session the thread had before the migration (22, 9 step 1; --sessions of the tool). The server writes one earlier agent_sessions row (is_current = false, started = true, ended_at = the time of the batch, end_reason = import, the cost baseline) exactly once per thread, agent and reference, also for a thread posted by an earlier run, and never after the thread has had a current session; the item member session names the outcome. agent_id must be the operator of the thread (threads.operator_agent_id), else 400 validation_failed at /items/<i>/data/earlier_session/agent_id. The reference is opaque, at most agent.session_ref_max_bytes bytes, and is never logged.

Property Type Required Description
agent_id Uuid yes
external_session_ref string yes Min length 1. Example: sess-7f3a.
cost_baseline_micros integer (int64) no The cumulative amount of the external session before the binding, in micro units of currency (22, 9 step 7); absent means 0. Minimum 0; maximum 9007199254740991. Example: 1250000.
currency string no ISO 4217 code of cost_baseline_micros; required when it is above 0. Pattern ^[A-Z]{3}$. Example: USD.

No other properties are allowed.

ImportMessageData

Data of a message item (22, 6.2). The message gets origin = import, kind = text, silent, no mentions and no trigger_state; content_md is stored as given (at most message.max_content_bytes, never split); the reply target must be a posted message of the same thread; the files must be posted file items of this source uploaded for the channel of the thread by the author, at most message.max_attachments.

Property Type Required Description
author_origin_key string yes Example: user:1029384000.
content_md string yes Example: The invoice export fails..
created_at Timestamp yes
edited_at Timestamp no
reply_to_origin_key string no Example: message:1029384701.
attachment_file_ids array of Uuid no

No other properties are allowed.

ImportPinData

Data of a pin item (22, 6.6); pinned_by is the importing owner.

Property Type Required Description
message_origin_key string yes Example: message:1029384756.

No other properties are allowed.

ImportCursorSet

Property Type Required Description
cursor JsonObject yes Progress per source channel and thread; only after a successful batch.
stats JsonObject no

No other properties are allowed.

ImportLeadSet

Property Type Required Description
source_channel string yes ID of the channel in the source. Example: 1029384000.
lead string yes discord: the source leads, the channel here is read-only and mirrored; bothy: this server leads (22, 12.1). Values: discord, bothy.

No other properties are allowed.

ImportSourceDiscordConfig

Mapping file of schema import_source.discord.v1 as JSON (22, 5.2); the web console converts the YAML of the owner. It holds no secret.

Property Type Required Description
version integer yes Values: 1.
guild_id ImportDiscordId yes
defaults object yes
defaults.unmapped_human string yes Values: placeholder, skip.
defaults.unmapped_bot string yes Values: placeholder, skip.
defaults.uncategorized_space string yes skip or the discord_category of an entry in spaces. Example: skip.
spaces array of object no
spaces[].discord_category ImportDiscordId yes
spaces[].target ImportMappingTarget yes
channels array of object no
channels[].discord_channel ImportDiscordId yes
channels[].target ImportMappingTarget yes
channels[].planned_operator string no agent:<handle> of an active agent or none (default). Example: agent:lotse.
channels[].lead string no Values: discord, bothy. Default: discord.
users array of object no
users[].discord_user ImportDiscordId yes
users[].target string yes user:<handle>, agent:<handle> or placeholder. Example: user:alex.

No other properties are allowed.

ImportDiscordId

A Discord snowflake as a string of digits.

Type: string

Pattern ^[0-9]+$. Example: 1029384000.

ImportMappingTarget

Exactly one of the string skip, {create: {name}} or {existing: <uuid>} (22, 5.2). The server checks the form and reports a violation at the pointer of the member.

Type: any

ImportSpaceData

data of a space item (origin key space:<category_id>). Exactly one of name (a new space as the mapping says create) and existing_space_id (equal to the mapping's existing).

Property Type Required Description
name string no
sort_key string yes Fractional index key of the space order, derived by the tool from the Discord position. Example: a0.
existing_space_id Uuid no

No other properties are allowed.

ImportChannelData

data of a channel item (origin key channel:<channel_id>). The space is the target of the posted item space_origin_key or, without it, of the category named in defaults.uncategorized_space; existing_space_id and existing_channel_id must equal the stored mapping. read_only is not a member: the server derives it from the stored lead.

Property Type Required Description
space_origin_key string no Example: space:1029384001.
existing_space_id Uuid no
name string no
kind string yes Values: text, forum.
topic string no
sort_key string yes Fractional index key of the order in the space. Example: a0.
existing_channel_id Uuid no

No other properties are allowed.

ImportForumTagData

data of a forum_tag item (origin key forum_tag:<channel_id>:<tag_id>). A tag with the same name, without regard to case, is adopted (22, 6.6). emoji is accepted and not stored (forum tags have no emoji).

Property Type Required Description
channel_origin_key string yes Example: channel:1029384000.
name string yes
emoji string no

No other properties are allowed.

ImportUserData

data of a user item (origin key user:<user_id>). The target comes from the stored mapping and its defaults; a webhook author is always a placeholder (22, 5.3).

Property Type Required Description
discord_kind string yes Values: user, bot, webhook.
username string yes
global_name string no

No other properties are allowed.

GdprRequestKind

Type: string

Values: export, deletion, rectification.

GdprRequestState

Type: string

Values: requested, approved, running, completed, failed, rejected, cancelled.

MessageCreatedEvent

Durable event message.created.

All of: EventEnvelope

Property Type Required Description
type string yes Values: message.created.
payload MessagePayload yes

MessageUpdatedEvent

Durable event message.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: message.updated.
payload MessagePayload yes

MessageDeletedEvent

Durable event message.deleted.

All of: EventEnvelope

Property Type Required Description
type string yes Values: message.deleted.
payload MessageDeletedPayload yes

ReactionAddedEvent

Durable event reaction.added.

All of: EventEnvelope

Property Type Required Description
type string yes Values: reaction.added.
payload ReactionPayload yes

ReactionRemovedEvent

Durable event reaction.removed.

All of: EventEnvelope

Property Type Required Description
type string yes Values: reaction.removed.
payload ReactionPayload yes

PinAddedEvent

Durable event pin.added.

All of: EventEnvelope

Property Type Required Description
type string yes Values: pin.added.
payload PinPayload yes

PinRemovedEvent

Durable event pin.removed.

All of: EventEnvelope

Property Type Required Description
type string yes Values: pin.removed.
payload PinPayload yes

ThreadCreatedEvent

Durable event thread.created.

All of: EventEnvelope

Property Type Required Description
type string yes Values: thread.created.
payload ThreadPayload yes

ThreadUpdatedEvent

Durable event thread.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: thread.updated.
payload ThreadPayload yes

ThreadClosedEvent

Durable event thread.closed.

All of: EventEnvelope

Property Type Required Description
type string yes Values: thread.closed.
payload ThreadPayload yes

ThreadReopenedEvent

Durable event thread.reopened.

All of: EventEnvelope

Property Type Required Description
type string yes Values: thread.reopened.
payload ThreadPayload yes

ThreadMovedEvent

Durable event thread.moved.

All of: EventEnvelope

Property Type Required Description
type string yes Values: thread.moved.
payload ThreadMovedPayload yes

ThreadMovedOutEvent

Durable event thread.moved_out.

All of: EventEnvelope

Property Type Required Description
type string yes Values: thread.moved_out.
payload ThreadMovedOutPayload yes

AgentSessionChangedEvent

Durable event agent_session.changed.

All of: EventEnvelope

Property Type Required Description
type string yes Values: agent_session.changed.
payload AgentSessionChangedPayload yes

RunStateChangedEvent

Durable event run.state_changed.

All of: EventEnvelope

Property Type Required Description
type string yes Values: run.state_changed.
payload RunStateChangedPayload yes

SpaceCreatedEvent

Durable event space.created.

All of: EventEnvelope

Property Type Required Description
type string yes Values: space.created.
payload SpacePayload yes

SpaceUpdatedEvent

Durable event space.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: space.updated.
payload SpacePayload yes

SpaceArchivedEvent

Durable event space.archived.

All of: EventEnvelope

Property Type Required Description
type string yes Values: space.archived.
payload SpacePayload yes

ChannelCreatedEvent

Durable event channel.created.

All of: EventEnvelope

Property Type Required Description
type string yes Values: channel.created.
payload ChannelPayload yes

ChannelUpdatedEvent

Durable event channel.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: channel.updated.
payload ChannelPayload yes

ChannelSettingsChangedEvent

Durable event channel.settings_changed.

All of: EventEnvelope

Property Type Required Description
type string yes Values: channel.settings_changed.
payload ChannelSettingsChangedPayload yes

ChannelArchivedEvent

Durable event channel.archived.

All of: EventEnvelope

Property Type Required Description
type string yes Values: channel.archived.
payload ChannelPayload yes

CommandChangedEvent

Durable event command.changed.

All of: EventEnvelope

Property Type Required Description
type string yes Values: command.changed.
payload CommandChangedPayload yes

FileUpdatedEvent

Durable event file.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: file.updated.
payload FilePayload yes

UserUpdatedEvent

Durable event user.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: user.updated.
payload UserPayload yes

AgentUpdatedEvent

Durable event agent.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: agent.updated.
payload AgentPayload yes

InstanceUpdatedEvent

Durable event instance.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: instance.updated.
payload InstanceUpdatedPayload yes

StatusUpdatedEvent

Durable event status.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: status.updated.
payload StatusUpdatedPayload yes

GrantChangedEvent

Durable event grant.changed.

All of: EventEnvelope

Property Type Required Description
type string yes Values: grant.changed.
payload GrantChangedPayload yes

GroupChangedEvent

Durable event group.changed.

All of: EventEnvelope

Property Type Required Description
type string yes Values: group.changed.
payload GroupChangedPayload yes

AccessChangedEvent

Durable event access.changed.

All of: EventEnvelope

Property Type Required Description
type string yes Values: access.changed.
payload AccessChangedPayload yes

AccessExpiringEvent

Durable event access.expiring.

All of: EventEnvelope

Property Type Required Description
type string yes Values: access.expiring.
payload AccessExpiringPayload yes

DevicePendingEvent

Durable event device.pending.

All of: EventEnvelope

Property Type Required Description
type string yes Values: device.pending.
payload DevicePendingPayload yes

SessionRevokedEvent

Durable event session.revoked.

All of: EventEnvelope

Property Type Required Description
type string yes Values: session.revoked.
payload SessionRevokedPayload yes

ReadStateUpdatedEvent

Durable event read_state.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: read_state.updated.
payload ReadStatePayload yes

DraftUpdatedEvent

Durable event draft.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: draft.updated.
payload DraftPayload yes

DraftDeletedEvent

Durable event draft.deleted.

All of: EventEnvelope

Property Type Required Description
type string yes Values: draft.deleted.
payload DraftDeletedPayload yes

SettingsUpdatedEvent

Durable event settings.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: settings.updated.
payload SettingsPayload yes

SidebarUpdatedEvent

Durable event sidebar.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: sidebar.updated.
payload SidebarPayload yes

NotificationPrefUpdatedEvent

Durable event notification_pref.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: notification_pref.updated.
payload NotificationPrefPayload yes

QuietHoursUpdatedEvent

Durable event quiet_hours.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: quiet_hours.updated.
payload QuietHoursPayload yes

GdprRequestUpdatedEvent

Durable event gdpr.request_updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: gdpr.request_updated.
payload GdprRequestPayload yes

GdprRequestDueEvent

Durable event gdpr.request_due.

All of: EventEnvelope

Property Type Required Description
type string yes Values: gdpr.request_due.
payload GdprRequestDuePayload yes

ImportProgressEvent

Durable event import.progress.

All of: EventEnvelope

Property Type Required Description
type string yes Values: import.progress.
payload ImportProgressPayload yes

AgentInvocationEvent

Durable event agent.invocation.

All of: EventEnvelope

Property Type Required Description
type string yes Values: agent.invocation.
payload AgentInvocationPayload yes

AgentFollowupEvent

Durable event agent.followup.

All of: EventEnvelope

Property Type Required Description
type string yes Values: agent.followup.
payload AgentFollowupPayload yes

RunCancelRequestedEvent

Durable event run.cancel_requested.

All of: EventEnvelope

Property Type Required Description
type string yes Values: run.cancel_requested.
payload RunCancelRequestedPayload yes

InteractionCreatedEvent

Durable event interaction.created.

All of: EventEnvelope

Property Type Required Description
type string yes Values: interaction.created.
payload InteractionCreatedPayload yes

CommandInvokedEvent

Durable event command.invoked.

All of: EventEnvelope

Property Type Required Description
type string yes Values: command.invoked.
payload CommandInvokedPayload yes

AgentConfigChangedEvent

Durable event agent.config_changed.

All of: EventEnvelope

Property Type Required Description
type string yes Values: agent.config_changed.
payload AgentConfigChangedPayload yes

TypingStartedEvent

Ephemeral event typing.started (no seq, at most once).

All of: EventEnvelope

Property Type Required Description
type string yes Values: typing.started.
payload TypingStartedPayload yes

RunUpdatedEvent

Ephemeral event run.updated (no seq, at most once).

All of: EventEnvelope

Property Type Required Description
type string yes Values: run.updated.
payload RunUpdatedPayload yes

AgentPresenceChangedEvent

Ephemeral event agent.presence_changed (no seq, at most once).

All of: EventEnvelope

Property Type Required Description
type string yes Values: agent.presence_changed.
payload AgentPresencePayload yes

CommandAutocompleteRequestedEvent

Ephemeral event command.autocomplete_requested (no seq, at most once).

All of: EventEnvelope

Property Type Required Description
type string yes Values: command.autocomplete_requested.
payload CommandAutocompleteRequestedPayload yes

NotificationCreatedEvent

Ephemeral event notification.created (no seq, at most once), only to connections of the recipient instead of a push (13, 6.3).

All of: EventEnvelope

Property Type Required Description
type string yes Values: notification.created.
payload NotificationCreatedPayload yes

NotificationCreatedPayload

Property Type Required Description
nid Uuid yes
kind NotificationKind yes
thread_id Uuid no Thread of the hint; absent for hints without a thread.
message_id Uuid no Message the hint points at; absent when the hint points at no message.
target_id Uuid no Target of a hint without a thread: the waiting device for security, the grant or group of the reminder for admin (R-AZ-30).
quiet boolean yes Inside quiet hours; show without sound.
count integer yes 1, or the unread count of a bundled hint (13 4.5).
space_name string no
channel_name string no
thread_title string no
sender_display_name string no
excerpt string no Plain text, at most notify.preview_max_chars; only with notify.preview_mode = full.
attachment_count integer no
image_url string (uri-reference) no Fetch ticket for the small variant of the first image.

NotificationKind

Type: string

Values: message, mention, dm, run_done, run_failed, input_needed, security, admin.

PushPreview

Preview for the notification extension, fields depend on notify.preview_mode (13, 6.4).

Property Type Required Description
kind NotificationKind yes
thread_id Uuid no
message_id Uuid no
badge integer yes
space_name string no
channel_name string no
thread_title string no
sender_display_name string no
excerpt string no
attachment_count integer no
image_url string (uri-reference) no Fetch ticket for the small variant of the first image.

Event

Any durable event, discriminated by type. Clients skip unknown types and still advance their cursor.

One of: MessageCreatedEvent, MessageUpdatedEvent, MessageDeletedEvent, ReactionAddedEvent, ReactionRemovedEvent, PinAddedEvent, PinRemovedEvent, ThreadCreatedEvent, ThreadUpdatedEvent, ThreadClosedEvent, ThreadReopenedEvent, ThreadMovedEvent, ThreadMovedOutEvent, AgentSessionChangedEvent, RunStateChangedEvent, SpaceCreatedEvent, SpaceUpdatedEvent, SpaceArchivedEvent, ChannelCreatedEvent, ChannelUpdatedEvent, ChannelSettingsChangedEvent, ChannelArchivedEvent, CommandChangedEvent, FileUpdatedEvent, UserUpdatedEvent, AgentUpdatedEvent, InstanceUpdatedEvent, StatusUpdatedEvent, GrantChangedEvent, GroupChangedEvent, AccessChangedEvent, AccessExpiringEvent, DevicePendingEvent, SessionRevokedEvent, ReadStateUpdatedEvent, DraftUpdatedEvent, DraftDeletedEvent, SettingsUpdatedEvent, SidebarUpdatedEvent, NotificationPrefUpdatedEvent, QuietHoursUpdatedEvent, GdprRequestUpdatedEvent, GdprRequestDueEvent, ImportProgressEvent, AgentInvocationEvent, AgentFollowupEvent, RunCancelRequestedEvent, InteractionCreatedEvent, CommandInvokedEvent, AgentConfigChangedEvent, HostUpdatedEvent, TerminalSessionChangedEvent

Discriminator: type

MentionItemPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of MentionItem yes
next_cursor Cursor no

UserPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of User yes
next_cursor Cursor no

DevicePage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of Device yes
next_cursor Cursor no

SessionPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of Session yes
next_cursor Cursor no

ApiTokenPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of ApiToken yes
next_cursor Cursor no

GroupPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of Group yes
next_cursor Cursor no

GroupMemberPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of GroupMember yes
next_cursor Cursor no

PermissionHintKind

Kind of a permission hint (07 section 9.5), in the order of the list.

Type: string

Values: h1_read_horizon, grant_to_disabled, trigger_blocked, agent_personal.

PermissionHint

One permission hint. h1_read_horizon names agent_id, person_id, space_id and channel_id (the person can learn content of the channel through the agent, 07 section 6). grant_to_disabled and trigger_blocked carry the grant; trigger_blocked names the blocking rules (SR2 tool class, SR3 dev isolation). agent_personal names agent_id, credential_holder_id (absent when the agent has none) and the trigger_set (I1 asks for exactly the holder).

Property Type Required Description
kind PermissionHintKind yes
agent_id Uuid no
person_id Uuid no
space_id Uuid no
channel_id Uuid no
grant Grant no
rules array of string no Values: sr2, sr3.
credential_holder_id Uuid no
trigger_set array of Uuid no The people with effective trigger on a target the agent serves, ascending.

AccessLabel

Name of a group or space named on a page.

Property Type Required Description
id Uuid yes
name string yes Example: Support.

ChannelLabel

Name and space of a channel named on a page.

Property Type Required Description
id Uuid yes
space_id Uuid yes
name string yes Example: Intern.

AccessLabels

The names of the principals, groups, spaces and channels a page of hints or expiring access names, as the administration lists show them; never content.

Property Type Required Description
principals array of PrincipalRef yes
groups array of AccessLabel yes
spaces array of AccessLabel yes
channels array of ChannelLabel yes

PermissionHintPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of PermissionHint yes
labels AccessLabels yes
next_cursor Cursor no

ExpiringAccessItem

One access that expires within authz.expiry_reminder_lead. grant carries the grant; membership names membership_id, group_id and user_id; token names token_id and the holder principal_id (an agent or an app), never the token value.

Property Type Required Description
kind string yes Values: grant, membership, token.
expires_at Timestamp yes
grant Grant no
membership_id Uuid no
group_id Uuid no
user_id Uuid no
token_id Uuid no
principal_id Uuid no

ExpiringAccessPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of ExpiringAccessItem yes
labels AccessLabels yes
next_cursor Cursor no

GrantPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of Grant yes
next_cursor Cursor no

SpaceViewList

Property Type Required Description
items array of SpaceView yes

ChannelViewList

Property Type Required Description
items array of ChannelView yes

ThreadPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of Thread yes
next_cursor Cursor no

RunSummaryPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of RunSummary yes
next_cursor Cursor no

PinList

Property Type Required Description
items array of Pin yes

ReactionPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of Reaction yes
next_cursor Cursor no

SearchHitPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of SearchHit yes
next_cursor Cursor no
candidates_capped boolean no The candidate limit search.max_candidates was reached; ask for a narrower query.

ThreadTitleHitList

Property Type Required Description
items array of object yes
items[].thread_id Uuid yes
items[].channel_id Uuid yes
items[].title string yes Example: Invoice export fails.
items[].last_activity_at Timestamp yes

AgentPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of Agent yes
next_cursor Cursor no

AgentChannelConfigList

Property Type Required Description
items array of AgentChannelConfig yes

AppPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of App yes
next_cursor Cursor no

WebhookDeliveryPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of WebhookDelivery yes
next_cursor Cursor no

AuditEventPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of AuditEvent yes
next_cursor Cursor no

ImportSourcePage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of ImportSource yes
next_cursor Cursor no

ImportItemPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of ImportItem yes
next_cursor Cursor no

GdprRequestPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of GdprRequest yes
next_cursor Cursor no

HostState

Life cycle of a host (24, 3.1). Only active allows sessions.

Type: string

Values: pairing, confirming, active, disabled, retired.

LlmCredentials

Owner declaration of the LLM login on a host (24, 7.2). personal needs credential_holder_id (I6).

Type: string

Values: none, personal, organization.

HostPlatform

Type: string

Values: macos, linux, windows.

HostProfile

Profile reported by the host service (host_profiles.v1). Never a command line, path or environment.

Property Type Required Description
name string yes Pattern ^[a-z0-9][a-z0-9_-]*$. Example: shell.
display_name string yes Example: Shell.
kind string yes Values: shell, claude, command.

No other properties are allowed.

HostDoctorCheck

Result of one self-check of the host service (host_doctor.v1, checks HD1 to HD11 in 24, 2.2). Codes and, following the rule for names (24, 2.2), the name of each account a person with a terminal can cause the finding in; never content, paths or values. When HD6 or HD11 fails, the list has one entry per affected session user; when HD10 fails with a wrong peer, one entry per session user of that channel; when HD9 fails, one entry per former session user whose home can be listed, plus one entry without a name for any other user; check and session_user together are unique in the list.

Property Type Required Description
check string yes Values: hd1_user, hd2_groups, hd3_sudo, hd4_state_dir, hd5_server_host, hd6_llm_login, hd7_profiles, hd8_separation, hd9_foreign_homes, hd10_helper_integrity, hd11_shared_locations.
ok boolean yes
code string no Pattern ^[a-z0-9_]+$. Example: subscription_login_detected.
session_user string no Only when not passed: the account the rule for names gives (see the schema; 24, 2.2 and 7.4). A name, never a path. Pattern ^[A-Za-z0-9_][A-Za-z0-9_.-]*$. Example: bothy-s-robin.

HostSessionUserAssign

Assigns a person their own session user on a host (ruling T12, 24 section 2.2). The name must be one the host reported (reported_session_users); any other name gives 400 validation_failed with errors[].code session_user_not_on_host, and nothing is stored.

Property Type Required Description
user_id Uuid yes
os_user string yes Operating system user name from host_service.session_users; at most host.os_user_max_chars characters; never a path. Pattern ^[A-Za-z0-9_][A-Za-z0-9_.-]*$. Example: bothy-s-robin.

No other properties are allowed.

HostSessionUser

A valid assignment of a person to their own session user on the host (ruling T12, 24 section 2.2).

Property Type Required Description
user_id Uuid yes
os_user string yes Example: bothy-s-robin.
created_at Timestamp yes

HostReportedSessionUser

A session user the host service reports (host_reported_session_users.v1, 24 section 2.2), with the display names of its own working directories of the claude profile (ruling T13). Names only, never paths.

Property Type Required Description
os_user string yes Operating system user name from host_service.session_users. Pattern ^[A-Za-z0-9_][A-Za-z0-9_.-]*$. Example: bothy-s-robin.
workdirs array of string yes Display names of the working directories of this session user in host_service.claude_workdirs after check HD7, in their order (a directory listed under two session users is dropped from both lists); empty means no claude profile for this session user. A client sends the index into its own list, never a path; the host service resolves the index in exactly this list (24, 2.2 and 5.3).

No other properties are allowed.

Host

A connected host. Keys are public; the client pins noise_public_key per device (24, 5.5).

Property Type Required Description
id Uuid yes
name string yes Example: Build server.
state HostState yes
disabled_reason string no Present exactly with state = disabled. duplicate_connection means a second live control connection with the same keys; only re-pairing helps (24, 3.4). Values: owner, duplicate_connection.
platform HostPlatform no
assigned_user_id Uuid no Person the host is assigned to (SR10); absent means owners only.
llm_credentials LlmCredentials yes
credential_holder_id Uuid no Present exactly with llm_credentials = personal.
declared_server_host boolean yes
reported_is_server_host boolean no Report of the host service (24, 2.3); absent before the first report.
noise_public_key string no Static X25519 key of the host, 32 bytes base64url without padding; absent while the host has no keys (before pairing and after a re-pairing or the fallback of confirmHost). Example: Zm9vYmFyZm9vYmFyZm9vYmFyZm9vYmFyZm9vYmFyMTI.
key_fingerprint string no Fingerprint of the stored keys (24, 4.3), 13 groups of four Crockford base32 characters; absent while the host has no keys. Example: 7K2Q-M9XD-0000-0000-0000-0000-0000-0000-0000-0000-0000-0000-0000.
key_generation integer yes Example: 1.
profiles array of HostProfile yes
doctor array of HostDoctorCheck yes One entry per check HD1 to HD11; a failed HD6, HD9, HD10 or HD11 has one entry per account named by the rule for names (24, 2.2).
session_users array of HostSessionUser no Valid session user assignments (ruling T12), visible like every other member to everyone with host.read. Absent when there is none.
reported_session_users array of HostReportedSessionUser no Session users the host service reported at pairing and in its last report (24 section 2.2). An assignment works only while its name is in this list (SR12); confirmHost and updateHost accept only these names. Absent before pairing.
require_local_confirm boolean no Report whether host_service.require_local_confirm is on.
connected boolean yes Usable for sessions, from the first report after ready to the end of the control connection (24, 3.5).
host_version string no Example: 1.0.0.
os_version string no Example: Debian 13.
last_seen_at Timestamp no
created_at Timestamp yes
version integer (int64) yes

HostPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of Host yes
next_cursor Cursor no

HostCreate

Property Type Required Description
name string yes Example: Build server.
assigned_user_id Uuid no
reason string yes Example: Shared build machine for Alex.

No other properties are allowed.

HostPairingCode

The pairing code is shown exactly once; the server stores only its HMAC.

Property Type Required Description
host_id Uuid yes
pairing_code string yes Pattern ^bothy_hpc_[0-9A-Za-z]{43}_[0-9A-Za-z]{6}$. Example: bothy_hpc_EXAMPLE000000000000000000000000000000000000_EXAMPL.
expires_at Timestamp yes

HostPairRequest

Property Type Required Description
pairing_code string yes Pattern ^bothy_hpc_[0-9A-Za-z]{43}_[0-9A-Za-z]{6}$.
noise_public_key string yes Static X25519 public key, 32 bytes base64url without padding.
auth_public_jwk JsonObject yes Ed25519 public key as JWK (kty = OKP, crv = Ed25519); a private member is rejected.
platform HostPlatform yes
os_version string no
host_version string yes Example: 1.0.0.
profiles array of HostProfile yes
session_users array of HostReportedSessionUser yes The session users of host_service.session_users with the display names of their working directories (24 section 2.2).

No other properties are allowed.

HostPairResult

Property Type Required Description
host_id Uuid yes
key_fingerprint string yes
instance_id Uuid yes

HostUpdate

Members that are absent stay unchanged. To remove the assignee send clear_assigned_user (no JSON null, ADR 0053).

Property Type Required Description
name string no
assigned_user_id Uuid no
clear_assigned_user boolean no
add_session_users array of HostSessionUserAssign no New session user assignments (ruling T12).
revoke_session_users array of Uuid no People whose session user assignment ends; their names stay taken on this host.
reason string yes

No other properties are allowed.

HostConfirm

Property Type Required Description
fingerprint_prefix string yes First terminal.fingerprint_confirm_chars characters of the fingerprint without separators, case-insensitive. Example: 7K2QM9XD.
llm_credentials LlmCredentials yes
credential_holder_id Uuid no
declared_server_host boolean yes
session_users array of HostSessionUserAssign no Session user per person (ruling T12); a person without one gets no terminal on the host (SR12).
reason string yes

No other properties are allowed.

HostLlmCredentialsSet

Property Type Required Description
llm_credentials LlmCredentials yes
credential_holder_id Uuid no Required exactly with personal. errors[].code required when missing with personal, not_allowed when sent with none or organization, unknown_user when it names no person or a deleted one.
reason string yes

No other properties are allowed.

HostStateSet

Property Type Required Description
state string yes Values: active, disabled, retired.
reason string yes

No other properties are allowed.

TerminalSessionState

Type: string

Values: opening, active, detached, closed.

TerminalCloseReason

Why a session ended (24, 10.3).

Type: string

Values: client_closed, closed_by_owner, process_exited, idle_timeout, max_duration, detach_expired, access_revoked, i6_violation, host_disabled, host_retired, host_rekeyed, host_restarted, user_disabled, device_revoked, session_revoked, logout, open_failed, host_policy_violation.

TerminalCloseDetail

Type: string

Values: token_invalid, token_expired, token_replayed, handshake_failed, profile_unknown, session_user_unknown, session_user_mismatch, server_host_owner_only, local_confirm_denied, subscription_login_detected, helper_untrusted, shared_location, pty_failed, open_timeout.

TerminalSession

Metadata of a terminal session. Never content.

Property Type Required Description
id Uuid yes
host_id Uuid yes
user_id Uuid yes
device_id Uuid yes
profile string yes Example: shell.
state TerminalSessionState yes
opened_at Timestamp yes
started_at Timestamp no
detached_at Timestamp no
closed_at Timestamp no
close_reason TerminalCloseReason no
close_detail TerminalCloseDetail no
exit_code integer no
bytes_in integer (int64) yes
bytes_out integer (int64) yes
version integer (int64) yes

TerminalSessionPage

One page. next_cursor is absent on the last page.

Property Type Required Description
items array of TerminalSession yes
next_cursor Cursor no

TerminalSessionOpen

Property Type Required Description
profile string yes Example: shell.
workdir_index integer no Required exactly with a claude profile: index into workdirs of the caller's own entry in reported_session_users (ruling T13). A claude profile without a valid index, or an index with another profile, gives 403 terminal_denied with reason: profile_unknown; other profiles omit it. The token carries it as wdi (24, 5.3, 11.1). Minimum 0.
cols integer yes Minimum 1; maximum 65535.
rows integer yes Minimum 1; maximum 65535.
client_ephemeral_key_hash string yes SHA-256 of the ephemeral X25519 public key the device sends in Noise message 1, base64url without padding; becomes the claim cek. Pattern ^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$.
pin_changed boolean no true when the person confirmed a host key that differs from the key this device pinned earlier (docs/spec/24-terminal.md section 5.5, docs/spec/15-client-architecture.md section 23.3); recorded in the audit entry of terminal.open. Default: false.

No other properties are allowed.

TerminalSessionAttach

Property Type Required Description
cols integer yes Minimum 1; maximum 65535.
rows integer yes Minimum 1; maximum 65535.
client_ephemeral_key_hash string yes Pattern ^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$.
pin_changed boolean no Same as in TerminalSessionOpen; recorded in the audit entry of terminal.attach. Default: false.

No other properties are allowed.

TerminalSessionGrant

Everything the device needs for the Noise handshake (24, 5). The token is valid once and for terminal.session_token_ttl.

Property Type Required Description
session TerminalSession yes
session_token string yes Compact JWS, typ = terminal-session+jwt, alg = EdDSA.
session_token_expires_at Timestamp yes
stream_path string yes Example: /api/v1/terminal/sessions/0192f4a0-7b1c-7b22-9d4f-5a6b7c8d9e0f/stream.
noise_public_key string yes
key_fingerprint string yes
key_generation integer yes
noise_protocol string yes Values: Noise_NK_25519_ChaChaPoly_SHA256.
prologue_version string yes Values: bothy-terminal/1.

HostUpdatedPayload

Property Type Required Description
host Host yes
key_changed boolean no True after a re-pairing (24, 3.3).

HostUpdatedEvent

Durable event host.updated.

All of: EventEnvelope

Property Type Required Description
type string yes Values: host.updated.
payload HostUpdatedPayload yes

TerminalSessionChangedEvent

Durable personal event terminal_session.changed to the person of the session.

All of: EventEnvelope

Property Type Required Description
type string yes Values: terminal_session.changed.
payload TerminalSession yes

HostPresencePayload

Property Type Required Description
host_id Uuid yes
connected boolean yes

HostPresenceChangedEvent

Ephemeral event host.presence_changed (no seq, at most once).

All of: EventEnvelope

Property Type Required Description
type string yes Values: host.presence_changed.
payload HostPresencePayload yes

TerminalStreamHello

First text frame of the device stream; the binary Noise frames follow identify.

Property Type Required Description
protocol_versions array of integer yes
dpop_nonce string yes
server_time Timestamp yes

TerminalStreamIdentify

Native apps send an access token with DPoP proof (htm = GET, htu = HTTPS form of the stream URL, nonce from hello, ath). The web console sends neither: its stream authenticates with the console session cookie of the upgrade request and the same-origin check of the upgrade (docs/spec/08-identity.md section 7.5, docs/spec/15-client-architecture.md section 23.2); the server rejects an identify without token from any other session. Only the device of the current session token passes (terminal.stream).

Property Type Required Description
protocol_version integer yes Example: 1.
access_token string no
dpop string no
device_id Uuid yes

HostChannelHello

First text frame on the control and data connections of a host service. It carries server values the host service applies; the values of the hello of a data connection apply to the session of that connection (24, 5.3, 6.2 and 6.3).

Property Type Required Description
protocol_versions array of integer yes
challenge string yes Random value; the host signs it with its Ed25519 key in identify.
server_time Timestamp yes
heartbeat_interval_ms integer (int64) yes Example: 20000.
heartbeat_miss_limit integer yes Minimum 1.
clock_leeway_ms integer (int64) yes auth.clock_leeway in milliseconds. The host service applies it to the session of this data connection: the tolerance on exp of the session token and how long it remembers the jti after exp (24, 5.3). Minimum 0.
idle_timeout_ms integer (int64) yes terminal.idle_timeout in milliseconds. The host service applies it to the idle timer of the session of this data connection (24, 6.3). Minimum 1.
detach_grace_ms integer (int64) yes terminal.detach_grace in milliseconds. The host service applies it to the detach timer of the session of this data connection (24, 6.2). Minimum 1.
jwks Jwks yes Public keys with purpose terminal for checking session tokens.

HostIdentify

Login of a host service. proof is a compact JWS (alg = EdDSA, typ = host-auth+jwt, kid) over exactly {challenge, host_id, iat} with the registered Ed25519 key (24, 3.5).

Property Type Required Description
protocol_version integer yes Example: 1.
host_id Uuid yes
proof string yes
host_version string yes Pattern ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$.
session_id Uuid no Only on a data connection; the session the connection belongs to.
live_sessions array of Uuid no Only on the control connection, always present there (empty when none). The sessions the host service knows, those whose PTY still runs and those whose end it could not report yet (it reports that end with session.ended after ready). After a restart of the host service the list is empty. The server ends every other session of the host in state active or detached with host_restarted (24, 6.2).

HostReady

Sent after login and again on every change of llm_credentials; the host service treats each ready as the current declaration (24, 2.2 and 7.4).

Property Type Required Description
host_id Uuid yes
state HostState yes
llm_credentials LlmCredentials yes

HostHeartbeat

Property Type Required Description
active_sessions integer yes Minimum 0.

HostHeartbeatAck

Property Type Required Description
server_time Timestamp no
jwks Jwks no

HostReport

Report of profiles, session users and self-checks; never content, paths or values. Sent after every ready before the host service accepts session.open, and on every change. When doctor refuses the start, the host service still logs in, sends one report and closes the connection without accepting session.open (24 section 2.2).

Property Type Required Description
profiles array of HostProfile yes
session_users array of HostReportedSessionUser yes
doctor array of HostDoctorCheck yes One entry per check HD1 to HD11; a failed HD6, HD9, HD10 or HD11 has one entry per account named by the rule for names (24, 2.2).
is_server_host boolean yes
require_local_confirm boolean yes
os_version string no

HostSessionOpen

The server asks the host service to open the data connection of a session.

Property Type Required Description
session_id Uuid yes
data_path string yes Example: /api/v1/hosts/sessions/0192f4a0-7b1c-7b22-9d4f-5a6b7c8d9e0f/stream.
profile string yes
expires_at Timestamp yes Without a valid handshake until then the host service drops the request (terminal.open_timeout).

HostSessionClose

Property Type Required Description
session_id Uuid yes
close_reason TerminalCloseReason yes

HostSessionStarted

Property Type Required Description
session_id Uuid yes

HostSessionEnded

Property Type Required Description
session_id Uuid yes
close_reason TerminalCloseReason yes
close_detail TerminalCloseDetail no
exit_code integer no

NoiseFrame

One binary WebSocket message carrying exactly one Noise message (at most 65535 bytes). After the handshake each transport message holds one frame type (1 byte) || body (24, 5.4). The relay never decrypts it.

Type: string (binary)