Referência da API
Referência da API de leitura e chaves
Referência da API de leitura e chaves
Gerado de
contracts/— não editar à mão. Versão do contrato: 0.7.0. Para atualizar, rodepython docs/ajuda/ferramentas/gerar-referencia.py.
Rotas /v1/saida para ler eventos, manifestos, documentos, comprovantes e prazos, e rotas /v1/api-keys para emitir e revogar chaves.
Esta é uma referência estática: lê o contrato e descreve cada rota. Não há botão para executar chamadas. Nos exemplos do guia use sempre SUA_CHAVE_AQUI no lugar da chave real.
Rotas#
- GET
/v1/api-keys— Lista as API keys da transportadora autenticada (só prefixo, nunca o valor) - POST
/v1/api-keys— Emite uma nova API key para a transportadora autenticada (D-02) - GET
/v1/api-keys/atual— Dados da API key que autenticou a chamada (tenant e ambiente, D-03) - DELETE
/v1/api-keys/{id}— Revoga uma API key (D-02) - GET
/v1/saida/comprovantes/{id}/pacote— Baixa o pacote de evidências quando o escopo autorizar - GET
/v1/saida/comprovantes/{id}/pdf— Baixa o PDF do comprovante quando o escopo autorizar - GET
/v1/saida/configuracao-prazo— Lê a configuração de prazo pela chave do TMS - PUT
/v1/saida/configuracao-prazo— Grava cidades e prazos pela chave do TMS - GET
/v1/saida/documentos/{id}— Obtém um documento fiscal da leitura de saída - GET
/v1/saida/eventos— Lista eventos de saída alterados desde o cursor - GET
/v1/saida/eventos-cte/{id}/xml— Baixa o XML assinado do evento 110180 com o protocolo - GET
/v1/saida/manifestos— Lista manifestos visíveis para a chave - GET
/v1/saida/manifestos/{id}— Obtém um manifesto da leitura de saída - GET
/v1/saida/openapi/{finalidade}— Devolve o OpenAPI filtrado da finalidade
Detalhe por rota#
GET /v1/api-keys#
Lista as API keys da transportadora autenticada (só prefixo, nunca o valor)
Identificador da operação: listarApiKeys
Autenticação: sessão do portal (Bearer)
Respostas
| Código | Descrição |
|---|---|
| 200 | API keys da transportadora (inclusive revogadas) |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
Corpo da resposta 200 (application/json)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
[] | objeto | não | |
[].ambiente | enum | sim | Ambiente da credencial — sandbox e produção nunca se misturam (D-03); valores: TESTE, PRODUCAO |
[].apiKeyPrefixo | texto | sim | |
[].apiKeyValorEmClaro | texto | não | Presente somente na resposta de criação (T-01-02-01). |
[].criadaEm | texto (date-time) | sim | |
[].id | texto (uuid) | sim | |
[].nome | texto | sim | |
[].revogadaEm | string/null (date-time) | não |
POST /v1/api-keys#
Emite uma nova API key para a transportadora autenticada (D-02)
Identificador da operação: emitirApiKey
O valor em claro da chave é retornado apenas nesta resposta; a partir daí só o hash é armazenado e só o prefixo (apiKeyPrefixo) é exibido em listagens (mitigação T-01-02-01). Chave de PRODUCAO só para transportadora ATIVA; em homologação (ou inativa) responde 409.
Autenticação: sessão do portal (Bearer)
Corpo (application/json, obrigatório)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ambiente | enum | sim | Ambiente da credencial — sandbox e produção nunca se misturam (D-03); valores: TESTE, PRODUCAO |
nome | texto | sim | Rótulo/descrição da chave (ex.; "TMS produção") |
Respostas
| Código | Descrição |
|---|---|
| 201 | API key emitida |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
Corpo da resposta 201 (application/json)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ambiente | enum | sim | Ambiente da credencial — sandbox e produção nunca se misturam (D-03); valores: TESTE, PRODUCAO |
apiKeyPrefixo | texto | sim | |
apiKeyValorEmClaro | texto | não | Presente somente na resposta de criação (T-01-02-01). |
criadaEm | texto (date-time) | sim | |
id | texto (uuid) | sim | |
nome | texto | sim | |
revogadaEm | string/null (date-time) | não |
GET /v1/api-keys/atual#
Dados da API key que autenticou a chamada (tenant e ambiente, D-03)
Identificador da operação: credencialAtual
Endpoint "quem sou eu" do TMS. Autenticado SÓ por API key (cabeçalho X-Veltra-Api-Key). Chave revogada ou desconhecida = 401.
Autenticação: cabeçalho X-Veltra-Api-Key (chave de API)
Respostas
| Código | Descrição |
|---|---|
| 200 | Credencial da chamada |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
Corpo da resposta 200 (application/json)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ambiente | enum | sim | Ambiente da credencial — sandbox e produção nunca se misturam (D-03); valores: TESTE, PRODUCAO |
apiKeyId | texto (uuid) | sim | |
apiKeyPrefixo | texto | sim | |
transportadoraId | texto (uuid) | sim |
DELETE /v1/api-keys/{id}#
Revoga uma API key (D-02)
Identificador da operação: revogarApiKey
Autenticação: sessão do portal (Bearer)
Parâmetros
| Nome | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
id | path | texto (uuid) | sim |
Respostas
| Código | Descrição |
|---|---|
| 204 | API key revogada |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
GET /v1/saida/comprovantes/{id}/pacote#
Baixa o pacote de evidências quando o escopo autorizar
Identificador da operação: baixarPacoteDeSaida
Pacote ZIP só quando EscopoDeTerceiro autorizar (D-11).
Autenticação: cabeçalho X-Veltra-Api-Key (chave de API)
Parâmetros
| Nome | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
id | path | texto (uuid) | sim |
Respostas
| Código | Descrição |
|---|---|
| 200 | Pacote ZIP |
| 403 | CHAVE_SUSPENSA (no campo codigo): a chave de consulta está suspensa porque o add-on foi desligado. A chave não foi revogada e volta a funcionar quando o add-on for contratado de novo. |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
GET /v1/saida/comprovantes/{id}/pdf#
Baixa o PDF do comprovante quando o escopo autorizar
Identificador da operação: baixarPdfDeSaida
PDF só quando EscopoDeTerceiro autorizar (D-11). Chave de terceiro que não é o tomador recebe 404, a mesma resposta de comprovante inexistente.
Autenticação: cabeçalho X-Veltra-Api-Key (chave de API)
Parâmetros
| Nome | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
id | path | texto (uuid) | sim |
Respostas
| Código | Descrição |
|---|---|
| 200 | PDF do comprovante |
| 403 | CHAVE_SUSPENSA (no campo codigo): a chave de consulta está suspensa porque o add-on foi desligado. A chave não foi revogada e volta a funcionar quando o add-on for contratado de novo. |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
GET /v1/saida/configuracao-prazo#
Lê a configuração de prazo pela chave do TMS
Identificador da operação: obterConfiguracaoPrazoIntegracao
Mesmo conteúdo de GET /v1/configuracao-prazo do portal (D-14).
Autenticação: cabeçalho X-Veltra-Api-Key (chave de API)
Respostas
| Código | Descrição |
|---|---|
| 200 | Configuração de prazo |
| 403 | CHAVE_SUSPENSA (no campo codigo): a chave de consulta está suspensa porque o add-on foi desligado. A chave não foi revogada e volta a funcionar quando o add-on for contratado de novo. |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
Corpo da resposta 200 (application/json)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cidades | lista | sim | |
cidades[] | objeto | não | |
cidades[].horas | inteiro | sim | mínimo: 1; máximo: 720 |
cidades[].municipio | texto | sim | mín. tamanho: 1; máx. tamanho: 120 |
cidades[].uf | texto | sim | mín. tamanho: 2; máx. tamanho: 2 |
dataBase | enum | sim | Sem a data escolhida no manifesto, o prazo conta da chegada do manifesto ao Veltra (D-14).; valores: CTE, NFE, CHEGADA_MANIFESTO |
feriadosLocais | lista | sim | |
feriadosLocais[] | objeto | não | |
feriadosLocais[].data | texto (date) | sim | |
feriadosLocais[].nome | texto | sim | mín. tamanho: 1; máx. tamanho: 120 |
origemPrazo | enum | sim | valores: TMS_QUANDO_VIER, SEMPRE_CONFIGURADO |
prazoPadraoHoras | inteiro | sim | Horas úteis. Padrão sugerido 72.; mínimo: 1; máximo: 720 |
PUT /v1/saida/configuracao-prazo#
Grava cidades e prazos pela chave do TMS
Identificador da operação: salvarConfiguracaoPrazoIntegracao
O TMS envia a relação de cidades e prazos (D-14). Mesmo schema do portal. A mudança vale para as cargas que chegarem depois.
Autenticação: cabeçalho X-Veltra-Api-Key (chave de API)
Corpo (application/json, obrigatório)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cidades | lista | sim | |
cidades[] | objeto | não | |
cidades[].horas | inteiro | sim | mínimo: 1; máximo: 720 |
cidades[].municipio | texto | sim | mín. tamanho: 1; máx. tamanho: 120 |
cidades[].uf | texto | sim | mín. tamanho: 2; máx. tamanho: 2 |
dataBase | enum | sim | Sem a data escolhida no manifesto, o prazo conta da chegada do manifesto ao Veltra (D-14).; valores: CTE, NFE, CHEGADA_MANIFESTO |
feriadosLocais | lista | sim | |
feriadosLocais[] | objeto | não | |
feriadosLocais[].data | texto (date) | sim | |
feriadosLocais[].nome | texto | sim | mín. tamanho: 1; máx. tamanho: 120 |
origemPrazo | enum | sim | valores: TMS_QUANDO_VIER, SEMPRE_CONFIGURADO |
prazoPadraoHoras | inteiro | sim | Horas úteis. Padrão sugerido 72.; mínimo: 1; máximo: 720 |
Respostas
| Código | Descrição |
|---|---|
| 200 | Configuração gravada |
| 403 | CHAVE_SUSPENSA (no campo codigo): a chave de consulta está suspensa porque o add-on foi desligado. A chave não foi revogada e volta a funcionar quando o add-on for contratado de novo. |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
Corpo da resposta 200 (application/json)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cidades | lista | sim | |
cidades[] | objeto | não | |
cidades[].horas | inteiro | sim | mínimo: 1; máximo: 720 |
cidades[].municipio | texto | sim | mín. tamanho: 1; máx. tamanho: 120 |
cidades[].uf | texto | sim | mín. tamanho: 2; máx. tamanho: 2 |
dataBase | enum | sim | Sem a data escolhida no manifesto, o prazo conta da chegada do manifesto ao Veltra (D-14).; valores: CTE, NFE, CHEGADA_MANIFESTO |
feriadosLocais | lista | sim | |
feriadosLocais[] | objeto | não | |
feriadosLocais[].data | texto (date) | sim | |
feriadosLocais[].nome | texto | sim | mín. tamanho: 1; máx. tamanho: 120 |
origemPrazo | enum | sim | valores: TMS_QUANDO_VIER, SEMPRE_CONFIGURADO |
prazoPadraoHoras | inteiro | sim | Horas úteis. Padrão sugerido 72.; mínimo: 1; máximo: 720 |
GET /v1/saida/documentos/{id}#
Obtém um documento fiscal da leitura de saída
Identificador da operação: obterDocumentoDeSaida
Grupos integracao-tms, consulta-embarcador e consulta-destinatario. Sem posição do veículo. PDF indicado só se D-11 autorizar.
Autenticação: cabeçalho X-Veltra-Api-Key (chave de API)
Parâmetros
| Nome | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
id | path | texto (uuid) | sim |
Respostas
| Código | Descrição |
|---|---|
| 200 | Documento |
| 403 | CHAVE_SUSPENSA (no campo codigo): a chave de consulta está suspensa porque o add-on foi desligado. A chave não foi revogada e volta a funcionar quando o add-on for contratado de novo. |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
Corpo da resposta 200 (application/json)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
atualizadoEm | texto (date-time) | não | |
id | texto (uuid) | sim | |
numero | texto | não | |
podeVerPdfECanhoto | booleano | sim | Verdadeiro só quando o terceiro é o tomador (D-11). O TMS da transportadora recebe verdadeiro. |
status | texto | sim |
GET /v1/saida/eventos#
Lista eventos de saída alterados desde o cursor
Identificador da operação: listarEventosDeSaida
Chave X-Veltra-Api-Key. O cursor alteradoDesde é opaco. A resposta só inclui linhas com alteração até 5 segundos atrás (janela de segurança); o mesmo cursor pode repetir a borda e o consumidor deduplica pelo id. CONSULTA_EMBARCADOR e CONSULTA_DESTINATARIO não recebem o tipo posicao.lote. PDF e canhoto no payload só quando EscopoDeTerceiro autorizar (D-11).
Autenticação: cabeçalho X-Veltra-Api-Key (chave de API)
Parâmetros
| Nome | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
alteradoDesde | query | texto | não | Cursor opaco devolvido em proximoCursor. Omitido, começa do início. |
limite | query | inteiro | não | mínimo: 1; máximo: 200; padrão: 50 |
Respostas
| Código | Descrição |
|---|---|
| 200 | Página incremental de eventos |
| 403 | CHAVE_SUSPENSA (no campo codigo): a chave de consulta está suspensa porque o add-on foi desligado. A chave não foi revogada e volta a funcionar quando o add-on for contratado de novo. |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
Corpo da resposta 200 (application/json)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
itens | lista | sim | Envelopes do catálogo contracts/webhooks. Sem tenantId. |
proximoCursor | string/null | sim | Cursor opaco. Nulo quando não há página seguinte. |
GET /v1/saida/eventos-cte/{id}/xml#
Baixa o XML assinado do evento 110180 com o protocolo
Identificador da operação: baixarXmlEventoCteDeSaida
Grupo integracao-tms. Evento 110180 assinado, com o protocolo da SEFAZ. O Veltra não transmite o 110190.
Autenticação: cabeçalho X-Veltra-Api-Key (chave de API)
Parâmetros
| Nome | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
id | path | texto (uuid) | sim |
Respostas
| Código | Descrição |
|---|---|
| 200 | XML do evento 110180 |
| 403 | CHAVE_SUSPENSA (no campo codigo): a chave de consulta está suspensa porque o add-on foi desligado. A chave não foi revogada e volta a funcionar quando o add-on for contratado de novo. |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
GET /v1/saida/manifestos#
Lista manifestos visíveis para a chave
Identificador da operação: listarManifestosDeSaida
Grupo integracao-tms. Chaves de consulta não usam esta listagem ampla; leem o documento. Sem posição de veículo.
Autenticação: cabeçalho X-Veltra-Api-Key (chave de API)
Parâmetros
| Nome | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
alteradoDesde | query | texto | não | |
limite | query | inteiro | não | mínimo: 1; máximo: 200; padrão: 50 |
Respostas
| Código | Descrição |
|---|---|
| 200 | Manifestos |
| 403 | CHAVE_SUSPENSA (no campo codigo): a chave de consulta está suspensa porque o add-on foi desligado. A chave não foi revogada e volta a funcionar quando o add-on for contratado de novo. |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
Corpo da resposta 200 (application/json)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
itens | lista | sim | |
itens[] | objeto | não | |
itens[].atualizadoEm | texto (date-time) | não | |
itens[].id | texto (uuid) | sim | |
itens[].numero | texto | sim | |
itens[].tipoManifesto | enum | sim | valores: ENTREGA, COLETA, TRANSFERENCIA |
proximoCursor | string/null | sim |
GET /v1/saida/manifestos/{id}#
Obtém um manifesto da leitura de saída
Identificador da operação: obterManifestoDeSaida
Grupo integracao-tms. Sem trilha nem posição do veículo para terceiros.
Autenticação: cabeçalho X-Veltra-Api-Key (chave de API)
Parâmetros
| Nome | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
id | path | texto (uuid) | sim |
Respostas
| Código | Descrição |
|---|---|
| 200 | Manifesto |
| 403 | CHAVE_SUSPENSA (no campo codigo): a chave de consulta está suspensa porque o add-on foi desligado. A chave não foi revogada e volta a funcionar quando o add-on for contratado de novo. |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |
Corpo da resposta 200 (application/json)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
atualizadoEm | texto (date-time) | não | |
id | texto (uuid) | sim | |
numero | texto | sim | |
tipoManifesto | enum | sim | valores: ENTREGA, COLETA, TRANSFERENCIA |
GET /v1/saida/openapi/{finalidade}#
Devolve o OpenAPI filtrado da finalidade
Identificador da operação: obterOpenApiFiltrado
Grupos (CHAVE-04): integracao-tms (todas as rotas /v1/saida); consulta-embarcador e consulta-destinatario (somente leitura de documento, evento que não seja posicao.lote, e PDF só sob D-11).
Autenticação: cabeçalho X-Veltra-Api-Key (chave de API)
Parâmetros
| Nome | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
finalidade | path | enum | sim | valores: INTEGRACAO_TMS, CONSULTA_EMBARCADOR, CONSULTA_DESTINATARIO |
Respostas
| Código | Descrição |
|---|---|
| 200 | OpenAPI 3.1 do grupo, em YAML |
| demais erros | Erro no formato RFC 9457 (application/problem+json) |