🚚 Documentação de Fretes
📋 Visão Geral
Os Fretes representam as integrações de envio disponíveis e instaladas na plataforma — como Correios, Melhor Envio e Frenet.
Cada integração expõe um conjunto de campos de configuração que devem ser preenchidos com as credenciais e parâmetros operacionais exigidos pelo serviço de envio correspondente.
Todas as operações exigem autenticação via Bearer token no cabeçalho Authorization e o escopo SHIPPING_READ.
1GET /api/v3/shipping/2Authorization: Bearer SEU_TOKEN_AQUI🔄 Entidades Envolvidas
Integração de Frete (Shipping)
Representa um serviço de envio disponível na loja. Cada registro contém:
id— identificador único da integração.code— código interno da integração (ex.:"correios-api").name— nome de exibição da integração (ex.:"Correios API").description— descrição resumida do serviço de envio.image— URL do ícone ou logotipo da integração.url— site oficial do serviço de envio.oauth— indica se a integração utiliza fluxo OAuth para autenticação.shippingTableQuantity— quantidade de tabelas de frete configuradas para a integração.shippingCredencialQuantity— quantidade de campos de credencial disponíveis para configuração.orderManagement- determina se a integração possui recursos de cadastro/consulta e cancelamento de remessas;webhook- determina se a integração possui porcessamento de webhook.code— identificador do campo (ex.:"cartao-postagem").title— rótulo legível do campo (ex.:"Número do Cartão de Postagem").type— tipo do campo:string,numeric,booloumap.default— valor padrão do campo.enum— lista de valores aceitos, quando aplicável.mapKey— rótulo da chave, utilizado apenas quandotypeémap.mapValue— rótulo do valor, utilizado apenas quandotypeémap.- O escopo
SHIPPING_READé exigido em todas as operações de leitura deste módulo. - A listagem de fretes (
GET /shipping/) suporta paginação vialimiteoffset. Filtros porcondition(campos:name,description,code,active) e campos extras viafields(shippingTableQuantity,shippingCredencialQuantity) também estão disponíveis. - O endpoint de credenciais (
GET /shipping/{shippingId}/credentials) retorna o esquema de campos da integração — não os valores salvos. Os valores preenchidos são gerenciados pelo módulo de Credenciais (/shipping/credential). - Campos do tipo
maprepresentam pares chave-valor configuráveis, retornados e salvos como um objeto{chave: valor}. Os rótulosmapKeyemapValueindicam o significado semântico de cada coluna.
Campo de Configuração (ShippingCredential)
Representa um campo de configuração exposto por uma integração específica. Cada campo contém:
📮 Consulta de CEP
O módulo de Fretes também expõe um endpoint público para consulta de código postal.
Dado um código de país (Alpha-3) e um CEP, o sistema retorna logradouro, bairro, cidade, estado, coordenadas e informações do país.
Não é necessário Bearer token — qualquer consumidor pode chamar esta rota diretamente.
1GET /api/v3/shipping/zipcode/consult/{countryCode}/{zipCode}📌 Notas e Considerações
📋 Listagem de Fretes
/shipping/
Retorna a listagem paginada de integrações de frete disponíveis na loja
📄 Descrição
Endpoint utilizado para listar as integrações de frete instaladas na loja, com suporte a paginação, filtros e campos extras.
Cada registro retornado inclui informações identificadoras da integração, como nome, código, imagem e URL.
As contagens de tabelas de frete (shippingTableQuantity) e credenciais configuradas (shippingCredencialQuantity) só são incluídas na resposta quando explicitamente solicitadas via fields.
Requer o escopo SHIPPING_READ.
📋 Parâmetros
🏷️ Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer SEU_TOKEN_AQUI | Token de autenticação |
📦 Campos Disponíveis (fields)
Envie o array fields no corpo da requisição para incluir dados adicionais na resposta.
| Campo | Descrição |
|---|---|
shippingTableQuantity | Quantidade de tabelas de frete configuradas para a integração |
shippingCredencialQuantity | Quantidade de credenciais configuradas para a integração |
🔍 Campos de Condição Disponíveis
Utilize o objeto condition no corpo da requisição para filtrar os resultados.
| Campo | Tipo | Descrição |
|---|---|---|
name | string | Nome da integração de frete |
description | string | Descrição da integração |
code | string | Código interno da integração |
active | boolean | Indica se a integração está ativa |
💡 Exemplo de Requisição
> Nota: 🔎 Esta API aceita corpo JSON em requisições GET, seguindo a convenção da plataforma. Utilize o header Content-Type: application/json e envie os parâmetros no corpo da requisição.
1curl --request GET \2 --url {{MAIN_URL}}/shipping/ \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --header "Content-Type: application/json" \5 --data '{6 "limit": 10,7 "offset": 0,8 "fields": [9 "shippingTableQuantity",10 "shippingCredencialQuantity"11 ]12 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": {4 "registers": [5 {6 "id": 3,7 "code": "transportadora-exemplo",8 "name": "Transportadora Exemplo",9 "description": "App para cálculo de frete e rastreio de encomendas da Transportadora Exemplo",10 "image": "https://exemplo.com/resources/app/transportadora-exemplo/icone.png",11 "url": "https://www.transportadora-exemplo.com.br",12 "oauth": false,13 "shippingTableQuantity": 2,14 "shippingCredencialQuantity": 315 },16 {17 "id": 5,18 "code": "envio-rapido",19 "name": "Envio Rápido",20 "description": "Integração para envios expressos com rastreamento em tempo real",21 "image": "https://exemplo.com/resources/app/envio-rapido/icone.png",22 "url": "https://www.enviorapido.com.br",23 "oauth": true,24 "orderManagement": false,25 "webhook": false,26 "shippingTableQuantity": 1,27 "shippingCredencialQuantity": 428 }29 ],30 "pagination": {31 "limit": 10,32 "offset": 0,33 "pages": 1,34 "registers": 235 }36 }37}⚠️ Possíveis Erros
> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | HTTP | Descrição |
|---|---|---|
| UAPPI_AUTH_INVALID_USER | 401 | ❌ O token de autenticação é inválido ou está ausente. |
| UAPPI_AUTH_FORBBIDEN_ACCESS | 403 | ❌ O usuário não possui a permissão SHIPPING_READ. |
🔑 Credenciais de Frete
/shipping/{shippingId}/credentials
Retorna os campos de configuração disponíveis para uma integração de frete específica
📄 Descrição
Endpoint utilizado para recuperar o esquema de campos de configuração de uma integração de frete específica.
O retorno representa a estrutura de credenciais exigida pela integração — não os valores atualmente salvos. Cada campo descreve seu tipo, valor padrão e, quando aplicável, os rótulos dos mapeamentos.
Os campos do tipo map representam pares chave-valor configuráveis pelo operador da loja, retornados e salvos como um objeto {chave: valor}. Os rótulos das duas colunas vêm de mapKey e mapValue.
Formato dos campos de lista e mapeamento
| Tipo | default | enum | Valor enviado na credencial |
|---|---|---|---|
array | Array com os valores selecionados por padrão. Ex.: [3, 4]. | Objeto {valor: rótulo} com as opções de seleção. Ex.: {"3": "Faturado"}. | Array com os valores escolhidos. Ex.: [3, 4]. Um array vazio é permitido. |
map | Objeto {chave: valor} com o mapeamento padrão. Ex.: {"04014": "SEDEX (sem contrato)"}. | Objeto {valor: rótulo} com as opções do valor, quando houver. | Objeto {chave: valor} com o mapeamento. |
Configurações de status de remessa
Integrações com gestão de remessas retornam configurações para definir quando a remessa é criada ou cancelada e como a situação do gateway atualiza o pedido:
code | Tipo | Descrição |
|---|---|---|
create-order-status | array | IDs dos status do pedido em que a remessa pode ser criada na integração. Vazio significa que a remessa não é criada. |
cancel-order-status | array | IDs dos status do pedido em que a remessa pode ser cancelada na integração. Vazio significa que a remessa não é cancelada. |
order-status-map | map | Mapeamento de status: a chave é o código do status no gateway e o valor é o ID do status do pedido na plataforma (incluindo status personalizados da loja). Situações do gateway sem mapeamento não alteram o pedido. |
GET /shipping/{shippingId}/order-status.A integração precisar estar ativa no sistema para que este endpoint retorne resultado. Caso não esteja ativa ou não exista, o sistema retorna um erro 404.
Requer o escopo SHIPPING_READ.
📋 Parâmetros
🏷️ Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer SEU_TOKEN_AQUI | Token de autenticação |
🔗 Parâmetros da URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
shippingId | integer | Sim | ID único da integração de frete |
💡 Exemplo de Requisição
1curl --request GET \2 --url {{MAIN_URL}}/shipping/3/credentials \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --header "Content-Type: application/json"✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": [4 {5 "code": "codigo-contrato",6 "title": "Código do Contrato",7 "type": "string",8 "default": "0",9 "enum": "",10 "mapKey": "",11 "mapValue": ""12 },13 {14 "code": "servicos-disponiveis",15 "title": "Serviços disponíveis (verifique seu contrato)",16 "type": "map",17 "default": {18 "04014": "SEDEX (sem contrato)",19 "04510": "PAC (sem contrato)"20 },21 "enum": "",22 "mapKey": "Código do serviço",23 "mapValue": "Nome exibido para o cliente"24 },25 {26 "code": "ativo",27 "title": "Integração ativa",28 "type": "bool",29 "default": "true",30 "enum": "",31 "mapKey": "",32 "mapValue": ""33 },34 {35 "code": "create-order-status",36 "title": "Status permitidos para cadastrar a remessa na integração (vazio = não cadastra)",37 "type": "array",38 "default": [3, 4],39 "enum": {40 "2": "Pago",41 "3": "Faturado",42 "4": "Enviado"43 },44 "mapKey": "",45 "mapValue": ""46 },47 {48 "code": "order-status-map",49 "title": "Mapeamento de status de remessa (status não mapeados não alteram o pedido)",50 "type": "map",51 "default": {52 "SHIPPED": 4,53 "IN_TRANSIT": 4,54 "DELIVERED": 555 },56 "enum": "",57 "mapKey": "Status da integração",58 "mapValue": "Status da plataforma"59 }60 ]61}⚠️ Possíveis Erros
> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | HTTP | Descrição |
|---|---|---|
| UAPPI_AUTH_INVALID_USER | 401 | ❌ O token de autenticação é inválido ou está ausente. |
| UAPPI_AUTH_FORBBIDEN_ACCESS | 403 | ❌ O usuário não possui a permissão SHIPPING_READ. |
| UAPPI_INTEGRATION_SHIPPING_NOT_FOUND | 404 | ❌ A integração de frete informada não foi encontrada ou está inativa. |
| UAPPI_INTEGRATION_SHIPPING_BAD_GATEWAY_RESPONSE | 502 | ❌ O serviço integrador não respondeu corretamente ao retornar as configurações. |
🚚 Status de Remessa do Frete
/shipping/{shippingId}/order-status
Retorna os status de remessa disponíveis em uma integração de frete para o mapeamento com os status do pedido
📄 Descrição
Endpoint utilizado para listar os status de remessa que o gateway de frete pode informar e que estão disponíveis para o mapeamento com os status do pedido. São os status relacionados às etapas de envio e entrega da remessa.
O retorno é um objeto, em que cada chave é o código do status no gateway e cada valor é o título do status.
Integrações de frete que não possuem status de remessa retornam um objeto vazio ({}).
A integração precisa estar ativa no sistema para que este endpoint retorne resultado. Caso não esteja ativa ou não exista, o sistema retorna um erro 404.
Requer o escopo SHIPPING_READ.
📋 Parâmetros
🏷️ Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer SEU_TOKEN_AQUI | Token de autenticação |
🔗 Parâmetros da URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
shippingId | integer | Sim | ID único da integração de frete |
💡 Exemplo de Requisição
1curl --request GET \2 --url {{MAIN_URL}}/shipping/3/order-status \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --header "Content-Type: application/json"✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": {4 "COLLECTED": "Coletado",5 "SHIPPED": "Despachado",6 "IN_TRANSIT": "Em trânsito",7 "TO_BE_DELIVERED": "Saiu para entrega",8 "DELIVERY_FAILED": "Falha na entrega",9 "DELIVERED": "Entregue"10 }11}⚠️ Possíveis Erros
> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | HTTP | Descrição |
|---|---|---|
| UAPPI_INTEGRATION_SHIPPING_NOT_FOUND | 404 | A integração de frete informada não foi encontrada ou está inativa. |
| UAPPI_INTEGRATION_SHIPPING_BAD_GATEWAY_RESPONSE | 502 | O serviço integrador não respondeu corretamente ao retornar os status de remessa. |