curl e cinco endpoints, nesta ordem:
GET /packsmostra o pacote e o tipo de documento da fatura.POST /contactscria o contato.POST /collectionscria a coleta do contato.POST /documentsenvia a fatura para a coleta.GET /documents/{id}mostra o andamento da leitura e, no fim, os campos da fatura.
Antes de começar
Você precisa de três coisas:- a chave de API da organização. Veja Autenticação;
- um pacote de operação ativo que pede a fatura comercial. O operador cria o pacote no QX;
- o PDF de uma fatura comercial, com o nome
fatura.pdf.
qx_sua_chave. Troque esse texto pela chave da organização.
Cada POST do guia leva o cabeçalho Idempotency-Key. Crie um valor novo para cada escrita, e guarde o valor junto da escrita no seu sistema. Se a resposta não chegar, repita a chamada com o mesmo valor. A API grava o recurso uma vez só. Veja Idempotência.
1. Ache o pacote e o tipo da fatura
id do pacote (pck_12) e o id do tipo da fatura (dtp_31).
2. Crie o contato
201 traz o contato:
- O CNPJ cria uma empresa, e o CPF cria uma pessoa.
- O QX consulta o CNPJ depois da criação. O campo
lookup_statusmostra o andamento da consulta. - A organização pode já ter um contato com esse CNPJ. Nesse caso, a resposta é
409com o códigocontact_exists, e o campocontacttraz o contato. Use oiddesse contato nos próximos passos.
3. Crie a coleta
201 traz a coleta, com um slot vazio para cada requisito do pacote:
- A coleta começa no estado
assembling, em montagem. - O QX não manda e-mail ao contato. Para mandar o convite do portal ao contato, envie também
"send_invitation": true.
4. Envie a fatura para a coleta
201 traz o documento novo. A leitura já começou, e os campos ainda não têm resposta:
- O documento novo ocupa o slot vazio da fatura, e o slot
doc_310sai da coleta. Use oidda resposta (doc_318) nos próximos passos. - Quando todo documento obrigatório da coleta chega, a coleta passa a
reviewing, e o QX avisa os operadores.
5. Espere a leitura
ChameGET /documents/{id} a cada 10 segundos ou mais. Pare quando o reading_status chegar a um destes valores:
Os valores
not_started, extracting, enriching e validating dizem que a leitura ainda não terminou.
O laço abaixo usa o jq para ler o campo:
6. Leia os campos
- Cada item de
fieldstraz a chave, o rótulo e a resposta do campo. - O campo sem resposta vem com
valueigual anull. - O campo
numbertraz o número impresso que identifica o documento. Na fatura, é o número da fatura.
PATCH /documents/{id} com fields. O valor que o seu sistema grava vence o valor que a leitura extraiu.
As regras de uso
Siga estas quatro regras em toda integração:- Envie os documentos da mesma operação com
collection_id. Cada envio da API chega sozinho, e o documento que ele cria não tem irmãos na Triagem. Sem coleta, o encaixe liga o documento à operação só pelos números que ele imprime ou cita. O documento sem esses números pode esperar na Triagem por um operador. - Envie o documento de cadastro, do pacote
kyc, comcollection_id. Sem coleta, a varredura descarta esse documento quando a organização tem um pacote de operação ativo. A resposta mostradiscardedigual atrueediscard_reasonigual aoutside_pack. - Consulte o
reading_statusa cada 10 segundos ou mais. Cada consulta conta no limite de 300 chamadas por minuto da chave, com as outras chamadas. Veja Autenticação. - Envie um documento por arquivo. A API não divide o arquivo. O arquivo que junta a fatura, o romaneio e o B/L vira um documento só, do tipo que a chamada informou.