API: Authority
Capability state: mixed. See per-operation labels below; full map in reference/capability-state.md.
This page covers the authority-side membrane operations: context resolution, hosted operator delegation, the authority package lifecycle, presence approval, session revocation, and key rotation.
authority.resolveContext
Section titled “authority.resolveContext”Given a target jurisdiction and signal tags, return the matched sovereign demands and integrity findings.
POST /v1/authority/resolve-contextstate: fixture-rehearsedruntime_owner: cloud_geistsdk_role: submit context and evidence refsrequest_record: CloudAuthorityResolveContextRequestRequest
Section titled “Request”interface AuthorityResolveContextRequest { subjectCompany?: GestaltRef; effectiveContext?: GestaltRef; from?: string; // e.g. "DE" to: string[]; // e.g. ["FR"] tags: string[]; // e.g. ["warehouse_country:FR"] evidenceRefs: GestaltRef[];}Response
Section titled “Response”{ "operation": "authority.resolveContext", "outcome": "verified", "body": { "confidence": "deterministic_fixture", "matchedDemands": [ "sovereign_demand:de_registered_office_continuity", "sovereign_demand:fr_tax_establishment_and_vat" ] }, "receipt": {...}}SDK example
Section titled “SDK example”const resolution = await client.resolveAuthorityContext({ subjectCompany: "company_geist:rheinwerk_calibration", effectiveContext: "effective_context:fixture_de_gmbh", to: ["FR"], tags: ["warehouse_country:FR"], evidenceRefs: [],});The fixture matches DE/FR/US deterministically; real resolution will require active authority packages and Pendulum dispatch.
Hosted operator delegation
Section titled “Hosted operator delegation”A hosted operator is a Gestalt-managed delegate that holds a narrow scoped grant from a tenant for shop-origin acts. See shop.md.
authority.hostedOperator.grant
Section titled “authority.hostedOperator.grant”POST /v1/authority/operators/grantstate: staging-durablesdk_role: grant staged hosted operator delegation through membrane mutationrequest_record: CloudHostedOperatorMutationRequest{ "operation": "authority.hostedOperator.grant", "outcome": "admitted", "body": { "grantAtom": "atom:...", "signer": { "kind": "tenant_signer" } }, "receipt": {...}}authority.hostedOperator.revoke
Section titled “authority.hostedOperator.revoke”POST /v1/authority/operators/revokestate: staging-durablesdk_role: revoke staged hosted operator delegation through membrane mutation{ "operation": "authority.hostedOperator.revoke", "outcome": "admitted", "body": { "revokeAtom": "atom:...", "signer": { "kind": "tenant_signer" } }, "receipt": {...}}The hosted operator’s actual standing is not yet a real product boundary — see 022 gap report items 9, 10.
Authority packages
Section titled “Authority packages”See concepts: authority packages for the model. The membrane operations:
authority.package.status
Section titled “authority.package.status”GET /v1/authority/packages/statusstate: fixture-rehearsedsdk_role: inspect fixture authority package governance stateReturns the status of authority packages known to the tenant.
authority.package.import
Section titled “authority.package.import”POST /v1/authority/packages/importstate: fixture-rehearsedsdk_role: import package manifest with content hash source hash publisher signature and supersession metadatarequest_record: CloudAuthorityPackageMutationRequestconst imported = await client.packageImport({ tenant: "tenant_node:rheinwerk_calibration", package: "authority_package:france_market_entry_projection_2026_04", publisher_signed: true, manifest_version: "authority.package.manifest.v0.fixture", source_hash: "sha256:fixture_source", content_hash: "sha256:fixture_manifest", tampered_manifest: false, stale: false, self_activate: false,});Refusal codes: authority_package_tamper_refused,
authority_package_stale, authority_package_self_activation_refused.
authority.package.candidate
Section titled “authority.package.candidate”POST /v1/authority/packages/candidatestate: fixture-rehearsedsdk_role: create package candidate from changed source evidenceauthority.package.review
Section titled “authority.package.review”POST /v1/authority/packages/reviewstate: fixture-rehearsedsdk_role: record reviewer approval or refusalconst review = await client.packageReview({ tenant: "tenant_node:rheinwerk_calibration", package: "authority_package:france_market_entry_projection_2026_04", reviewer_decision: "approve", // | "refuse"});authority.package.activate
Section titled “authority.package.activate”POST /v1/authority/packages/activatestate: fixture-rehearsedsdk_role: request staged fixture activation after publisher and reviewer gatesconst activation = await client.packageActivate({ tenant: "tenant_node:rheinwerk_calibration", package: "authority_package:france_market_entry_projection_2026_04", publisher_signed: true, reviewer_decision: "approve", self_activate: false,});self_activate: true is structurally refused.
authority.package.revoke
Section titled “authority.package.revoke”POST /v1/authority/packages/revokestate: fixture-rehearsedsdk_role: revoke active fixture packagePresence approval
Section titled “Presence approval”authority.presenceApproval
Section titled “authority.presenceApproval”POST /v1/authority/presence-approvalstate: fixture-rehearsedsdk_role: satisfy sensitive approval with human presence while keeping identity standing and delegation separaterequest_record: CloudM13PresenceApprovalRequestA human presence receipt (from humanAuth.verifyPasskey or
humanAuth.faceMatchFallback) is presented to satisfy a sensitive
approval requirement without creating new standing or delegation.
const approval = await client.m13PresenceApproval({ tenant: "tenant_node:rheinwerk_calibration", actor: "human_person:anna", vessel: "vessel:fixture_sdk", human_presence_receipt: "human_presence_receipt:fixture_private_presence", create_standing_from_presence: false,});Refusal codes: m13_wrong_actor, m13_wrong_vessel,
m13_human_presence_cannot_create_standing (if you set
create_standing_from_presence: true, intentionally refused — presence
does not create standing).
See human-auth.md for the presence flow.
Session and key lifecycle
Section titled “Session and key lifecycle”authority.sessionRevoke
Section titled “authority.sessionRevoke”POST /v1/authority/sessions/revokestate: staging-durablesdk_role: record session revocation lifecycle without exposing raw session tokenconst revocation = await client.m13SessionRevoke({ tenant: "tenant_node:rheinwerk_calibration", session: "auth_session:fixture_valid", enforce_runtime_overlay: true,});The raw session token is never exposed in either request or response shape.
authority.keyRotate
Section titled “authority.keyRotate”POST /v1/authority/keys/rotatestate: staging-durablesdk_role: record holder-key rotation lifecycle without exposing private key materialconst rotation = await client.m13KeyRotate({ tenant: "tenant_node:rheinwerk_calibration", key: "key_registry:rheinwerk_session_signing_fixture", replacement_key: "key_registry:rheinwerk_session_signing_fixture_rotated", enforce_runtime_overlay: true,});Private key material is never in the request or response shape. Real key custody (the closed boundary) is gated; see 022 item 2.