Respostas e Convenções da API

Códigos HTTP, formatos de resposta, validação, JSON, UUID, datas, valores monetários, idempotência e correlação.

Como interpretar uma resposta

Considere o código HTTP junto com o corpo e o estado do recurso. HTTP 200 ou 201 informa o resultado da requisição previsto pelo endpoint. Para confirmar a aprovação do pagamento, confira os campos da Venda e da Transação retornadas.

Na resposta de uma Venda, status descreve a situação consolidada da Venda. Em transactions[], status resume cada Transação e detailed_status informa sua etapa de processamento. Uma Transação paga pode coexistir com uma Venda parcialmente paga. Consulte Venda e Transação e Status da Transação.

Quando houver corpo JSON, interprete-o conforme o schema da operação. Uma resposta 204 No Content não tem corpo; não tente interpretá-la como JSON.

Códigos HTTP

Esta tabela reúne respostas documentadas nos endpoints consultados e erros confirmados nos fluxos implementados. Cada código se aplica às operações indicadas; não presuma que todas as rotas retornem todos eles.

HTTPSignificadoQuando ocorreAção recomendada
200Requisição concluídaConsultas e operações como pagamento de Venda em aberto.Leia o corpo e confira o estado financeiro quando houver pagamento.
201Recurso criadoCriação de Venda.Armazene o UUID e acompanhe a Venda e suas Transações.
204Operação concluída sem conteúdoDocumentado em captura de cartão e invalidação de Pix/Boleto.Não tente ler JSON; consulte a Transação quando precisar confirmar seu estado.
400Solicitação rejeitada pelo fluxoValidação de campos, estado incompatível e determinados erros de processamento ou comunicação.Leia parameter ou errors[]. Não presuma que toda resposta 400 é apenas erro de preenchimento.
401Autenticação ou habilitação rejeitadaChave ausente/inválida, empresa inativa e algumas verificações de habilitação de Split.Confira credencial, ambiente e o identificador do erro.
403Acesso ou operação bloqueadosRestrição de IP ou configuração que impede múltiplos pagamentos.Revise a regra indicada antes de reenviar.
404Recurso não encontradoConsultas e operações cujo fluxo não encontra a Venda, Transação, Checkout ou Vendedor.Confira identificador, empresa e ambiente.
409ConflitoIdempotência, captura/cancelamento já realizado e Split já existente, conforme a operação.Consulte o estado atual antes de decidir por outra tentativa.
429Limite de tentativas atingidoLimite da sessão de SmartForm no fluxo de Checkout.Interrompa as tentativas e investigue o resultado.
500Falha internaTratamento comum de erro interno do Gateway.Registre a correlação e consulte o recurso antes de repetir uma ação financeira.
503Falha de comunicação com serviço externoConfirmado no fluxo implementado de criação de Transação de cartão.Consulte a Venda e as Transações antes de decidir por outro envio.

Estrutura das respostas de erro

O tratamento comum de erros de domínio utiliza esta estrutura. O exemplo corresponde à condição de Venda não encontrada; o UUID de correlação é fictício.

{
  "message": "charge not found",
  "parameter": "charge.not_found",
  "correlation_uuid": "11111111-1111-4111-8111-111111111111"
}
CampoResponsabilidade
messageDescrição da condição para diagnóstico. O texto pode variar; evite usá-lo como chave de decisão.
parameterIdentificador técnico do erro tratado, como charge.not_found. Use-o junto ao HTTP e à operação.
correlation_uuidIdentificador que permite relacionar a requisição ao diagnóstico do Gateway. Registre-o quando presente.
errorDetalhe adicional opcional de diagnóstico. O tratamento comum o omite em produção e Sandbox; a integração não deve depender dele.

O nome parameter não significa necessariamente um campo inválido. Ele também identifica erros de autenticação, estado de recurso, configuração e processamento.

Consulte Códigos de erros para interpretar cada identificador. Não presuma um envelope único: validação de campos e algumas respostas do Checkout usam formatos diferentes.

Erros de validação

A criação de Venda valida campos como order_id. Quando ele está ausente e os demais dados exigidos são válidos, a validação pode retornar HTTP 400 com o seguinte item:

{
  "errors": [
    {
      "field": "order_id",
      "message": "cannot be blank"
    }
  ]
}

field aponta o campo rejeitado e message descreve a falha. Uma mesma resposta pode conter vários itens. Corrija os campos indicados, confira os tipos e regras do endpoint e valide a solicitação novamente. Esse formato não inclui necessariamente parameter ou correlation_uuid; capture também os headers de diagnóstico disponíveis.

Resposta específica do SmartForm

Ao atingir o limite de tentativas da sessão, o fluxo de Checkout responde HTTP 429 com uma serialização própria:

{
  "Message": "maximum number of attempts reached for checkout smartform",
  "Param": "checkout.smartform_limit_exceeded"
}

Observe as maiúsculas em Message e Param. Nesse caso, o identificador está em Param; não exija parameter para reconhecer a condição. O prazo de liberação e o procedimento de recuperação da sessão permanecem A confirmar.

Convenções de dados e requisições

TemaComo interpretar
JSONEnvie o corpo no formato aceito pelo endpoint, normalmente application/json, com os nomes de campos exatamente como documentados. Leia JSON somente quando houver corpo.
UUIDVenda e Transação têm UUIDs próprios. Um charge_uuid identifica a Venda; transaction_uuid identifica uma Transação. Não troque um pelo outro.
Outros identificadoresorder_id é a referência do pedido enviada pela integração. gateway_id e external_id são identificadores distintos retornados em Transações; não os use como UUID de caminho sem previsão no endpoint.
Valores monetáriosAs consultas de Vendas e Transações documentam valores inteiros em centavos: 1000 corresponde a R$ 10,00. Confira a unidade do campo; valores percentuais de Split seguem o contrato próprio.
Datas e horáriosHá timestamps nos exemplos de resposta com Z, datas sem horário e formatos específicos por campo. Preserve o fuso recebido e siga a regra do endpoint para envio e filtros; não aplique uma conversão global.
Campos opcionaisOmitir um campo, enviar null, "", 0 ou false pode ter efeitos diferentes. Confira obrigatoriedade, tipos e regras; opcional não significa que qualquer valor vazio seja aceito.
Valores nulosAlguns dados de autorização e datas podem vir como null. Trate a ausência de informação sem converter automaticamente para zero ou texto vazio.
ArraysRespeite a estrutura de itens. Uma Venda pode retornar transactions: [] sem que isso represente erro de JSON; listas paginadas usam estruturas próprias.
Parâmetros de URLSubstitua os parâmetros de caminho pelo identificador correto. Use apenas os filtros documentados para aquela consulta e codifique valores de query conforme a URL.

As consultas de Vendas e Transações têm paginação e regras próprias para filtros de data, incluindo ajustes em alguns campos. Essas regras não se aplicam automaticamente a outras operações.

Headers relevantes

HeaderUso
api_keyCredencial da empresa nas chamadas autenticadas. Use a chave do ambiente correspondente.
Content-Type: application/jsonIdentifica o formato do corpo nas operações que recebem JSON.
Correlation-IdCorrelação reconhecida pelo middleware do Gateway, conforme a seção seguinte.
Idempotency-KeyUUID opcional nas rotas de criação de Venda, pagamento de Venda em aberto e simulação de pagamento no Sandbox.

Use o host correto de Live ou Sandbox. Consulte Chaves e Autenticação da API para obter e proteger a credencial.

Idempotência

O header opcional Idempotency-Key aceita UUID nas seguintes operações:

OperaçãoResposta de uma repetição concluída
Criar venda — POST /v1/charges201 com a Venda em seu estado atual.
Pagar venda em aberto — POST /v1/charges/{charge_uuid}/pay200 com a Venda em seu estado atual.
Simular pagamento Pix/Boleto — POST /v1/transactions/{transaction_uuid}/pay204, sem corpo. Disponível somente no Sandbox.

A chave identifica uma solicitação de criação, pagamento ou simulação, conforme a rota. Se a resposta ficar inconclusiva e for necessário repetir a mesma operação, mantenha a chave e o corpo. Use outra chave somente para uma nova operação, depois de verificar o resultado da anterior.

No fluxo implementado:

  • A chave é associada à empresa, à operação e ao recurso.
  • Uma repetição concluída usa o retorno da operação indicado na tabela; não há garantia de repetir os mesmos bytes da resposta original. Na criação de Venda, dados transitórios de 3DS ou SmartForm da primeira resposta podem não ser reconstituídos.
  • Payload diferente produz 409 idempotency_key.payload_mismatch.
  • Uma solicitação ainda em processamento produz 409 idempotency_key.processing.
  • Uma tentativa registrada como falha produz 409 idempotency_key.failed; a mesma chave não reinicia esse processamento.
  • Resultado indisponível produz 409 idempotency_key.result_not_found.

Não contorne um conflito enviando imediatamente outra chave para o mesmo pagamento. Consulte o estado da Venda e das Transações. O prazo de retenção da chave e uma política de retry automático permanecem A confirmar.


Para timeout, recusa ou resposta inesperada, consulte Solução de Problemas e Boas Práticas.