API de Integração

Erros

Formatos de erro da API do PrincipiaPay e o que fazer em cada caso.

401: token ausente ou inválido

{
  "error": {
    "name": "NotAuthorizedError",
    "message": "Invalid authorization token"
  }
}

Confira se o header se chama exatamente Api-Token e se o token é do ambiente certo (homologação e produção têm tokens diferentes). Confira também se a requisição não leva um header Authorization: quando ele está presente, a API usa o valor dele no lugar do Api-Token e responde 401. Veja Autenticação.

400: dados inválidos

O corpo do erro 400 depende de onde a requisição foi barrada.

Campo ausente ou com tipo errado. Antes de chegar à regra de negócio, a API confere se os campos obrigatórios existem e têm o tipo certo. O erro lista cada campo com problema:

{
  "name": "ValidationError",
  "errors": [
    { "name": "bodyPropertyError: cpf", "message": "Propriedade inválida: cpf." },
    { "name": "bodyPropertyError: products", "message": "Propriedade obrigatória não encontrada: products." }
  ]
}

O name de cada item traz o lugar (bodyPropertyError, paramsPropertyError ou queryPropertyError) e o nome do campo.

Regra de negócio nas rotas de venda. Em criar checkout e nas consultas de venda, as regras de negócio devolvem SALE-001:

{
  "name": "ValidationError",
  "errors": [
    { "name": "SALE-001", "message": "The checkoutPriceInCents cannot be bigger than the totalAmount of products" }
  ]
}

message descreve o problema. Casos comuns:

messageO que fazer
The checkoutPriceInCents cannot be bigger than the totalAmount of productsEnvie um checkoutPriceInCents menor ou igual à soma dos variantPriceInCents.
The checkout amount must be between R$ X and R$ YO valor está fora dos limites configurados para a sua conta.
The upfront amount must be ...A entrada (upfrontInCents) está abaixo do mínimo ou não é menor que a soma dos produtos. Veja Valor da entrada.
Wrong product structure, check documentation for detailsproducts vazio ou com item sem algum dos cinco campos obrigatórios.
Sale not foundNenhuma venda da sua conta com esse saleId ou externalSaleId. As consultas de venda devolvem 400, não 404.
SaleId or externalSaleId is requiredInforme o ID na rota de consulta.

Demais erros. Nas outras rotas, e nas regras do cadastro automático de produto e variação em POST /sales, o erro vem no formato { "error": { "name", "message" } }, com name padronizado e message descrevendo o problema (às vezes em português):

{
  "error": {
    "name": "BodyPropertyError",
    "message": "Curso já existe."
  }
}

404: rota inexistente

Um caminho que não existe devolve 404 com HTML (Cannot GET /checkout/v4/...), não JSON. Se você receber HTML, confira a URL base e o caminho da rota em Ambientes.

Recursos não encontrados

Rotas que buscam por ID (curso, turma, campanha, venda exclusiva) devolvem 404 em JSON quando o registro não é encontrado. A exceção são as consultas de venda (GET /sales/purchase/{saleId} e GET /sales/external-purchase/{externalSaleId}), que devolvem 400 com Sale not found. Os exemplos de cada rota estão nas Rotas da API.

Nesta página