Skip to content

Lexicon Reference

All AT Protocol lexicons defined by the Stratos service. Lexicons describe every XRPC method, record type, and shared definition available in this namespace (zone.stratos.*).

GET Query — read-only XRPC callPOST Procedure — write XRPC callWS Subscription — WebSocket streamRECORD Record type stored in reposDEFS Shared type definitions

Core Definitions

DEFSzone.stratos.defs

Type Definitions

source— Indicates this record requires hydration from an external service. The stub record on the PDS contains minimal data; full content is fetched from the service endpoint.
FieldTypeRequiredDescription
varystringIndicates when hydration is needed. 'authenticated' means full content requires viewer authentication.
subject#subjectRefReference to the full record at the hydration service.
servicestring (did)DID of the hydration service, optionally with fragment identifying the service entry (e.g., 'did:plc:abc123#atproto_pns').
subjectRef— A strong reference to a record, including its content hash for verification.
FieldTypeRequiredDescription
uristring (at-uri)AT-URI of the record at the hydration service.
cidstring (cid)CID of the full record content for integrity verification.

Actor

RECORDzone.stratos.actor.enrollment

A record indicating the user is enrolled in a Stratos service. Published to the user's PDS during OAuth enrollment for endpoint discovery by AppViews. Multiple enrollment records are supported — one per Stratos service.

Record Schema

FieldTypeRequiredDescription
servicestring (uri)The Stratos service endpoint URL where this user's private data is stored.
boundaries#Domain[]Service-qualified boundaries the user has access to on this Stratos service, each in '{serviceDid}/{domainName}' format.
signingKeystringThe user's public key as a did:key string, used for user-level record signing. For 'stratos' custody this is a P-256 key generated by the Stratos service; for 'pds' custody this is the user's own '#atproto' key from their DID document.
attestation#serviceAttestationService attestation vouching for the user's enrollment, boundaries, and signing key.
createdAtstring (datetime)Timestamp when the enrollment was created.
custodystringWho hosts and signs this enrollment's repo. 'stratos' is the Stratos-hosted, Stratos-signed repo. 'pds' is the user's own spaces-capable PDS, signing with their own '#atproto' key. Defaults to 'stratos' when absent.
repoHoststring (uri)The repo host endpoint when custody is 'pds'. Absent for 'stratos' custody.

Type Definitions

serviceAttestation— An attestation signed by the Stratos service key. The signed payload is DAG-CBOR encoded {boundaries, did, signingKey} with sorted keys.
FieldTypeRequiredDescription
sigbytesRaw signature bytes of the DAG-CBOR encoded attestation payload, signed by the service key.
signingKeystringThe Stratos service's public key as a did:key string, used to verify the attestation signature.

Admin

POSTzone.stratos.admin.addAdmin

Grant admin access to a DID. Requires admin authorization.

Request Body application/json

NameTypeRequiredDescription
didstring (did)The DID to grant admin access to.

Response application/json

NameTypeRequiredDescription
didstring (did)
GETzone.stratos.admin.getRepoHost

Resolve repository hosts for an enrolled member's spaces. Requires admin authorization.

Parameters

NameTypeRequiredDescription
didstring (did)The enrolled member DID.

Response application/json

NameTypeRequiredDescription
didstring (did)
custodystringWho hosts the member repository.
isServicebooleanWhether this is a service enrollment.
resolutions#resolution[]

Type Definitions

resolution
FieldTypeRequiredDescription
boundary#Domain
spaceUristring (uri)
hoststring (uri)
sourcestring
GETzone.stratos.admin.listAdmins

List everyone holding admin access. Requires admin authorization.

Response application/json

NameTypeRequiredDescription
admins#admin[]
viewerstring (did)The DID of the requesting admin.

Type Definitions

admin
FieldTypeRequiredDescription
didstring (did)
sourcestringWhere the grant comes from. Config admins cannot be revoked through the API.
addedAtstring (datetime)When access was granted. Absent for config admins.
addedBystring (did)Who granted access. Absent for config admins.
GETzone.stratos.admin.listEnrollments

List enrollments in this Stratos service. Requires admin authorization.

Parameters

NameTypeRequiredDescription
limitintegerMaximum number of enrollments to return.
cursorstringPagination cursor from a previous response.
boundarystringOnly return members holding this boundary.
activebooleanOnly return active or inactive enrollments.
custodystringOnly return enrollments with this repo custody.

Response application/json

NameTypeRequiredDescription
enrollments#enrollment[]
cursorstringCursor for the next page. Absent on the last page.
totalintegerTotal number of enrollments in the service. Absent when any filter is applied.

Type Definitions

enrollment
FieldTypeRequiredDescription
didstring (did)The enrolled DID.
enrolledAtstring (datetime)When the DID was enrolled.
activebooleanWhether the enrollment is currently active.
isServicebooleanWhether this is a service enrollment rather than a user.
custodystringWho hosts the member repository.
repoHoststring (uri)The repository host recorded for a PDS-custody member.
boundaries#Domain[]
GETzone.stratos.admin.listPdsSyncStatus

List queued PDS enrollment-record sync jobs. Shows which members' PDS records are still behind this service's boundary state. Requires admin authorization.

Parameters

NameTypeRequiredDescription
limitintegerMaximum number of jobs per page.
cursorstringOpaque pagination cursor from a previous response.

Response application/json

NameTypeRequiredDescription
jobs#job[]
cursorstringPass to the next call to continue. Absent on the last page.

Type Definitions

job
FieldTypeRequiredDescription
didstring (did)The member whose PDS enrollment record is behind.
statusstringA 'pending' job is retried by the worker. A 'failed' job is terminal until a fresh admin mutation or a requeue revives it.
attemptCountintegerNumber of attempts made so far.
nextAttemptAtstring (datetime)When the worker may next attempt this job.
firstQueuedAtstring (datetime)When sync intent was first recorded for this member.
updatedAtstring (datetime)When the job was last written.
lastErrorstringMessage from the most recent failed attempt. Absent when no attempt has failed.
generationintegerFencing token. Every fresh sync intent increases it. An attempt writes its bookkeeping only while its own generation is still current, so a superseded attempt cannot clear or delay a newer job.
POSTzone.stratos.admin.removeAdmin

Revoke admin access from a DID. Config-provided admins cannot be revoked here, and an admin cannot revoke their own access.

Request Body application/json

NameTypeRequiredDescription
didstring (did)The DID to revoke admin access from.

Response application/json

NameTypeRequiredDescription
didstring (did)

Errors

NotFoundThe DID does not hold admin access.
POSTzone.stratos.admin.requeuePdsSync

Move every terminally failed PDS enrollment-record sync job back to 'pending'. Use this after a fault that every attempt saw alike, such as a signing key rotation or clock skew, which marks many jobs failed at once. Requires admin authorization.

Response application/json

NameTypeRequiredDescription
requeuedintegerNumber of jobs moved from 'failed' back to 'pending'.
POSTzone.stratos.admin.setActive

Activate or deactivate an enrolled member. Requires admin authorization. Deactivation is reversible and preserves the member's boundaries.

Request Body application/json

NameTypeRequiredDescription
didstring (did)The member to update.
activebooleanWhether the member's enrollment should be active.

Response application/json

NameTypeRequiredDescription
didstring (did)
activeboolean

Errors

NotFoundThe DID is not enrolled.

Boundary

DEFSzone.stratos.boundary.defs

Type Definitions

Domain— A specific domain to define exposure boundary.
FieldTypeRequiredDescription
valuestringService-qualified boundary identifier in the format '{serviceDid}/{domainName}', e.g. 'did:web:stratos.example.com/engineering'.
Domains— A collection of domains that define the exposure boundary for a record.
FieldTypeRequiredDescription
values#Domain[]The single domain that can access this record. Exactly one domain per record (one record, one space); the array shape is retained for wire compatibility.

Enrollment

GETzone.stratos.enrollment.status

Check enrollment status for a DID in this Stratos service.

Parameters

NameTypeRequiredDescription
didstring (did)The DID to check enrollment for.

Response application/json

NameTypeRequiredDescription
didstring (did)The DID that was checked.
enrolledbooleanWhether the DID is enrolled in this Stratos service.
eligiblebooleanWhether the DID is eligible to enroll. Only included when the DID is not enrolled. Omitted when the eligibility check cannot complete.
activebooleanWhether the enrollment is active. Only included when enrolled.
enrolledAtstring (datetime)When the DID was enrolled, if enrolled.
signingKeystring (did)The service-held signing key DID for this enrollment. Only included when enrolled.
enrollmentRkeystringRecord key of the zone.stratos.actor.enrollment record on the user's PDS. Only included when enrolled.
boundaries#Domain[]Authoritative boundaries assigned. Only included when request is authenticated.
POSTzone.stratos.enrollment.unenroll

Unenroll from the Stratos service, revoking the session and deleting the enrollment record from the user's PDS.

Request Body application/json

NameTypeRequiredDescription

Response application/json

NameTypeRequiredDescription
successboolean

Errors

NotEnrolled
AuthRequired

Feed

GETzone.stratos.feed.getTimeline

Fetch a timeline of posts.

Parameters

NameTypeRequiredDescription
limitinteger
cursorstring

Response application/json

NameTypeRequiredDescription
feed#feedViewPost[]
cursorstring
RECORDzone.stratos.feed.post

Record containing a private Stratos post with domain boundary restrictions. When stored on user's PDS as a stub, only 'source' and 'createdAt' are present. Full content is available from the hydration service.

Record Schema

FieldTypeRequiredDescription
source#sourceWhen present, indicates this is a stub record. Full content should be hydrated from the referenced service.
textstringThe primary post content. May be an empty string, if there are embeds. Omitted in stub records.
boundary#DomainsLimit exposure to defined domains. Omitted in stub records.
facetsfacet[]Annotations of text (mentions, URLs, hashtags, etc)
reply#replyRef
embedimages | images | video | external | record | recordWithMedia
langsstring (language)[]Indicates human language of post primary text content.
labels#selfLabelsSelf-label values for this post. Effectively content warnings.
tagsstring[]Additional hashtags, in addition to any included in post text and facets.
createdAtstring (datetime)Client-declared timestamp when this post was originally created.

Type Definitions

replyRef— Reference to parent and root posts for replies. Must reference stratos posts only.
FieldTypeRequiredDescription
rootstrongRef
parentstrongRef

Identity

GETzone.stratos.identity.resolveEnrollments

Resolve enrollment boundaries for a DID. Returns the boundary domains the user is enrolled in.

Parameters

NameTypeRequiredDescription
didstring (did)The DID to resolve enrollment boundaries for.

Response application/json

NameTypeRequiredDescription
didstring (did)
enrolledbooleanWhether the DID is enrolled in this Stratos service.
boundariesstring[]Boundary domains the user is enrolled in. Empty if not enrolled.

Repository

GETzone.stratos.repo.hydrateRecord

Hydrate a single record by URI. Returns the record if viewer has boundary access.

Parameters

NameTypeRequiredDescription
uristring (at-uri)The AT-URI of the record to hydrate
cidstring (cid)Optional CID to verify record version

Response application/json

NameTypeRequiredDescription
uristring (at-uri)
cidstring (cid)
valueunknown

Errors

RecordNotFoundThe requested record does not exist
RecordBlockedAccess to the record is blocked due to boundary restrictions
POSTzone.stratos.repo.hydrateRecords

Hydrate multiple records by URI. Returns records filtered by viewer's boundary access.

Request Body application/json

NameTypeRequiredDescription
urisstring (at-uri)[]Array of AT-URIs to hydrate (max 100)

Response application/json

NameTypeRequiredDescription
records#recordView[]Successfully hydrated records
notFoundstring (at-uri)[]URIs that were not found
blockedstring (at-uri)[]URIs blocked due to boundary restrictions

Type Definitions

recordView
FieldTypeRequiredDescription
uristring (at-uri)
cidstring (cid)
valueunknown
POSTzone.stratos.repo.importRepo

Import a repository from a CAR file. Verifies record CID integrity and re-signs with the destination service key. The caller must be enrolled as the DID in the CAR's commit block.

Response application/json

NameTypeRequiredDescription
importedintegerNumber of records successfully imported.

Errors

InvalidCarThe CAR file is malformed, has missing blocks, or contains records with mismatched CIDs.
RepoAlreadyExistsThe destination already has records for this DID. Import is only supported for empty repos.
POSTzone.stratos.repo.uploadBlob

Upload a new blob, to be referenced from a Stratos repository record. The blob will be deleted if it is not referenced within a time window (eg, minutes). Blob restrictions (mimetype, size, etc) are enforced when the reference is created. Requires auth, implemented by Stratos service.

Response application/json

NameTypeRequiredDescription
blobblob

Server

GETzone.stratos.server.listDomains

Returns the list of boundary domains available on this Stratos service.

Response application/json

NameTypeRequiredDescription
domainsstring[]The boundary domains available on this service.

Sync

GETzone.stratos.sync.getBlob

Get a blob by CID with boundary-based access control.

Parameters

NameTypeRequiredDescription
didstring (did)
cidstring (cid)

Errors

BlobNotFound
Forbidden
GETzone.stratos.sync.getRepo

Export the full repository as a CAR file. Returns all record blocks, MST nodes, and the signed commit.

Parameters

NameTypeRequiredDescription
didstring (did)The DID of the repo to export.
sincestring (tid)Optional revision cursor. If provided, only blocks newer than this revision are included.

Errors

RepoNotFoundThe requested repo does not exist or has no commits.
GETzone.stratos.sync.listRecordPaths

Full-state recovery: enumerate a repo's record paths and their current CIDs, mirroring listRecords semantics. Record values are inlined by default; excludeValues returns metadata only. Boundary-gated: the caller only observes records within its enrolled boundaries. Intended as the fallback when the oplog (listRepoOps) returns OplogTruncated: the caller enumerates paths, diffs locally, and fetches misses. Callers must authenticate with a signed service JWT via the Authorization: Bearer header.

Parameters

NameTypeRequiredDescription
didstring (did)The DID of the repo to enumerate.
collectionstring (nsid)Optional single collection to enumerate. When omitted, all collections are enumerated.
cursorstringOpaque pagination cursor from a previous response.
limitintegerMaximum number of rows to return in this page.
excludeValuesbooleanWhen true, record values are omitted and only path metadata is returned.

Response application/json

NameTypeRequiredDescription
records#recordPath[]The record paths in this page.
cursorstringOpaque pagination cursor to fetch the next page. Absent when enumeration is complete.

Type Definitions

recordPath— A record path with its current CID and optionally its value.
FieldTypeRequiredDescription
collectionstring (nsid)The record collection.
rkeystringThe record key.
cidstring (cid)The CID (string form) of the current record value.
valueunknownThe current record value, inlined by default. Omitted when excludeValues is true.

Errors

RepoNotFoundThe requested repo does not exist.
AuthRequiredService authentication is required.
GETzone.stratos.sync.listRepoOps

Incremental pull sync of a repo's operation log (oplog), mirroring com.atproto.space.listRepoOps semantics. Returns record operations after the `since` revision, with current record values inlined by default. Boundary-gated: the caller only observes operations for records within its enrolled boundaries. The response reaches the head of the oplog when `cursor` is absent; the repo's current signed commit is then included (unless the repo has no commits yet), consistent with the operations returned. When a concurrent write is detected, a cursor is returned instead of the commit; that response can carry no operations and repeat the cursor you sent, so poll again while a cursor is present and do not read an unchanged cursor as a stall. A write that commits after the head probe is not detected; it falls outside this snapshot and arrives on a later poll. Callers must authenticate with a signed service JWT via the Authorization: Bearer header. The oplog is a droppable transport optimization; if `since` predates retained history the OplogTruncated error is returned (stricter than upstream, which silently restarts) so the caller falls back to full-state recovery (listRecordPaths).

Parameters

NameTypeRequiredDescription
didstring (did)The DID of the repo to sync.
sincestring (tid)A revision (TID): the caller's own sync position. Only operations after this revision are returned. Omit to start from the beginning of retained history. Use `cursor` to continue a paginated response.
limitintegerMaximum number of operations to return in this page.
cursorstringOpaque pagination cursor from a previous response. Takes precedence over `since` when both are supplied.
excludeValuesbooleanWhen true, record values are omitted and only operation metadata is returned.

Response application/json

NameTypeRequiredDescription
ops#repoOp[]The operations in this page, in ascending revision order.
cursorstringOpaque pagination cursor to fetch the next page. Absent once the response reaches the head of the oplog. Can repeat the cursor you sent when a concurrent write was detected.
commit#signedCommitThe repo's current signed MST commit. Included when the response reaches the head of the oplog; omitted on backfill responses and when the repo has no commits yet (no writes) - in that case there is nothing to sign and also no ops to sync.

Type Definitions

repoOp— A single record operation in the oplog. `cid` null means delete; `prev` null means create.
FieldTypeRequiredDescription
revstring (tid)The revision of the commit that produced this operation. Atomic multi-writes share one rev.
collectionstring (nsid)The record collection.
rkeystring (record-key)The record key.
cidstring (cid)The CID (string form) of the current record value. Null for a delete.
prevstring (cid)The CID (string form) of the record value this operation superseded. Null for a create, or when the superseded value predates the returned window.
valueunknownThe current record value, inlined by default for create/update ops. Omitted when excludeValues is true, for a delete, or when the value has been superseded by a later operation.
signedCommit— A signed MST v3 commit, as persisted (read verbatim, not re-signed).
FieldTypeRequiredDescription
didstring (did)The DID of the repo.
versionintegerThe commit version (3).
datastring (cid)The CID (string form) of the MST root node.
revstring (tid)The commit revision.
prevstring (cid)The CID (string form) of the previous commit. Absent for the first commit.
sigstringThe commit signature, base64-encoded (the exact persisted bytes).

Errors

OplogTruncatedThe requested `since` revision falls outside retained history: it predates the oldest retained event (compacted), postdates the newest (not a rev this repo issued), or there is no retained log to check it against. Also returned for an unusable `cursor`: malformed, predating retained history (compacted between pages), or beyond the newest retained event. The caller must fall back to full-state recovery. Stricter than upstream, which restarts from the beginning of retained history instead of erroring.
RepoNotFoundThe requested repo does not exist.
AuthRequiredService authentication is required.
WSzone.stratos.sync.subscribeRecords

Subscribe to stratos events. When 'did' is provided, subscribes to record updates for that account. When omitted, subscribes to service-level events (enrollments). Callers must authenticate with a signed service JWT via the Authorization: Bearer header.

Parameters

NameTypeRequiredDescription
didstring (did)The DID of the account to subscribe to. If omitted, subscribes to service-level enrollment events.
cursorintegerThe last known event sequence number to resume from.
domainstringOptional domain filter. Only events for records with this domain in their boundary will be emitted.

Message Types

commitenrollmentinfo

Type Definitions

commit— A commit event containing record operations.
FieldTypeRequiredDescription
seqintegerThe sequence number of this event.
didstring (did)The DID of the account.
timestring (datetime)Timestamp of when the event was sequenced.
revstring (tid)The repo revision.
ops#recordOp[]List of record operations in this commit.
recordOp— A single record operation within a commit.
FieldTypeRequiredDescription
actionstringThe type of operation.
pathstringThe record path (collection/rkey).
cidcid-linkThe CID of the record. Present for create and update operations.
recordunknownThe record content. Present for create and update operations.
info— An informational message about the subscription state.
FieldTypeRequiredDescription
namestringThe type of info message.
messagestringAdditional details about the info message.
enrollment— An enrollment event indicating a user has enrolled or unenrolled from the service.
FieldTypeRequiredDescription
didstring (did)The DID of the user.
actionstringThe enrollment action.
servicestring (uri)The Stratos service endpoint URL.
boundariesstring[]The boundaries assigned to the user.
timestring (datetime)Timestamp of the enrollment event.

Errors

FutureCursorCursor is in the future.
AuthRequiredAuthentication is required.