One daemon contract
These clients target the daemon /v1 contract, not the operator console. Request an evaluation; we send the package. After you receive the archive, install from that directory. See SDKs for language setup and download the OpenAPI 3.1 contract for HTTP shapes.
JavaScript method names are camelCase. Python uses snake_case. Go uses exported identifiers.
Method matrix
| Daemon operation | JavaScript | Python | Go | Scope |
|---|---|---|---|---|
| Action | action | action | Action | Caller; capability and verb. Record a decision and, when allowed, mint a grant; does not execute the downstream action. |
| Brokered action | brokered | brokered | Brokered | Caller; preserve the original work and effect key for documented retries and reconciliation. No exactly-once downstream guarantee is made. Decide and execute through AAES's connector. |
| Federation | federate | federate | Federate | Caller; required work and effect key. Federation interface; unavailable in the supplied distribution (403 "no federated backend"). With a separately wired and validated backend, the response contains sensitive credential material or issuance instructions; redaction of diagnostic output is not removal of that material from the response. |
| Present grant | presentGrant | present_grant | PresentGrant | Caller; bind a stored grant to the authenticated presenter. |
| Observe | observe | observe | Observe | Caller observation; reported effect, not verified execution. |
| Capabilities and catalogue | capabilities, catalogue | same | Capabilities, Catalogue | Entitled versus requestable kept separate. |
| Access ask and read | requestAccess, accessRequest | request_access, access_request | RequestAccess, AccessRequest | Caller. |
| Work list and read | listWork, work | list_work, work | ListWork, Work | Person sees tenant; others own assigned or managed work. |
| Approval list and read | listApprovals, approval | list_approvals, approval | ListApprovals, Approval | Person sees the permitted queue; others own intents. |
| Entitlements | listEntitlements | list_entitlements | ListEntitlements | Own actor; a person may select an actor in tenant. |
| Receipt list and read | listReceipts, receipt | list_receipts, receipt | ListReceipts, Receipt | Person sees tenant; others own intents. |
| Manager cards | managerCards, decideManagerCard | manager_cards, decide_manager_card | ManagerCards, DecideManagerCard | Authenticated agent manager only. Agent-manager decisions are recorded in the agent's capacity; they can never satisfy the mandatory authorized-person approval for a capability registered as irreversible, and an agent cannot approve its own request. |
| Access revocation | OperatorClient.revokeAccessRequest | OperatorClient.revoke_access_request | NewOperator(...).RevokeAccessRequest | Separately issued person token, server enforced. |
| Health and readiness | health | health | Health | One call reads both probes (/healthz liveness and /readyz readiness) and returns the daemon's own answers. |
Reads, pages, and refusals
The new read APIs return daemon wire names (work_id, counts_toward_coverage), while existing action results retain their language-native names. JavaScript wire shapes are available from @aaes/sdk/wire. Go has concrete read structs; Python read responses are annotated dictionaries.
The work, approval, entitlement, and receipt list operations return one bounded page. Pass page.next_cursor back as the cursor. Limits are 1 to 200; omit for the server default. Capabilities, catalogue, and manager-card responses use their own array shapes and declare no pagination parameters. Timestamps are RFC3339 strings as the daemon specifies. Filters are selections, never identity claims, and are URL encoded. A non-person's unauthorized actor or sponsor filter is refused by the daemon. state=all for approvals requires an intent.
Record IDs are encoded as one path segment. Unknown JavaScript filter or mutation keys and Python keyword arguments are refused. Go request types expose only documented fields. Manager decisions carry a grant or refuse boolean (an omitted boolean decodes as a refusal) and must name the card, approval, and payload-hash binding facts. Neither manager decisions nor access revocations are retried, even after 503 with an opted-in retry policy. Read errors throw or return the daemon's HTTP status and stated reason. Refused action decisions keep the structured refusal model. The full retry and reconciliation procedure (including the decision-route pre-seal 503 rule, the federated route's post-decision 503 exception, and the three reconciliation cautions) is in the API reference.
Not on this client
Console administrative operations (create or update agents, policies, resources, identity, work transitions, browser approvals) belong to the operator console session. They are not exposed through an agent bearer client. Approval channel callbacks are server integration endpoints, not SDK methods. This package does not provide an OAuth server, cloud provisioning, live integration, receipt verification, or general-purpose HTTP passthrough.
Verify an export from your evaluation install with aaesctl verify. See the CLI guide.
