Skip to content

Erros ​

Todas as falhas respondem com a mesma forma, para que tenha uma única coisa a interpretar:

json
{
  "Error": {
    "Code": "BUILDING_NOT_FOUND",
    "Message": "There is no condominium with that identifier.",
    "Field": "idBuilding"
  }
}
CampoO que é
CodeIdentificador estável da falha. É por aqui que deve decidir, nunca pela mensagem
messageDescrição em inglês, destinada a quem está a desenvolver e a registos de diagnóstico
fieldO parâmetro ou campo em causa, quando existe um. null caso contrário

Decida pelo código

As mensagens podem ser reescritas sem aviso; os códigos não. Um switch sobre message parte-se na primeira melhoria de texto.

Estados HTTP ​

EstadoQuando aconteceO que fazer
400O pedido está mal formado ou traz valores que não são aceitesCorrija o pedido. Repetir não ajuda
401Problema com a credencialVer Autenticação
403Credencial válida sem a área necessáriaVer Permissões
404O registo indicado não existe nesta empresaConfirme o identificador
409Conflito com o que já existeVer a secção de conflitos abaixo
422O pedido está correto mas a operação não pôde ser concluídaDepende do código. Ver abaixo
429Excedeu o limite de pedidosEspere e repita. Ver Limites
500Erro inesperado do nosso lado (INTERNAL_ERROR)Repita mais tarde; se persistir, reporte
502O sistema que guarda as ocorrências desta empresa não respondeuRepita daqui a pouco

Pedido inválido — 400 ​

CódigoSignificado
INVALID_BODYO corpo do pedido falta ou não é JSON válido
MISSING_FIELDFalta um campo obrigatório. field diz qual
MISSING_CRITERIAUma procura foi feita sem nenhum critério
MISSING_DESCRIPTIONA operação exige descrição e não veio nenhuma
INVALID_CURSORO cursor não é um que esta API tenha emitido
CONFLICTING_FILTERSDois parâmetros que não podem ser usados em conjunto
UNSUPPORTED_FILTERFiltro desconhecido, ou não aplicável a esta empresa
UNSUPPORTED_INCLUDEFoi pedida uma coleção que este ponto não sabe incluir
UNSUPPORTED_FIELDUm campo do corpo não se aplica a esta empresa
INVALID_TYPEUm identificador de tipo não corresponde a nenhum registado
INVALID_STATUSO estado indicado não existe ou não se aplica
INVALID_REFERENCEUm identificador de tabela de referência não é válido
INVALID_PERIODDatas de período incoerentes entre si
INVALID_TAX_IDNúmero de contribuinte ausente ou inválido
TOO_MANY_ATTACHMENTSMais anexos do que o permitido
DELIVERY_POINT_NOT_FOUNDO ponto de entrega indicado não corresponde a nenhum contrato de consumo
INVOICE_NOT_FOUNDUma fatura referida no corpo do pedido não existe
INVALID_AMOUNTUm valor do corpo do pedido não é aceite, por exemplo igual ou inferior a zero

Filtros e include desconhecidos são recusados, não ignorados

Um include=intervention mal escrito responde UNSUPPORTED_INCLUDE em vez de ser lido como "não incluir". Assim um erro de escrita não passa por comportamento normal.

Não encontrado — 404 ​

BUILDING_NOT_FOUND, FRACTION_NOT_FOUND, OCCURRENCE_NOT_FOUND, CLAIM_NOT_FOUND, SUPPLIER_NOT_FOUND, INVOICE_NOT_FOUND, ENTRY_NOT_FOUND, REFERENCE_NOT_FOUND, ATTACHMENT_NOT_FOUND.

Todos significam o mesmo: não existe, nesta empresa, um registo com esse identificador. Note que identificadores não são comparáveis entre empresas.

Conflito — 409 ​

CódigoSignificado
IDEMPOTENCY_KEY_REUSEDA mesma chave de idempotência foi usada noutro pedido diferente. Ver Idempotência
DOCUMENT_ALREADY_EXISTSJá existe um documento com esse número para esse fornecedor nesse ano
INVOICE_ALREADY_SETTLEDA fatura que tentou liquidar já estava liquidada

Um 409 não se resolve repetindo. DOCUMENT_ALREADY_EXISTS e INVOICE_ALREADY_SETTLED costumam significar que a operação já foi feita — confirme antes de tratar como falha.

Não foi possível concluir — 422 ​

O pedido estava correto; o estado da empresa é que não permite a operação.

CódigoSignificadoResolve-se
CLAIMS_NOT_CONFIGUREDEsta empresa não tem os sinistros configuradosNa aplicação, pelo cliente
MAINTENANCE_NOT_LICENSEDA empresa não tem o módulo de manutenção licenciadoComercialmente
BUILDING_WITHOUT_MANAGERO condomínio não tem gestor atribuídoNa aplicação, pelo cliente
BANK_ACCOUNT_NOT_DEFINEDFalta a conta bancária necessária à operaçãoNa aplicação, pelo cliente
OCCURRENCE_NOT_CREATEDA ocorrência não chegou a ser criadaReporte, com o pedido enviado
INVOICE_NOT_CREATEDA fatura não chegou a ser registadaReporte
PAYMENT_NOT_CREATEDO pagamento não chegou a ser registadoReporte
EXERCISE_CLOSEDA contabilidade do condomínio está fechada no mês da data do documentoNa aplicação, pelo cliente
EXPENSE_NOT_CREATEDA despesa não chegou a ser registadaReporte
PROPOSAL_NOT_CREATEDA proposta não chegou a ser submetidaReporte
EMAIL_NOT_QUEUEDA mensagem não foi aceite para envioReporte

Os quatro primeiros dependem de configuração do cliente e não se resolvem repetindo. Apresente-os ao utilizador como o que são: falta configurar algo na aplicação.

Sistema indisponível — 502 ​

UPSTREAM_UNAVAILABLE — nas empresas cujas ocorrências são geridas noutro sistema, esse sistema não respondeu.

Repare que a resposta é um erro e não uma lista vazia: uma lista vazia leria-se como "esta empresa não tem ocorrências", o que seria falso. Repita daqui a pouco, com espera crescente.

API de Integração GC