This guide covers the second additive parity batch for family-level integration docs:
webhooks.subscriptionswebhooks.eventswebhooks.events.replaycapabilities.get
Use this guide together with:
docs/openapi/gateway.v1.json(canonical endpoint surface)axp-spec/schemas/public_api/*.json(canonical schema contracts)docs/public-api-auth.mdanddocs/supported-limits-and-error-model.md
Webhook subscriptions define how Axme pushes event notifications to external integrators. This family manages subscription upsert, list, and revoke lifecycle.
POST /v1/webhooks/subscriptionsGET /v1/webhooks/subscriptionsDELETE /v1/webhooks/subscriptions/{subscription_id}
axp-spec/schemas/public_api/api.webhooks.subscriptions.upsert.request.v1.jsonaxp-spec/schemas/public_api/api.webhooks.subscriptions.response.v1.jsonaxp-spec/schemas/public_api/api.webhooks.subscriptions.list.response.v1.jsonaxp-spec/schemas/public_api/api.webhooks.subscriptions.delete.response.v1.json
{
"callback_url": "https://integrator.example/webhooks/axme",
"event_types": ["inbox.thread_created", "inbox.reply_received"],
"secret": "webhook-signing-secret-2026",
"active": true,
"description": "Primary production subscription"
}- For upsert writes, include
Idempotency-Keyif caller may retry. - Keep payload byte-identical when replaying the same idempotency key.
- Always propagate
X-Trace-Idand log it in delivery pipelines.
422for invalid callback URL or unsupported event types.404on delete for unknownsubscription_id.409for conflicting subscription state transitions.
- Python GA:
AxmeClient.upsert_webhook_subscription(...)AxmeClient.list_webhook_subscriptions(...)AxmeClient.delete_webhook_subscription(...)
- TypeScript GA:
AxmeClient.upsertWebhookSubscription(...)AxmeClient.listWebhookSubscriptions(...)AxmeClient.deleteWebhookSubscription(...)
- Covered by
webhooks_subscriptionsexecutable contract check inaxme-conformance.
Events endpoints ingest outgoing webhook events and expose replay behavior for delivery recovery.
POST /v1/webhooks/eventsPOST /v1/webhooks/events/{event_id}/replay
axp-spec/schemas/public_api/api.webhooks.events.request.v1.jsonaxp-spec/schemas/public_api/api.webhooks.events.response.v1.jsonaxp-spec/schemas/public_api/api.webhooks.events.replay.response.v1.json
{
"event_type": "inbox.thread_created",
"source": "chatgpt",
"payload": {
"thread_id": "7d0bcf7e-6d94-4a78-9232-1491db2a545b"
}
}- Responses include delivery counters:
queued_deliveriesprocessed_deliveriesdeliveredpendingdead_lettered
- Use
Idempotency-Keyfor event publish and replay calls. - Retry transient failures (
429,5xx) with bounded backoff. - Preserve
X-Trace-Idfrom ingress call into internal delivery telemetry.
404on replay for unknown event IDs.409on replay when event lifecycle blocks replay in current state.422on invalid event payload shape.
- Python GA:
AxmeClient.publish_webhook_event(...)AxmeClient.replay_webhook_event(...)
- TypeScript GA:
AxmeClient.publishWebhookEvent(...)AxmeClient.replayWebhookEvent(...)
- Covered by
webhooks_eventsexecutable contract check inaxme-conformance.
Capabilities provide a machine-readable contract for what the runtime currently supports (feature and intent type surface).
GET /v1/capabilities
axp-spec/schemas/public_api/api.capabilities.get.response.v1.json
{
"ok": true,
"capabilities": ["intent.submit", "intent.status.read"],
"supported_intent_types": ["intent.ask.v1", "intent.reply.v1"]
}- Read-only endpoint: safe to retry on transport errors and transient server statuses.
- Include
X-Trace-Idso capability snapshots can be correlated during incident analysis.
401/403when caller lacks auth or scope.5xxon runtime degradation (caller should retry with backoff).
- Python GA:
AxmeClient.get_capabilities(...) - TypeScript GA:
AxmeClient.getCapabilities(...) - Beta SDKs (
Go/Java/.NET): parity pending.
- Covered by
capabilities_getexecutable contract check inaxme-conformance(response shape and non-empty capabilities list validation).