Every list endpoint in the TigerTrust API uses the same pagination contract and the same error envelope. This page is the canonical reference — individual endpoint pages link here rather than re-documenting these shapes.

Pagination

Query parameters

page
integer
default:"1"
1-indexed page number. Values less than 1 are clamped to 1.
limit
integer
default:"50"
Items per page. Clamped to the range [1, 100]. Requesting limit=500 returns 100 items.
offset
integer
Optional zero-based offset. When provided, overrides page. Useful for cursor-style paging.
?page=3&limit=25 and ?offset=50&limit=25 return the same window.

List response envelope

data
array
The page of results.
pagination
object
curl "https://api.tigertrust.example.com/api/certificates?page=2&limit=25&status=expiring" \
  -H "X-API-Key: ck_9f2a...7c4e"
{
  "data": [
    {
      "id": 4211,
      "commonName": "checkout.example.com",
      "issuer": "CN=Let's Encrypt R3",
      "status": "expiring",
      "expiresAt": "2026-09-12T23:59:59.000Z"
    }
  ],
  "pagination": {
    "page": 2,
    "limit": 25,
    "total": 137,
    "totalPages": 6
  }
}

Single-resource envelope

GET /:id, POST, PUT, and PATCH responses wrap one object in data:
{
  "data": {
    "id": 4211,
    "commonName": "checkout.example.com"
  }
}
DELETE returns 204 No Content with an empty body on success.

Error envelope

Errors always use the shape below and set an appropriate HTTP status code.
error
object
required
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid certificate data",
    "details": {
      "errors": [
        {
          "path": ["commonName"],
          "message": "Required",
          "code": "invalid_type"
        }
      ]
    }
  }
}

HTTP status codes

CodeWhen it appears
200 OKSuccessful GET, PUT, PATCH, or action POST
201 CreatedSuccessful POST that creates a resource
204 No ContentSuccessful DELETE
400 Bad RequestValidation failure, missing required fields, malformed IDs
401 UnauthorizedNo or invalid session / API key
403 ForbiddenAuthenticated but lacks permission
404 Not FoundResource does not exist or belongs to a different workspace
409 ConflictDuplicate resource
429 Too Many RequestsRate limit tripped on sensitive endpoints
500 Internal Server ErrorUnhandled server error; response includes a stable code
503 Service UnavailableUpstream dependency (PKI Core, ACME directory) is unreachable

Retries

GET endpoints are safe to retry. Mutating endpoints are not idempotent by default — retrying may produce duplicate records. Wrap retries in your own idempotency layer (for example, deduplicate by common name and serial number). Filtering is per-endpoint. Common patterns:
  • ?status=active|expiring|expired|revoked on the certificates list
  • ?search=<term> for substring match on common name and issuer
  • ?type=<value> on discovery scans
See each resource page in API Reference for the full filter list.

Sorting

The default sort is by creation date descending. There is no public sort= parameter — if you need a specific ordering, page through with limit=100 and sort client-side.

See also