Skip to main content
Records & FOIATransparencyv1.0.0OpenAPI 3.1

Supports the records-request lifecycle: intake, perfection, search, review, and release. Calculates statutory due dates by track, and exposes release packages through the Document Services API.

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/records-requests/v1 Iron Brick sandbox (synthetic data; free developer account)
  • https://{agency-gateway}/records-requests/v1 Agency deployment (behind the agency API gateway)

OpenAPI YAML JSON

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.

ScopeGrants
requests:readRead records requests
requests:writeCreate and update records requests

POST /requests

Log a new request · requires scope requests:write

Request body application/json
json
{
  "subject": "Records related to contract 70RSAT26C0000012",
  "track": "complex",
  "requesterRef": "REQ-a91e"
}
Responses
201Request created
400Invalid request
401Missing or invalid access token
403Caller lacks the required scope
Example request
curl -X POST "https://dev.ironbrick.us/sandbox/records-requests/v1/requests" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"subject": "Records related to contract 70RSAT26C0000012", "track": "complex", "requesterRef": "REQ-a91e"}'
Response 201
{
  "requestId": "FOIA-2026-03318",
  "track": "complex",
  "status": "searching",
  "receivedDate": "2026-07-02",
  "dueDate": "2026-07-31",
  "subject": "Records related to contract 70RSAT26C0000012",
  "pagesReleased": 0
}

GET /requests

List requests · requires scope requests:read

Parameters
NameInTypeDescription
statusquerystring
dueBeforequerystringRequests due on or before this date.
cursorquerystringPagination cursor from a previous response.
limitqueryintegerMaximum items to return.
Responses
200A page of requests
401Missing or invalid access token
403Caller lacks the required scope
Example request
curl -X GET "https://dev.ironbrick.us/sandbox/records-requests/v1/requests" \
  -H "Authorization: Bearer $TOKEN"
Response 200
{
  "data": [
    {
      "requestId": "FOIA-2026-03318",
      "track": "complex",
      "status": "searching",
      "receivedDate": "2026-07-02",
      "dueDate": "2026-07-31",
      "subject": "Records related to contract 70RSAT26C0000012",
      "pagesReleased": 0
    }
  ],
  "page": {
    "nextCursor": "eyJvZmZzZXQiOjUwfQ",
    "limit": 50
  }
}

GET /requests/{requestId}

Get a request · requires scope requests:read

Parameters
NameInTypeDescription
requestId requiredpathstringRequest identifier.
Responses
200The request
401Missing or invalid access token
403Caller lacks the required scope
404Resource not found
Example request
curl -X GET "https://dev.ironbrick.us/sandbox/records-requests/v1/requests/{requestId}" \
  -H "Authorization: Bearer $TOKEN"
Response 200
{
  "requestId": "FOIA-2026-03318",
  "track": "complex",
  "status": "searching",
  "receivedDate": "2026-07-02",
  "dueDate": "2026-07-31",
  "subject": "Records related to contract 70RSAT26C0000012",
  "pagesReleased": 0
}

GET /requests/{requestId}/releases

List release packages · requires scope requests:read

Parameters
NameInTypeDescription
requestId requiredpathstringRequest identifier.
Responses
200Release packages
401Missing or invalid access token
403Caller lacks the required scope
404Resource not found
Example request
curl -X GET "https://dev.ironbrick.us/sandbox/records-requests/v1/requests/{requestId}/releases" \
  -H "Authorization: Bearer $TOKEN"
Response 200
[
  {
    "releaseId": "REL-1",
    "documentIds": [
      "string"
    ],
    "releasedAt": "2026-10-01T12:00:00Z"
  }
]

Schemas

RecordsRequest

FieldTypeDescription
requestIdstring
trackstring (simple | complex | expedited)
statusstring (received | perfected | searching | review | released | closed)
receivedDatestring (date)
dueDatestring (date)
subjectstring
pagesReleasedinteger