Documentation

Error format

Last updated

Problem-details shape

All Farshore services return errors as RFC 9457 problem details (the successor to RFC 7807) with the media type application/problem+json. The base shape is consistent across every service:

{
  "type":   "https://farshorelabs.com/errors/<slug>",
  "title":  "Short, human-readable summary.",
  "status": 400,
  "detail": "Specific, actionable description of this occurrence.",
  "instance": "/v1/availability/2026-05-22/9c1e9f2a",
  "traceId":  "00-4b3f...-a1...-01"
}

Field-level validation errors include an errors object keyed by field name:

{
  "type":   "https://farshorelabs.com/errors/validation-failed",
  "title":  "Request validation failed.",
  "status": 400,
  "detail": "One or more fields are invalid.",
  "errors": {
    "region": ["'mars-central' is not a known Azure region."]
  }
}

Error catalog

StatusType slugMeaning
400validation-failedRequest payload or query parameters failed validation.
401unauthenticatedNo credential, or credential not recognised. Re-check the Authorization header.
403subscription-requiredCredential is valid but the caller does not have an active subscription for the requested service.
403service-not-allowedCredential is valid but not scoped to the requested service.
404not-foundRequested resource (e.g. a specific record) does not exist.
409conflictRequest conflicts with current state (e.g. activating a service that is already active).
422unprocessablePayload was syntactically valid but business rules rejected it.
429quota-exceededMonthly quota exhausted. See Retry-After header.
500internalUnexpected server error. Safe to retry with backoff.
503upstream-unavailableAn upstream data source (e.g. Azure pricing API) is failing. Retry with exponential backoff.

Including a trace ID in support requests

Every response (success or failure) carries a W3C traceparent header. The same value appears in the traceId property of problem-details responses. Quote this ID when contacting support@farshorelabs.com so we can locate the request in our telemetry.