Skip to content

Requests

JSON, pagination, idempotency keys, conditional writes, timestamps and money in the EZGH Cloud APIs.

Updated View as Markdown

JSON

  • Send request bodies as JSON objects with Content-Type: application/json.
  • Field names are camelCase.
  • Responses include every documented field. A field with no value is null, and an empty list is [].
  • Ignore response fields you don’t recognize. New fields can be added at any time.

Pagination

List operations are paged. ListActions, which returns the whole IAM action catalog, is the exception.

Parameter Meaning
limit Items per page. 1 to 100, 20 by default, unless the operation’s reference says otherwise. Out of range returns 400 invalid_request.
cursor The nextCursor from the previous page. Leave it out for the first page.

The response holds the items in an array named for them, such as projects, and nextCursor, which is null on the last page:

{ "projects": [], "nextCursor": "eyJ2IjoxLCJvcmciOi…" }
  • A page can hold fewer items than limit, or none, and still have a next page. Follow nextCursor until it’s null; don’t count items.
  • A cursor works only with the list and filters it came from. Anything else returns 400 invalid_cursor.

Trails pages differ: LookupEvents takes a limit up to 200 (50 by default), and GetQueryResults up to 1,000 (100 by default).

Idempotency keys

A create can be retried safely with an Idempotency-Key header. The operations that accept one list it in the API reference, for example CreateProject and CreateProcessor.

curl -X POST https://orgs.ezghcloud.com/v1/organizations/$ORG_ID/projects \
  -H "Authorization: Bearer $EZGH_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 5f0c9e1a-2b3d-4c5e-8f60-718293a4b5c6" \
  -d '{ "name": "web" }'
  • The key is 1 to 200 printable ASCII characters, without spaces. A UUID works.
  • Retrying with the same key and the same request returns the first response again, with the header Idempotent-Replayed: true. Nothing is created twice.
  • The same key with a different request returns 409 idempotency_conflict.
  • While the first request is still running, a retry returns 409 idempotency_in_progress with Retry-After.
  • Only successful responses are kept. Retrying a request that failed runs it again.
  • Keys are kept for at least 24 hours, per organization. Keys for creating an organization are kept per user.

Operations without the header run again on every retry. ProcessDocument is one: a retry processes the document, and bills for it, again.

Conditional writes

Resources that clients read, change and write back answer GET with a strong ETag header, and every write to them returns the new one. These include users, bots, groups and custom policies in IAM, and OCR processors.

Send the ETag you read in If-Match on the write. If the resource changed since you read it, the write returns 412 precondition_failed and changes nothing: read it again and retry. If-Match is optional; without it, the write applies to whatever is there. Weak tags (W/"…") never match. The operations that take If-Match list it in the API reference.

Timestamps

  • Responses give instants in UTC with milliseconds: "2026-09-28T10:42:17.250Z".
  • Requests take RFC 3339 timestamps with Z or an offset, to at most millisecond precision: "2026-09-28T12:42:17+02:00".

Numbers and money

  • Money is a string of integer micros or cents, named in the field: "amountDueMicros": "12500000" is $12.50.
  • Decimal quantities are strings, such as "2537.25".
  • Counts and limits are JSON numbers.

Parse money and decimals as exact decimals, not floating-point numbers.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close