Reference Surfaces
| Surface | Use it for |
|---|---|
| Browsable API Reference | Reading endpoint summaries, parameters, schemas, examples, and response descriptions. |
| Raw OpenAPI JSON | Code generation, contract diffing, import into API tools, and automated checks. |
| Error Catalogue | Versioned help pages for public API error codes referenced by help_url. |
| Alpha auth, tenant-context, and retry contract | Generated public policy for admitted-alpha access, private access-pack material, tenant authority, token handling, and conservative retry defaults. |
| Lifecycle And State Guide | How to read lifecycle fields without inventing tenant vocabulary, hidden workflows, or unsupported transitions. |
| Scoped OpenAPI Bundles | Smaller contracts for focused agent prompts, constrained tools, and resource-specific reviews. |
| API Tool Collections | Generated Postman and Insomnia imports for the full contract and each scoped resource family. |
| llms.txt | Agent-readable entry point for quickstart, auth, tenant context, alpha boundaries, and feedback. |
| Agent Bootstrap | Ready-to-copy prompt, scoped contract links, safe execution rules, and feedback packet shape for AI coding agents. |
| Request Access | Submit the structured alpha intake fields for approval-gated developer-preview access. |
| Quickstart | First health, auth, tenant discovery, tenant-context, and read calls. |
| Policy Lookup Recipe | A complete read-oriented application path from issued access pack to party and policy data. |
| Five Acts SDK Example | Executable Python SDK read journey synchronized with the canonical insurance demo facts. |
Scoped OpenAPI Bundles
Use the full contract for complete code generation. Use scoped bundles when an AI agent or API tool needs one resource family without loading the entire API surface.
Use the bundle manifest to inspect bundle dependencies, safe-read counts, restricted mutation counts, generated collection links, and first-flow candidates.
| Bundle | Use it for |
|---|---|
| Bootstrap and tenant context | Health-adjacent setup, admitted tenant discovery, and tenant-context minting. |
| Parties | Party, role, contact, identity, relationship, and party-group operations. |
| Policies | Product, policy, quote, and policy lifecycle operations. |
| Claims | Retained claim-family compatibility routes over events/assertions, assessment, reserve, recovery, and document-output operations. |
| Benefits | Retained benefit-family compatibility routes over cover, entitlement, availability, and balance operations. |
| Documents and evidence | Document output, evidence, archive, upload, and evidence-pack operations. |
| Operational health | Health and contract-discovery operations for connectivity and tooling checks. |
Product To Policy Prerequisites
Policy and quote creation can trigger premium calculation. Premium
calculation requires an active pricing ruleset binding for the product
and effective date. Do not create a product and then jump directly to
POST /v1/policies or POST /v1/quotes unless
the pricing binding already exists.
- Create the product with
POST /v1/covers. - Activate the product with
POST /v1/covers/{id}/activate. - Create the pricing ruleset with
POST /v1/rulesets. - Add pricing rules with
POST /v1/rulesets/{id}/rules. - Deploy the ruleset so a version is available for binding.
- Bind the deployed ruleset to the product with
POST /v1/covers/{id}/pricing-rules. - Use
ruleset_type: premium_rating, the deployedruleset_version, and aneffective_fromdate that covers the quote or policy effective date. - Create the quote or policy only after that binding exists.
If the binding is missing, the intended public error is a structured
422 PRICING_RULESET_NOT_FOUND_AS_OF. Direct policy and
bind policy paths share that precondition posture in the current
contract; include the correlation id in feedback if a tenant still
observes a different policy-path error after deployment.
CEL Numeric Types
Axiom evaluates rules with Google cel-go. CEL is
type-strict: int, uint, and
double are different numeric types. JSON request facts
may bind integer-looking values as double, so comparisons
such as applicant.age >= 18 are valid, but integer-only
operators such as modulo require explicit conversion.
int(applicant.age) % 5 == 0
cover.sum_insured * 0.15 <= 250000.0
A CEL message such as no such overload: _%_ means the
expression or fact shape has a numeric type mismatch. It should be
fixed by using int(), uint(), or
double() deliberately.
API Tool Collections
Postman and Insomnia collections are generated from the same public OpenAPI 0.1.0 contract as the browsable reference. Use the full collection for broad exploration, or a scoped collection when you want a smaller import for one resource family.
| Collection | Postman | Insomnia |
|---|---|---|
| Full API | Import JSON | Import JSON |
| Bootstrap and tenant context | Import JSON | Import JSON |
| Parties | Import JSON | Import JSON |
| Policies | Import JSON | Import JSON |
| Claims | Import JSON | Import JSON |
| Benefits | Import JSON | Import JSON |
| Documents and evidence | Import JSON | Import JSON |
| Operational health | Import JSON | Import JSON |
Collection variables use placeholders for base_url,
access_token, tenant_id,
tenant_context, and correlation_id. Use
tenant_id from GET /v1/me/tenants, then
mint tenant_context before making tenant-scoped calls.
Auth And Tenant Context
The public alpha path uses a bearer token from the issued auth realm
plus a server-minted tenant context. The tenant context is sent as
X-Tenant-Context and should be handled by your backend.
Authorization: Bearer <jwt>
X-Tenant-Context: <server-minted tenant context>
X-Correlation-ID: <support trace id>
API-key authentication is not presented as the public alpha tenant integration path. Use only the auth method supplied in the issued access pack.
The generated alpha auth, tenant-context, and retry contract is the public policy source for which protocol details are public, which access-pack fields remain private, how tenant context is treated as server-minted authority, and which retry behaviour SDKs and agents may assume during developer preview.
Webhook Receivers
Webhook registration is an admitted-alpha transport configuration surface. It records where Axiom may send outbound deliveries and how those deliveries are authenticated. Event subscription catalogues, stable event identities, and stable event schemas are governed separately and are not yet public self-service contracts.
Register only receiver endpoint transport settings in 0.1.0. Do not
send event_types, event schemas, routing rules, ordering
keys, or replay policy in the public endpoint registration payload.
Treat subscription and routing needs as named integration gaps until
a future governed contract publishes them.
For auth_method=hmac_sha256, verify the delivery before
parsing or processing the payload.
X-Axiom-Delivery-Id: whd_...
X-Correlation-ID: <support trace id>
X-Webhook-Timestamp: <unix seconds utc>
X-Webhook-Signature: sha256=<hex hmac>
The HMAC input is the exact string
X-Webhook-Timestamp + "." + raw request body bytes.
Compute HMAC-SHA256 with the shared secret referenced by
the issued endpoint configuration, encode it as
sha256=<lowercase hex>, and compare signatures using a
constant-time comparison.
- Reject missing timestamp or signature headers.
- Reject malformed timestamps, malformed signatures, and invalid hex.
- Reject stale timestamps. Use a five-minute replay window unless your issued runbook specifies a stricter tenant policy.
- Reject mismatched signatures before parsing or processing the body.
- Do not log shared secrets, bearer tokens, signatures, or raw tenant payloads.
- Return a 2xx status only after the receiver has durably accepted the delivery.
Delivery is at-least-once. Exactly-once delivery and ordered delivery
are not guaranteed in the alpha public contract. The
X-Axiom-Delivery-Id value is reused across retry attempts
for the same delivery record and is useful as retry/support evidence,
but it is not a stable canonical event id. Build receivers to tolerate
duplicate, delayed, and out-of-order deliveries.
Async Ingress
POST /v1/ingress/events is an admitted-alpha
conditional transport surface. A 202 Accepted
response means Axiom accepted a durable boundary record for
asynchronous handling; it does not mean the payload was validated,
promoted, or applied to domain truth.
Event types, payload schemas, and promotion rules are not public self-service catalogues in API 0.1.0. Treat them as tenant-owned integration configuration supplied through a governed runbook or future tenant-owned catalogue. Do not infer stable event types or payload schemas from examples.
Builder Checklist
| Step | Proof before continuing |
|---|---|
| Confirm contract version | Open the 0.1.0 reference or raw OpenAPI JSON and record the version used by your client. |
| Prove access | Health, OpenID discovery, bearer token, admitted tenants, and tenant-context minting all succeed. |
| Run an executable example | The Five Acts example runs in dry-run mode, then live mode when an access pack is issued. |
| Choose build-now operations | Each screen panel maps to a published operation or a named application gap. |
| Keep support evidence | Every failed call has endpoint, timestamp, status, correlation ID, and sanitized request context. |
Responses And Pagination
The generated reference is authoritative for each operation response. During developer preview, some older endpoints still use the legacy envelope while newer endpoints use JSON:API-style responses. Build a backend adapter that normalises responses at your boundary instead of spreading per-endpoint differences through screen code.
Pagination is also endpoint-specific until the migration is complete. Use the parameters and response shape shown on the operation page.
Maturity Metadata
The generated OpenAPI contract includes x-axiom-public-maturity
on public tags and operations. Use it to distinguish what is available
during developer preview from what still requires an issued access
pack or later contract commitment.
| Field | Meaning |
|---|---|
availability |
developer-preview means access still depends on issued credentials and operation authority. |
stability |
evolving means breaking changes remain possible before the first stable external-client API commitment. |
usage |
available means the operation is published for admitted developer-preview consumption. |
response_profile |
Summarises whether response shape is uniform or endpoint-specific during the alpha transition. |
Limits And Uploads
Rate-limit headers are exposed when the API applies throttling. Numeric limits are issued with the alpha access pack when they are committed for that integration; do not tune production retry behaviour from guesswork.
Upload size, file count, and media-type limits are not yet published as stable public commitments for every multipart operation. Treat upload behaviour as an integration gap until the relevant operation states its constraints in the generated reference or issued runbook.
Preview Boundaries
- Do not assume self-service credentials exist during alpha.
- Do not treat stable SDK package documentation as available until it is published here.
- Do not infer hidden workflow capability from product language; build only from published operations.
- Do not hide missing API, configuration, or custody decisions in client code.
- Do not publish private access-pack details in public repositories, prompts, screenshots, or bug reports.