Publishes domain events (case status changes, new documents, application decisions) to subscriber endpoints. Each delivery is signed with HMAC-SHA256 (`X-IronBrick-Signature`), retried with exponential backoff, and available for replay for 7 days.
Reference design by Iron Brick LLC. Not an official government system; endpoints and data models are adapted to each agency's systems of record during implementation.
Base URLs
https://dev.ironbrick.us/sandbox/events/v1Iron Brick sandbox (synthetic data; free developer account)https://{agency-gateway}/events/v1Agency deployment (behind the agency API gateway)
Authentication
Send an OAuth 2.0 bearer token from POST https://dev.ironbrick.us/oauth/token in the Authorization header. Your application must hold the scope listed on each operation. How authentication works.
| Scope | Grants |
|---|---|
events:manage | Manage event subscriptions |
POST /subscriptions
Create a subscription · requires scope events:manage
Request body application/json
{
"eventTypes": [
"case.status_changed"
],
"callbackUrl": "https://partner.example.gov/hooks/ironbrick"
}Responses
| 201 | Subscription created (includes the signing secret, shown once) |
| 400 | Invalid request |
| 401 | Missing or invalid access token |
| 403 | Caller lacks the required scope |
curl -X POST "https://dev.ironbrick.us/sandbox/events/v1/subscriptions" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"eventTypes": ["case.status_changed"], "callbackUrl": "https://partner.example.gov/hooks/ironbrick"}'{
"subscriptionId": "SUB-0091",
"eventTypes": [
"case.status_changed",
"document.available"
],
"callbackUrl": "https://partner.example.gov/hooks/ironbrick",
"status": "active",
"createdAt": "2026-10-01T12:00:00Z"
}GET /subscriptions
List subscriptions · requires scope events:manage
Responses
| 200 | Subscriptions |
| 401 | Missing or invalid access token |
| 403 | Caller lacks the required scope |
curl -X GET "https://dev.ironbrick.us/sandbox/events/v1/subscriptions" \
-H "Authorization: Bearer $TOKEN"[
{
"subscriptionId": "SUB-0091",
"eventTypes": [
"case.status_changed",
"document.available"
],
"callbackUrl": "https://partner.example.gov/hooks/ironbrick",
"status": "active",
"createdAt": "2026-10-01T12:00:00Z"
}
]DELETE /subscriptions/{subscriptionId}
Delete a subscription · requires scope events:manage
Parameters
| Name | In | Type | Description |
|---|---|---|---|
subscriptionId required | path | string | Subscription identifier. |
Responses
| 204 | Deleted |
| 401 | Missing or invalid access token |
| 403 | Caller lacks the required scope |
| 404 | Resource not found |
curl -X DELETE "https://dev.ironbrick.us/sandbox/events/v1/subscriptions/{subscriptionId}" \
-H "Authorization: Bearer $TOKEN"GET /event-types
List event types · requires scope events:manage
Responses
| 200 | Available event types |
| 401 | Missing or invalid access token |
curl -X GET "https://dev.ironbrick.us/sandbox/events/v1/event-types" \
-H "Authorization: Bearer $TOKEN"[
{
"type": "case.status_changed",
"description": "A case moved to a new status."
},
{
"type": "application.decided",
"description": "An application was found eligible, ineligible, or awarded."
},
{
"type": "document.available",
"description": "A document passed scanning and is ready."
},
{
"type": "request.released",
"description": "A records request release package was published."
}
]POST /subscriptions/{subscriptionId}/replay
Replay recent events · requires scope events:manage
Re-delivers events from the last 7 days, for recovery after an outage.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
subscriptionId required | path | string | Subscription identifier. |
Request body application/json
{
"since": "2026-10-01T00:00:00Z"
}Responses
| 202 | Replay started |
| 401 | Missing or invalid access token |
| 403 | Caller lacks the required scope |
| 404 | Resource not found |
curl -X POST "https://dev.ironbrick.us/sandbox/events/v1/subscriptions/{subscriptionId}/replay" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"since": "2026-10-01T00:00:00Z"}'Schemas
Subscription
| Field | Type | Description |
|---|---|---|
subscriptionId | string | |
eventTypes | array of string | |
callbackUrl | string (uri) | |
status | string (active | paused | failing) | |
createdAt | string (date-time) |