Skip to main content
Error format Lerian Consignado returns errors as RFC 9457 problem details with the application/problem+json media type:
Field definitions
  • type – A URI that identifies the error in the Lerian error catalog. Built as https://errors.lerian.studio/v1/<code>.
  • title – The HTTP status text (for example, Unprocessable Entity).
  • status – The HTTP status code.
  • detail – A human-readable explanation of this occurrence. On a 5xx response Consignado sanitizes the detail to internal error, so an internal cause stays out of the body. Branch on code and on the status instead.
  • code – A stable identifier for the error. The tables below list the CLT-NNNN codes. Some operations answer a named code of their own, such as CURSOR_EXPIRED on the registration inventory sweep. A request that fails schema validation carries no code: it answers 422 with the detail validation failed, or 400 when the body cannot be parsed, and the errors list names each field.
  • errors – Optional list of individual error details, each with a location, a message, and a value.
  • upstream – Dataprev’s own error, when the gateway relays one. It holds Dataprev’s code and message, and it survives the 5xx sanitization that clears detail. See Dataprev reason codes.
  • refusal – On a bid refusal: the reason the gateway recorded for the bid, with its source, field, rule, and detail. A refusal from Dataprev also carries Dataprev’s code.

400: Bad request


401: Unauthorized


403: Forbidden


404: Not found


409: Conflict


CLT-0007 with the detail an identical request is already in flight marks a request the gateway has not finished. Retry that request under the same idempotency key. Command conflicts answer a named code in place of CLT-0007, so a client can tell them apart. Read code and detail together before you retry. These code spellings are part of the wire contract and do not change. After DATAPREV_CREDENTIAL_REQUIRED, upload the tenant’s Dataprev certificate, OAuth credentials, and requester code, then send the request again.

410: Gone


The paginated registration inventory sweep issues a cursor with a limited retry window.

413: Request entity too large


422: Unprocessable entity


A command sent again under an idempotency key that an earlier request already spent can answer one of four named codes. The earlier request can already have reached Dataprev. Do not send the command again, under this key or a new one. Read the current state of the record the command changes.

429: Too many requests


Wait for the time the Retry-After header gives, then send the request again.

500: Internal server error


501: Not implemented


A 501 answers an operation your deployment has not enabled. The routes stay mounted, so the answer arrives per request rather than as a missing path. Contract artifact downloads, contract corrections, disbursement confirmation, cessão registration, bid submission, and operations that reach Dataprev answer 501 until your deployment enables them. The detail reads internal error, because Consignado sanitizes the detail on a 5xx response. Branch on the status.

503: Service unavailable


When Dataprev produced the fault, the response also carries upstream with Dataprev’s own code and message.

Dataprev reason codes


Consignado relays Dataprev’s reason codes rather than mapping them onto codes of its own. That keeps a refusal readable against what Dataprev said. Read each reason code against Dataprev’s specification, not against this page. Dataprev can publish a code this page does not list, and the gateway still delivers it to you. They reach you in two places. On a refusal. The upstream member carries Dataprev’s own code and message. A refusal with several codes lists them comma-separated. The member holds Dataprev’s codes and sentences, bounded in length, rather than a response body. A 422 carries it for a deterministic rejection, and a 503 carries it for a retry-later fault. On contract and margin responses. Several response fields pair a Dataprev reason code with Dataprev’s own label for it. A margin read publishes blockType and ineligibilityReason, which spell the pair code and description. A contract read publishes motivo_exclusao, origem_averbacao, origem_exclusao, portabilidade_situacao, and situacao_bloqueio_garantia, which spell it codigo and descricao. Each field holds a numeric code and the text Dataprev returned beside it. Treat the set as open. Map the reason codes your integration acts on, and pass the rest through with their labels, so a code you have not mapped yet stays readable to an operator.