Synchronization and errors
Keep updates in order
Section titled “Keep updates in order”Vehicle and Rental upserts are scoped to your organization and your external_id. On creation, supply the available context. For subsequent changed updates, send source_revision or source_updated_at. Prefer an integer revision from your source system and increase it strictly. Once a revision is stored, a timestamp cannot override it. Omitted properties keep their current value; explicit null clears only nullable fields. Unknown properties are rejected.
Rental lifecycle rules still apply: vehicle assignment freezes when the first inspection starts; after departure, some planned fields freeze; after completion, only supported report detail corrections remain. A conflicting or older update receives a structured error. Read the current resource before retrying with a new revision.
Make POST commands safe to retry
Section titled “Make POST commands safe to retry”Every POST write requires an Idempotency-Key header. Generate a unique value for each intended operation, keep it stable across network retries, and never reuse it with a different body. The key is scoped to your organization and retained for seven days. Replaying the same completed command returns the original successful response; a conflicting reuse fails.
PUT by external ID is deterministic, but version markers still matter for changed updates. Do not create a fresh external ID for a retry of the same vehicle or reservation.
Handle errors
Section titled “Handle errors”API errors use application/problem+json with a stable code, HTTP status, human-readable detail, request_id, retryable and optional field-level errors. Log the request_id when contacting support, without logging secrets or private document bytes.
The type URL identifies a public error page. For example, INVALID_API_KEY explains the cause and the next action. Each code emitted by this middleware has a matching English, French and Spanish page.
| Response | Action |
|---|---|
401 | Check whether the key is valid, expired or revoked. |
403 | Check key permissions and the organization’s commercial access. |
409 | Inspect the current resource or idempotency conflict before changing the request. |
422 | Correct the named fields; do not retry the same invalid body. |
429 | Respect Retry-After and the rate-limit headers. |
503 | Retry according to retryable and any Retry-After header. |
GET /v1/capabilities reports effective quotas, file limits and retention values for your key. The API reference is authoritative for each route’s possible responses.