GraphQL API
Endpoint
POST/api/v1/graphql
Headers
| Header | Required | Description |
|---|---|---|
| Authorization | yes | Bearer <API_KEY> |
| X-Tenant-Slug | yes | Tenant slug |
| Content-Type | yes | application/json |
Schema governance
bin/rails graphql:schema:dump
bin/rails graphql:schema:checkgraphql:schema:check is wired in CI (build_and_test.yml).
Persisted operations
Set GRAPHQL_PERSISTED_ONLY=true to enforce allowlisted hashes from:
config/graphql/persisted_operations.yml
Client sends:
X-GraphQL-Sha256: <sha256-of-query>
Request
curl -X POST "http://localhost:3333/api/v1/graphql" \
-H "Authorization: Bearer <API_KEY>" \
-H "X-Tenant-Slug: agado-ats" \
-H "Content-Type: application/json" \
-d '{"query":"query { jobs(page:1, perPage:5) { nodes { id name status } meta { page total } } }"}'200 Response
{
"data": {
"jobs": {
"nodes": [{ "id": "1", "name": "Ruby developer", "status": "open" }],
"meta": { "page": 1, "total": 1 }
}
}
}