Errors

Canonical ROS Connect error codes from the runtime catalogue. HTTP aliases such as INTEGRATION_DUPLICATE stay 409.

{
  "success": false,
  "error": {
    "code": "SIGNATURE_INVALID",
    "message": "Invalid signature",
    "requestId": "req_demo"
  }
}
CodeHTTPMeaningResolutionRetryable
INTEGRATION_NOT_FOUND404No
INTEGRATION_NOT_CONNECTED409Connection exists but is not in CONNECTED.Connect the sandbox mock POS from the Developer Console (created with the app).No until connected.
INTEGRATION_NOT_IMPLEMENTED501Vendor adapter is declared only.Do not send production traffic. Use mock POS.No.
INTEGRATION_CONFIG_INVALID422No
INTEGRATION_AUTH_FAILED401No
INTEGRATION_TIMEOUT504Yes
INTEGRATION_RATE_LIMITED429Alias of RATE_LIMITED.Back off 60 seconds.Yes.
INTEGRATION_BAD_RESPONSE502Yes
INTEGRATION_DUPLICATE409Alias of duplicate ingest (HTTP 409).Same as DUPLICATE_EVENT.No.
INTEGRATION_REPLAY409No
INTEGRATION_UNAUTHORIZED403No
INTEGRATION_UNSUPPORTED_CAPABILITY403No
AUTHENTICATION_FAILED401Key id or credential is missing or revoked.Use the active sandbox API key id from the Developer Console.No until credentials are valid.
SIGNATURE_INVALID401HMAC over timestamp + '.' + raw body did not match.Sign the exact bytes you send. Do not JSON.stringify after signing.No — fix the signature.
SIGNATURE_EXPIRED401X-ROS-Timestamp is outside the 5-minute replay window.Use the current unix seconds and retry once.Yes, with a fresh timestamp and signature.
REPLAY_DETECTED409The same signed event was already accepted.Use a new event id / idempotency key for a new fact.No — treat as already processed.
INVALID_SCHEMA422Body failed the X9 envelope/schema.Compare with the OpenAPI/Postman example for this path.No until the body is valid.
INVALID_FIELD422No
MISSING_REQUIRED_FIELD422A required X9 field was omitted.Send eventId, eventType, schemaVersion, integrationId, occurredAt, idempotencyKey, data.No.
UNSUPPORTED_CAPABILITY403This connection cannot perform that action.Check GET …/capabilities. Mock POS supports the X9 catalogue; vendor adapters are NOT CONNECTED.No.
INTEGRATION_DISABLED403No
DUPLICATE_EVENT409This event id was already ingested.Treat as success for retries of the same event.No — already stored.
STALE_EVENT409No
RATE_LIMITED429More than 30 requests / 60 seconds on this connection.Back off. Honour Retry-After when present.Yes after the window.
PROVIDER_TIMEOUT504Yes
PROVIDER_ERROR502Yes
IDEMPOTENCY_CONFLICT409Same idempotencyKey with a different payload.Replay the original body, or mint a new idempotencyKey.No — payload must match the stored request.
INTERNAL_ERROR500Unexpected server error.Retry with the same idempotency key.Yes.

Honour Retry-After on 429. 4xx duplicate/conflict responses are not retried.