Tearleads

POST/auth/register

Register an identity and bootstrap its root state

Operation auth.register

Description

Creates a new identity from its signing and encapsulation public keys and, in one transaction, provisions its personal organization: the reserved Admins and Members groups, the root container, and their signed policies and metadata documents. The response carries a fresh login challenge, so the client signs in next with POST /auth/verify. A signing key that is already registered returns 409.

Authentication

No session is required.

Request body

application/jsonRegistrationRequest

A new identity's public keys plus every signed artifact that bootstraps its personal organization, all created atomically.

15 fields

Other fields are allowed.

Responses

200 OK

application/jsonRegistrationResponse

Acknowledges a registration by the ids and hashes of what it created, plus a sign-in challenge.

19 fields
  • committedCoreMetadataUpdateIdslist of stringrequired
    • each item: lowercase UUID v4

    Ids of the seeded metadata updates the server committed with the provisioning.

  • committedProfileUpdateIdslist of stringrequired
    • each item: lowercase UUID v4

    Ids of the seeded profile updates the server committed with the provisioning.

  • organizationIdstringrequired
  • organizationMetadataContainerContainerCreateWithMetadataDocumentResponserequired
  • organizationMetadataContainerIdstringrequired
  • organizationProfileDocumentDocumentCreateResponseoptional
  • organizationProfileDocumentIdstringoptional
  • rootContainerIdstringrequired
  • rootMetadataAccessEpochnumberrequired

    Access epoch of the root container's metadata document.

  • rootMetadataAccessStateHashstringrequired
    • not empty

    Access state hash of the root container's metadata document.

  • rootMetadataDocumentDocumentCreateResponserequired
  • rootMetadataDocumentIdstringrequired
  • rosterProfileContainerContainerCreateWithMetadataDocumentResponseoptional
  • rosterProfileContainerIdstringoptional
  • rosterProfileDocumentDocumentCreateResponseoptional
  • rosterProfileDocumentIdstringoptional
  • systemContainerslist of ContainerCreateWithMetadataDocumentResponserequired
  • userIdstringrequired
  • challengestringrequired
    • exactly 64 characters
    • lowercase hexadecimal

    Sign-in challenge to sign and send to POST /auth/verify, so the new identity can sign in without another request.

Other fields are allowed.

Other responses

StatusMeaningBody
400Bad Request

application/jsonErrorResponse

403Forbidden

application/jsonErrorResponse

404Not Found

application/jsonErrorResponse

409Conflict

application/jsonErrorResponse

500Internal Server Error

application/jsonErrorResponse

503Service Unavailable

application/jsonErrorResponse

Additional rules

The server also enforces these rules, which the schema above cannot express.

  • inlineRekeyCommitId must be present exactly when containerRekeys is non-empty.

  • authorizingContainerPathRefs is required when outgoingUpdates is non-empty.

  • containerRekeys may be non-empty only when outgoingUpdates is non-empty.

  • Outgoing update ids must be unique within the request.

  • A request carrying pullCursor must not contain outgoing updates, container rekeys, a content-key bundle, or authorizing paths.

  • historyMode "raw" must not be combined with outgoing updates, container rekeys, a content-key bundle, or authorizing paths.

  • historyMode "raw" requires localVersionVector to be null so the complete retained history is requested.

  • checkpointKind, checkpointPayloadKind, and sourceVersionVector must be absent together or form a rotation baseline.

  • Each provisioned system-container metadata seed must contain exactly one outgoing update and no container rekeys.

  • Each provisioned document seed must contain exactly one outgoing update and no container rekeys.

  • Core and profile metadata update id arrays contain no duplicates.

  • A container response keyring is null exactly for container key epoch 1.