Selos usados na referência: ação filtro GET POST DELETE · Grátis PRO. Tudo o que não traz o selo PRO funciona no plugin grátis. Abaixo de cada gancho e de cada rota está o arquivo e a linha onde ele aparece no código da versão indicada, para você ler o docblock completo no código.
Autenticação
As rotas pedem um usuário com a capacidade manage_woocommerce, que no WooCommerce vem com os papéis Administrador e Gerente de loja. As exceções públicas são POST /customer-returns (protegida pela chave do pedido), os retornos de autorização (GET /prepaid/callback e, no PRO, GET /bling/oauth/callback), o webhook do Bling e as rotas do agente de impressão, que usam o token do agente. Há três jeitos de chamar:
No wp-admin: cookie e nonce
O cookie de login vale na REST junto com o nonce wp_rest no cabeçalho X-WP-Nonce. Gere o nonce no seu plugin, na tela onde o JavaScript roda:
// No seu plugin, na tela onde o JavaScript vai chamar a REST:
wp_enqueue_script( 'meu-plugin-admin', plugins_url( 'admin.js', __FILE__ ), [ 'wp-api-fetch' ], '1.0.0', true );
wp_localize_script( 'meu-plugin-admin', 'meuPlugin', [
'restUrl' => rest_url( 'infixs-correios-automatico/v1' ),
'nonce' => wp_create_nonce( 'wp_rest' ),
] );// admin.js
const resposta = await fetch( `${ meuPlugin.restUrl }/orders/1234`, {
credentials: 'same-origin',
headers: { 'X-WP-Nonce': meuPlugin.nonce },
} );
const { order } = await resposta.json();
// Ou, com o wp-api-fetch (o nonce do WordPress já vai junto):
const dados = await wp.apiFetch( { path: '/infixs-correios-automatico/v1/orders/1234' } );De fora do WordPress: senha de aplicação
Crie uma senha de aplicação (WordPress 5.6+, com HTTPS) em Usuários → Perfil para um usuário dedicado com o papel Gerente de loja, e envie em Authorization: Basic. Guarde a senha no cofre do ERP, fora do código.
curl -u 'integracao-erp:SENHA-DE-APLICACAO' \
-H 'Content-Type: application/json' \
-X POST 'https://sua-loja.com.br/wp-json/infixs-correios-automatico/v1/preposts' \
-d '{"order_id":1234,"shipping_item_id":77,"invoice_number":"1234","invoice_key":"35261112345678000195550010000012341123456781"}'Dentro do PHP: rest_do_request()
A chamada interna passa pelas mesmas permissões da rota. Em WP-Cron, Action Scheduler, webhook ou WP-CLI, defina antes um usuário com manage_woocommerce (wp_set_current_user()). Para código no mesmo site, as ações e os filtros costumam ser o caminho mais direto; a REST interna é útil quando você quer exatamente o comportamento da rota, como o rastreio que POST /preposts grava.
$request = new WP_REST_Request( 'POST', '/infixs-correios-automatico/v1/preposts' );
$request->set_body_params( [
'order_id' => 1234,
'invoice_number' => '1234',
'invoice_key' => '35261112345678000195550010000012341123456781',
] );
$response = rest_do_request( $request ); // Precisa de um usuário atual com manage_woocommerce.
if ( $response->is_error() ) {
$erro = $response->as_error(); // WP_Error com o code e o status da rota.
} else {
$prepost = $response->get_data(); // [ 'id' => 87, 'object_code' => 'AB123456789BR', ... ]
}
// Rotas que leem só JSON (marcadas "corpo JSON" nas tabelas):
// $request->set_header( 'Content-Type', 'application/json' );
// $request->set_body( wp_json_encode( [ 'printed' => true ] ) );Respostas de erro
Os erros seguem o formato do WordPress, { "code", "message", "data": { "status" } }. Trate pelo campo code. Erros vindos dos Correios chegam como http_error, com o status deles em data.status (e o código dos Correios em data.error_code, quando há). Erros do Contrato pré-pago começam com prepaid_ (ex.: prepaid_insufficient_balance 402, com data.balance_cents, data.price_cents e data.topup_url).
{
"code": "invalid_recipient_neighborhood",
"message": "O campo Bairro do destinatário é obrigatório quando o CEP termina com 000.",
"data": { "status": 400, "prepost_error_recorded": true }
}Pedidos
| Rota | O que faz | Permissão |
|---|---|---|
GET /orderssrc/Routes/RestRoutes.php:649 | Lista do painel. Parâmetros: page, per_page, search, status, carrier e pending (tracking, prepost, invoice e as pendências próprias). Sem um filtro, vale a preferência salva do operador; mande o parâmetro vazio (ex.: status=) para “todos”. | manage_woocommerce |
GET /orders/{id}src/Routes/RestRoutes.php:554 | Um pedido no formato do painel, com invoice, waiting_invoice, invoice_status, meta_data, shipping_items[], preposts[], prepost_errors[] e tracking_codes[]. | manage_woocommerce |
POST · PUT · PATCH /orders/{id}src/Routes/RestRoutes.php:561 | Corpo JSON { "printed": true } marca a etiqueta como impressa; outro valor desmarca. Confira o pedido antes: a resposta é success para qualquer id. | manage_woocommerce |
POST · PUT · PATCH /orders/batchsrc/Routes/RestRoutes.php:569 | O mesmo para vários pedidos: { "orders": [1234, 1235], "printed": true } (corpo JSON). | manage_woocommerce |
POST /orders/preferencessrc/Routes/RestRoutes.php:585 | Salva os filtros padrão da lista (status, carrier, pending) (corpo JSON). | manage_woocommerce |
POST /orders/{id}/shipping/calculatesrc/Routes/RestRoutes.php:593 | Cota os serviços para o pedido: instance_id (obrigatório) e shipping_item_id (corpo JSON). | manage_woocommerce |
POST /orders/{id}/shipping/updatesrc/Routes/RestRoutes.php:601 | Troca o serviço e as medidas de uma linha de frete: instance_id, shipping_item_id, length, width, height, weight, delivery_time, cost (corpo JSON). | manage_woocommerce |
DELETE /orders/{id}/prepost-errorssrc/Routes/RestRoutes.php:625 | Limpa os erros de pré-postagem do pedido. | manage_woocommerce |
DELETE /orders/{id}/prepost-errors/{error_id}src/Routes/RestRoutes.php:633 | Dispensa um erro de pré-postagem (error_id = id do item em prepost_errors[]). | manage_woocommerce |
POST /orders/{id}/attach-rangesrc/Routes/RestRoutes.php:609 | Reserva o próximo código livre de uma faixa de etiquetas (service_code, shipping_item_id) e o grava como rastreio (corpo JSON). | manage_woocommerce |
POST /orders/{id}/send-tracking-whatsappsrc/Routes/RestRoutes.php:641 | Envia os códigos de rastreio por WhatsApp pelo Pingo Notify: connection (corpo JSON). | manage_woocommerce |
Pré-postagem
| Rota | O que faz | Permissão |
|---|---|---|
POST /prepostssrc/Routes/RestRoutes.php:349 | Cria a pré-postagem de um pedido, com a NF-e informada ou a do pedido. É a rota central para nota fiscal (parâmetros). | manage_woocommerce |
GET /prepostssrc/Routes/RestRoutes.php:341 | As 10 pré-postagens mais recentes da loja; search filtra pelo código do objeto. Para as de um pedido, use GET /orders/{id}. | manage_woocommerce |
POST /preposts/{id}/syncsrc/Routes/RestRoutes.php:379 | Relê a pré-postagem nos Correios: status, chave da DC-e, dados da DC-e e motivo de cancelamento. | manage_woocommerce |
POST · PUT · PATCH /preposts/{id}/cancel PROsrc/Routes/RestRoutes.php:371 | Cancela a pré-postagem nos Correios (no Contrato pré-pago, com estorno). {id} é o id local. Só com o grátis, responde 400 cancel_prepost_pro_feature. | manage_woocommerce |
DELETE /orders/{id}/preposts/{prepost_id} PROsrc/Routes/RestRoutes.php:617 | Cancela nos Correios e desvincula a pré-postagem do pedido e da linha de frete. | manage_woocommerce |
POST /preposts/{id}/print-dcesrc/Routes/RestRoutes.php:387 | PDF da DACE de uma pré-postagem com DC-e, em base64 no campo dados. dace_type: C (completa, padrão) ou R (resumida). | manage_woocommerce |
POST /preposts/dce/refreshsrc/Routes/RestRoutes.php:400 | Completa os dados da DC-e de 1 a 5 pré-postagens (prepost_ids). Devolve preposts[] e failed[] com reason (not_found, no_dce, dce_unavailable, not_authorized, temporary). | manage_woocommerce |
DELETE /preposts/{id}src/Routes/RestRoutes.php:363 | Obsoleta: apaga o registro local da pré-postagem e também o código de rastreio desse objeto no pedido, sem cancelar nos Correios. Para cancelar nos Correios, use /preposts/{id}/cancel. | manage_woocommerce |
Parâmetros de POST /preposts
Aceita JSON, formulário ou query string.
| Parâmetro | Tipo | Obrigatório | Efeito |
|---|---|---|---|
order_id | int | sim | Pedido. Sem ele, 400 missing_order_id. |
invoice_key | string | não | Chave da NF-e. Fica só com letras e dígitos e precisa ter 44 caracteres (senão 400 invalid_invoice_key). |
invoice_number | string | não | Número da NF-e; se enviado, não pode ser vazio (400 invalid_invoice_number). |
withDce | bool | não | Escolha explícita: true pede a DC-e, false não pede. |
shipping_item_id | int | não | Pré-posta só aquela linha de frete (volume). |
vendor_id | int | não | Marketplace: pré-posta a parte do vendedor. |
dangerousProduct | bool | não | Serviço adicional de artigo perigoso; sem o campo, vem dos produtos. |
receiptNotice / receiptNoticeElectronic | bool | não | Aviso de recebimento (físico ou digital); sem o campo, vem do método. |
ownHands | bool | não | Mão própria. Sem o campo, vai sem mão própria, mesmo com a opção ligada no método (ao contrário de receiptNotice e receiptNoticeElectronic). |
- Com
invoice_keyeinvoice_number(semwithDce), a pré-postagem vai com a NF-e e sem DC-e. - Com
withDce, a escolha vale como veio. - Sem nenhum documento, o plugin procura a NF-e do pedido (filtro
infixs_correios_automatico_order_invoicee metas): NF-e se houver, senão DC-e. - A nota informada fica gravada nos metas do pedido, e o código do objeto entra como código de rastreio.
- Ordem das conferências:
order_id, documento fiscal, contrato, pedido (método, endereço), remetente e, por fim, os Correios. Todo erro de pré-postagem também fica registrado no pedido (prepost_errors) e na central de notificações.
| Erro | Quando |
|---|---|
missing_order_id, invalid_invoice_key, invalid_invoice_number | Parâmetros da requisição (400). |
auth_not_active, prepaid_not_connected, prepaid_reconnect | A loja ainda não pode pré-postar: Contrato Próprio desligado ou conta do Contrato pré-pago a conectar (400/401). |
invalid_order, invalid_shipping_method, invalid_recipient_neighborhood | Pedido inexistente, sem método do Correios Automático ou sem bairro com CEP terminado em 000 (400). |
invalid_sender_data, invalid_store_neighborhood, missing_store_document | Dados do remetente da loja a completar (400). |
http_error | Recusa dos Correios, com o status deles. |
prepaid_insufficient_balance, prepaid_prepost_in_progress, prepaid_account_blocked, prepaid_unreachable | Contrato pré-pago (402, 409, 403, 502). |
Logística reversa
| Rota | O que faz | Permissão |
|---|---|---|
GET /preposts/reverse/documentsrc/Routes/RestRoutes.php:448 | Mostra o documento fiscal que a devolução vai levar (source, emite_dce, invoice_number, invoice_key) sem criar nada. Query: order_id, shipping_item_id, vendor_id. | manage_woocommerce |
POST /preposts/reversesrc/Routes/RestRoutes.php:440 | Cria a pré-postagem reversa (Contrato Próprio): order_id, shipping_item_id, vendor_id, invoice_key, invoice_number, withDce, service, weight, length, width, height. O código da reversa também entra como rastreio do pedido. | manage_woocommerce |
POST /customer-returnssrc/Routes/RestRoutes.php:192 | O cliente pede a devolução: order_id e order_key (a chave do pedido). Com a devolução automática ligada, cria uma reversa por remessa. | pública protegida pela order_key |
GET /settings/returnsrc/Routes/RestRoutes.php:182 | Configurações de devolução. | manage_woocommerce |
POST /settings/returnsrc/Routes/RestRoutes.php:173 | Salva as configurações de devolução (corpo JSON com o objeto completo). | manage_woocommerce |
Etiquetas e impressão
| Rota | O que faz | Permissão |
|---|---|---|
GET /labelssrc/Routes/RestRoutes.php:331 | Dados de etiqueta, uma por remessa (volume ou vendedor), com preposts[], itens com NCM, invoice, danfe e danfe_status. Use order_id como lista: ?order_id[]=1234&order_id[]=1235. | manage_woocommerce |
GET /print/datasrc/Routes/RestRoutes.php:681 | Remetente da sessão de impressão. | manage_woocommerce |
GET /settings/label/profilessrc/Routes/RestRoutes.php:123 | Perfil de impressão (?id=default), com danfe.enabled e danfe.mode (separate ou embedded). | manage_woocommerce |
POST /settings/label/profilessrc/Routes/RestRoutes.php:115 | Salva um perfil de impressão (id obrigatório; corpo JSON). | manage_woocommerce |
POST /settings/label/rangessrc/Routes/RestRoutes.php:131 | Cadastra uma faixa de códigos de etiqueta: service_code, range_start, range_end (corpo JSON). | manage_woocommerce |
GET /settings/label/rangessrc/Routes/RestRoutes.php:139 | Lista as faixas (service_code opcional). | manage_woocommerce |
GET /settings/label/ranges/{id}src/Routes/RestRoutes.php:155 | Códigos de uma faixa, paginados (page, per_page). | manage_woocommerce |
DELETE /settings/label/ranges/{id}src/Routes/RestRoutes.php:147 | Apaga uma faixa. | manage_woocommerce |
GET /settings/label/ranges-availablesrc/Routes/RestRoutes.php:163 | Quantos códigos livres restam para um service_code. | manage_woocommerce |
POST /label/pdf PROPRO · src/Routes/RestRoutes.php:63 | PDF de etiquetas, declarações ou só das DANFEs (view: label, declaration, danfe) a partir do estado da tela de impressão do painel. | manage_woocommerce (filtrável) |
Rastreio
| Rota | O que faz | Permissão |
|---|---|---|
POST /trackingssrc/Routes/RestRoutes.php:206 | Adiciona um código de rastreio: order_id, code, sendmail (true envia o e-mail), shipping_item_id, vendor_id. | manage_woocommerce |
GET /trackingssrc/Routes/RestRoutes.php:263 | Responde sempre { "status": "success", "data": [] }, sem códigos. Para os códigos de um pedido, use GET /orders/{id}. | manage_woocommerce |
GET /trackings/{id}src/Routes/RestRoutes.php:231 | Histórico do objeto (force_sync=1 relê agora). {id} é o id da linha de rastreio em tracking_codes[]. | manage_woocommerce |
DELETE /trackings/{id}src/Routes/RestRoutes.php:215 | Remove o código do pedido (e devolve à faixa, se veio de uma). | manage_woocommerce |
POST /trackings/{id}/suspendsrc/Routes/RestRoutes.php:247 | Pede a suspensão da entrega aos Correios (Contrato Próprio). | manage_woocommerce |
POST /trackings/notification/{order_id}src/Routes/RestRoutes.php:271 | Reenvia ao cliente o e-mail com os códigos; change_status muda o status do pedido. | manage_woocommerce |
Para todos os códigos de um pedido, use GET /orders/{id} (tracking_codes[]) ou a REST do WooCommerce (tracking_codes).
Outros recursos
Notificações, Contrato pré-pago, frete e configurações. As rotas de credenciais do contrato e de aceite dos termos são exclusivas do painel e ficam fora desta referência.
| Rota | O que faz | Permissão |
|---|---|---|
GET /notificationssrc/Routes/RestRoutes.php:691 | Central de notificações do painel (page, per_page), com unread_count. | manage_woocommerce |
POST /notifications/readsrc/Routes/RestRoutes.php:709 | Marca todas como lidas. | manage_woocommerce |
POST /notifications/{id}/readsrc/Routes/RestRoutes.php:717 | Marca uma como lida. | manage_woocommerce |
DELETE /notifications/{id}src/Routes/RestRoutes.php:725 | Apaga uma notificação. | manage_woocommerce |
DELETE /notificationssrc/Routes/RestRoutes.php:733 | Apaga todas. | manage_woocommerce |
POST /prepaid/connectsrc/Prepaid/Rest/PrepaidController.php:67 | Contrato pré-pago: inicia a conexão e devolve authorize_url para o lojista abrir. | manage_woocommerce |
GET /prepaid/statussrc/Prepaid/Rest/PrepaidController.php:73 | Contrato pré-pago: mode, connected, status, account (name, status; null com a conta desconectada), balance_cents, connected_at e urls (app, signup, topup, statement). refresh=1 relê a conta. | manage_woocommerce |
POST /prepaid/disconnectsrc/Prepaid/Rest/PrepaidController.php:79 | Contrato pré-pago: desconecta a conta. | manage_woocommerce |
GET /prepaid/callbacksrc/Prepaid/Rest/PrepaidController.php:85 | Retorno da autorização do Contrato pré-pago; responde uma página HTML. | pública state de uso único |
GET /shipping/methodssrc/Routes/RestRoutes.php:289 | Métodos de entrega de todas as zonas (is_enabled, method_id). | manage_woocommerce |
POST /shipping/methodssrc/Routes/RestRoutes.php:297 | Cria um método do Correios Automático em zonas de entrega. | manage_woocommerce |
POST /shipping/methods/batchsrc/Routes/RestRoutes.php:305 | Cria vários métodos de uma vez. | manage_woocommerce |
POST /shipping/methods/importsrc/Routes/RestRoutes.php:313 | Importa métodos de outros plugins de Correios (corpo JSON). | manage_woocommerce |
POST /shipping/methods/availablesrc/Routes/RestRoutes.php:321 | Métodos habilitados para um endereço (corpo JSON). | manage_woocommerce |
GET /settings/generalsrc/Routes/RestRoutes.php:71 | Configurações gerais. | manage_woocommerce |
POST /settings/generalsrc/Routes/RestRoutes.php:63 | Salva as configurações enviadas (corpo JSON, atualização parcial). | manage_woocommerce |
POST /settings/general/reset-cronsrc/Routes/RestRoutes.php:87 | Reinicia as tarefas agendadas de rastreio e status. | manage_woocommerce |
GET /settings/sendersrc/Routes/RestRoutes.php:105 | Dados do remetente da loja. | manage_woocommerce |
POST /settings/sendersrc/Routes/RestRoutes.php:97 | Salva o remetente (corpo JSON, com validação de CPF/CNPJ, telefone e CEP). | manage_woocommerce |
No Contrato pré-pago não há logística reversa, Packet internacional nem suspensão de entrega: essas rotas respondem 422 (prepaid_reverse_not_supported, prepaid_packet_not_supported, prepaid_not_supported).
Packet internacional
Unitização e fatura CN-38 do Packet internacional (Contrato Próprio). Apesar do nome, invoice-units não tem relação com NF-e.
| Rota | O que faz | Permissão |
|---|---|---|
GET /unitssrc/Routes/RestRoutes.php:458 | Unidades (malas) do Packet internacional. | manage_woocommerce |
GET /units/settingssrc/Routes/RestRoutes.php:474 | Número de despacho atual. | manage_woocommerce |
PATCH /units/settingssrc/Routes/RestRoutes.php:466 | Atualiza o número de despacho. | manage_woocommerce |
POST /orders/unitssrc/Routes/RestRoutes.php:577 | Une pedidos numa unidade (orders, ceint_id; corpo JSON). | manage_woocommerce |
POST · PUT · PATCH /units/{id}src/Routes/RestRoutes.php:490 | Atualiza uma unidade. | manage_woocommerce |
GET /units/{id}/trackingssrc/Routes/RestRoutes.php:498 | Objetos de uma unidade. | manage_woocommerce |
POST /units/{id}/registersrc/Routes/RestRoutes.php:506 | Registra a unidade nos Correios. | manage_woocommerce |
POST /units/{id}/cancelsrc/Routes/RestRoutes.php:514 | Cancela a unidade. | manage_woocommerce |
DELETE /units/{id}/trackings/{tracking_id}src/Routes/RestRoutes.php:522 | Tira um objeto da unidade. | manage_woocommerce |
POST /units/invoice-unitssrc/Routes/RestRoutes.php:482 | Agrupa unidades numa fatura CN-38 (unit_ids). | manage_woocommerce |
GET /invoice-unitssrc/Routes/RestRoutes.php:533 | Faturas CN-38 (ids). | manage_woocommerce |
POST /invoice-units/{id}/registersrc/Routes/RestRoutes.php:541 | Registra a fatura CN-38 nos Correios. | manage_woocommerce |
Rotas do PRO
PRO As rotas do PRO entram no namespace do grátis, infixs-correios-automatico/v1, pelo gancho infixs_correios_automatico_register_routes. Para integrações, as mais úteis são as do pedido no Correios LOG+; as demais atendem o painel, a integração nativa com o Bling e o agente de impressão da Infixs. As rotas do Bling, do Correios LOG+ e das embalagens existem quando o recurso é suportado pela combinação de versões. O namespace próprio do PRO, infixs-correios-automatico-pro/v1, guarda só a consulta interna da licença e fica fora desta referência.
| Rota | O que faz | Permissão |
|---|---|---|
GET /logplus/order/{order_id} PROPRO · src/Routes/RestRoutes.php:318 | Estado do pedido no Correios LOG+: id (o xPed), status, xml_status (waiting, sent, failed), xml_attempts, xml_error, xml_retrying (o XML segue indo sozinho depois de uma recusa do armazém, desde PRO 1.6.4), tracking. | manage_woocommerce |
POST /logplus/order/{order_id}/xml PROPRO · src/Routes/RestRoutes.php:321 | Entrega o XML da NF-e agora: { "xml": "…" }. Confere o xPed e grava como XML enviado pelo lojista. | manage_woocommerce |
POST /logplus/order/{order_id}/send PROPRO · src/Routes/RestRoutes.php:319 | Envia o pedido ao armazém. | manage_woocommerce |
POST /logplus/order/{order_id}/sync PROPRO · src/Routes/RestRoutes.php:320 | Envia antes o XML que o pedido espera entregar (desde PRO 1.6.4) e relê o pedido no armazém. | manage_woocommerce |
GET /logplus/orders PROPRO · src/Routes/RestRoutes.php:317 | Pedidos do armazém num período (from, to, até 10 dias). | manage_woocommerce |
GET /logplus/settings PROPRO · src/Routes/RestRoutes.php:312 | Configurações do Correios LOG+, contrato, armazéns e serviços. | manage_woocommerce |
POST /logplus/settings PROPRO · src/Routes/RestRoutes.php:312 | Salva as configurações do Correios LOG+. | manage_woocommerce |
POST /logplus/test PROPRO · src/Routes/RestRoutes.php:314 | Testa a conexão com o armazém. | manage_woocommerce |
GET /logplus/stock PROPRO · src/Routes/RestRoutes.php:315 | Estoque do armazém comparado à loja. | manage_woocommerce |
POST /logplus/stock/sync PROPRO · src/Routes/RestRoutes.php:316 | Copia o estoque do armazém para a loja. | manage_woocommerce |
GET /settings/packaging PROPRO · src/Routes/RestRoutes.php:158 | Caixas cadastradas da loja e serviços de cada uma. | manage_woocommerce |
POST /settings/packaging PROPRO · src/Routes/RestRoutes.php:158 | Substitui as caixas da loja. | manage_woocommerce |
GET /settings/bling PROPRO · src/Routes/RestRoutes.php:228 | Configurações da integração nativa com o Bling. | manage_woocommerce |
POST /settings/bling PROPRO · src/Routes/RestRoutes.php:228 | Salva as configurações do Bling. | manage_woocommerce |
POST /bling/connect PROPRO · src/Routes/RestRoutes.php:240 | Inicia a conexão com o Bling. | manage_woocommerce |
GET /bling/status PROPRO · src/Routes/RestRoutes.php:246 | Estado da conexão com o Bling. | manage_woocommerce |
POST /bling/disconnect PROPRO · src/Routes/RestRoutes.php:252 | Desconecta o Bling. | manage_woocommerce |
GET /bling/channels PROPRO · src/Routes/RestRoutes.php:258 | Canais de venda do Bling. | manage_woocommerce |
GET /bling/oauth/callback PROPRO · src/Routes/RestRoutes.php:264 | Retorno da autorização do Bling (HTML). | pública state de uso único |
POST /bling/webhook PROPRO · src/Routes/RestRoutes.php:270 | Webhook do Bling. | pública assinatura do Bling |
POST /print-agent/pair-code PROPRO · src/Routes/RestRoutes.php:120 | Gera o código de pareamento do agente de impressão. | manage_woocommerce |
GET /print-agent/agents PROPRO · src/Routes/RestRoutes.php:126 | Agentes de impressão pareados. | manage_woocommerce |
DELETE /print-agent/agents/{id} PROPRO · src/Routes/RestRoutes.php:132 | Revoga um agente. | manage_woocommerce |
POST /print-agent/test PROPRO · src/Routes/RestRoutes.php:138 | Impressão de teste. | manage_woocommerce |
POST /print-agent/pair PROPRO · src/Routes/RestRoutes.php:90 | O agente troca o código de pareamento por um token. | pública código de pareamento |
GET /print-agent/jobs PROPRO · src/Routes/RestRoutes.php:96 | O agente busca trabalhos de impressão. | token do agente (X-Infixs-Agent-Token) |
POST /print-agent/jobs/{id}/claim PROPRO · src/Routes/RestRoutes.php:102 | O agente reserva um trabalho. | token do agente |
POST /print-agent/jobs/{id}/status PROPRO · src/Routes/RestRoutes.php:108 | O agente informa o resultado. | token do agente |
POST /print-agent/printers PROPRO · src/Routes/RestRoutes.php:114 | O agente informa as impressoras. | token do agente |
Erros do Correios LOG+: logplus_order_not_found 404, logplus_not_created 409 (XML antes de o pedido existir no armazém), logplus_license_inactive 403, logplus_not_configured 409, logplus_invalid_xml 422 (vazio, maior que 1 MB, ilegível ou sem xPed, com reason = xped), logplus_order_closed 409, logplus_busy 409, logplus_invalid_order 422 (no envio, quando o pedido não pode ir ao armazém como está; o motivo vem na mensagem), logplus_invalid_period 400 e logplus_period_too_long 422 (em GET /logplus/orders: datas AAAA-MM-DD, a final igual ou depois da inicial, período de até 10 dias) e logplus_http_error 502 (com correios_status).
REST do WooCommerce
| Rota do WooCommerce | O que o Correios Automático acrescenta | Plano |
|---|---|---|
GET /wp-json/wc/v3/orders/{id}src/Core/Admin/WooCommerce/Rest.php:54 | Os campos tracking_codes (id, code, carrier, description, category, date_created_gmt) e correios_tracking_code (códigos separados por vírgula). | Grátis |
PUT /wp-json/wc/v3/orders/{id}PRO · src/Core/Admin/Integration/Rest.php:162 | Com os dois metas da NF-e em meta_data, pré-posta na hora cada volume ainda não pré-postado, com a NF-e (emiteDCe N) e o código de rastreio. | PRO |
PUT /wp-json/wc/v3/orders/{id}PRO · src/Core/Admin/Integration/Rest.php:143 | O campo correios_tracking_code (ou o meta _correios_tracking_code em meta_data) grava um código de rastreio. | PRO |
POST /wp-json/wc/v3/ordersPRO · src/Core/Admin/Integration/Rest.php:100 | Prepara o pedido criado por outro sistema para os Correios: vincula a linha de frete a um método do Correios Automático e divide em volumes. | PRO |
POST /wp-json/wc/v3/orders/{id}/notesPRO · src/Core/Admin/Integration/Rest.php:505 | Numa nota nova do pedido, o primeiro código no formato AA123456789BR (maiúsculas ou minúsculas, espaços ignorados) vira código de rastreio, conforme a opção “Quando enviar o código de rastreio via API” (Configurações → Integrações): update_code (padrão) grava o código; update_code_and_status grava e também muda o pedido para Em transporte (in-transit), mesmo numa nota sem código; none não faz nada. | PRO |
Na pré-postagem pelos metas da REST do WooCommerce
- Ela roda na atualização do pedido (não na criação), com os dois metas na mesma requisição.
- A chave vai como enviada: mande 44 dígitos, sem espaços.
- O PRO confere se a loja tem contrato para pré-postar e se o volume já foi pré-postado. As demais escolhas (a pré-postagem automática do método, o pagamento, o Correios LOG+) ficam com o ERP.
- Falhas ficam no log de depuração do Correios Automático.
Exemplos completos
Criar a pré-postagem com a NF-e
POST /wp-json/infixs-correios-automatico/v1/preposts
Content-Type: application/json
{
"order_id": 1234,
"shipping_item_id": 77,
"invoice_number": "1234",
"invoice_key": "35261112345678000195550010000012341123456781"
}Resposta (o modelo de pré-postagem, o mesmo das outras rotas desta seção):
{
"id": 87,
"order_id": 1234,
"vendor_id": null,
"shipping_item_id": 77,
"expire_at": "2026-12-04 00:00:00",
"created_at": "2026-11-04 10:15:02",
"object_code": "AB123456789BR",
"service": "SEDEX",
"status": "Pré-postado",
"status_code": 2,
"payment_type": "A faturar",
"dce": false,
"cancel_reason": null,
"dce_icms_blocked": false
}status_code: 1 Preatendido, 2 Pré-postado, 3 Postado, 4 Expirado, 5 Cancelado, 6 Estornado, 7 Pendente. dce_icms_blocked indica que a DC-e foi recusada porque a loja é contribuinte de ICMS (rejeição 812), sinal de que o envio precisa da NF-e. Para forçar a DC-e mesmo com NF-e no pedido: { "order_id": 1234, "withDce": true }.
Consultar o pedido, a nota e as pré-postagens
GET /wp-json/infixs-correios-automatico/v1/orders/1234
{
"status": "success",
"order": {
"id": 1234,
"status": "processing",
"status_label": "Processando",
"total_amount": 17580,
"customer": {
"id": 12,
"name": "Cliente Exemplo",
"email": "[email protected]",
"phone_number": "11900000000",
"document": "000.000.000-00",
"address": { "postal_code": "01001-000", "street": "Rua Exemplo", "number": "100", "complement": "", "neighborhood": "Centro", "city": "São Paulo", "state": "SP", "country": "BR" }
},
"shipping_items": [
{ "item_id": 77, "instance_id": 5, "method_title": "SEDEX", "cost": 1590, "volume_index": 0, "volume_total": 0, "vendor_id": null, "is_correios": true, "carrier": "correios", "shipping_product_code": "03220" }
],
"invoice": { "invoice_number": "1234", "invoice_key": "35261112345678000195550010000012341123456781", "model": "55", "source": "meu-plugin-nfe", "source_label": "Meu Plugin de NF-e" },
"waiting_invoice": false,
"invoice_status": { "state": "authorized", "tone": "success", "label": "NF-e nº 1234", "detail": "", "source": "meu-plugin-nfe", "source_label": "Meu Plugin de NF-e", "danfe": "ready", "actions": [] },
"meta_data": [
{ "key": "_infixs_correios_automatico_invoice_number", "value": "1234" },
{ "key": "_infixs_correios_automatico_invoice_key", "value": "35261112345678000195550010000012341123456781" }
],
"preposts": [
{ "id": 87, "order_id": 1234, "vendor_id": null, "shipping_item_id": 77, "object_code": "AB123456789BR", "service": "SEDEX", "status": "Pré-postado", "status_code": 2, "payment_type": "A faturar", "dce": false, "cancel_reason": null, "dce_icms_blocked": false, "expire_at": "2026-12-04 00:00:00", "created_at": "2026-11-04 10:15:02" }
],
"prepost_errors": [],
"tracking_codes": [
{ "id": 301, "code": "AB123456789BR", "vendor_id": null, "shipping_item_id": 77, "carrier": "correios" }
]
}
}Pedidos aguardando a NF-e
PRO Recortado; cada item de orders tem o formato completo de GET /orders/{id}.
GET /wp-json/infixs-correios-automatico/v1/orders?pending=invoice&status=&per_page=50
{
"status": "success",
"page": 1,
"per_page": 50,
"total_results": 2,
"total": 2,
"total_pages": 1,
"orders": [ { "id": 1240, "waiting_invoice": true, "invoice_status": { "state": "pending", "label": "Pré-postagem automática aguardando a NF-e" } } ]
}Reler a pré-postagem nos Correios
POST /wp-json/infixs-correios-automatico/v1/preposts/87/sync
{ "id": 87, "object_code": "AB123456789BR", "status": "Postado", "status_code": 3, "dce": false, "cancel_reason": null, "dce_icms_blocked": false }Cancelar a pré-postagem
PRO Com o PRO ativo:
POST /wp-json/infixs-correios-automatico/v1/preposts/87/cancel
{ "success": true }Só com o grátis, a rota responde 400:
{
"code": "cancel_prepost_pro_feature",
"message": "...",
"data": { "status": 400, "buy_pro_url": "https://..." }
}Dados da etiqueta com a DANFE
Recortado; cada etiqueta traz também os demais dados do destinatário, os totais e o contrato.
GET /wp-json/infixs-correios-automatico/v1/labels?order_id[]=1234
{
"status": "success",
"labels": [
{
"order_id": 1234,
"shipping_item_id": 77,
"name": "Cliente Exemplo",
"document": "000.000.000-00",
"address_postalcode": "01001-000",
"address_city": "São Paulo",
"address_state": "SP",
"carrier": "correios",
"shipping_product_code": "03220",
"tracking_code": "AB123456789BR",
"total_amount": 17580,
"volume_index": 1,
"volume_total": 1,
"items": [ { "name": "Camiseta", "sku": "CAM-01", "quantity": 1, "ncm": "61091000", "amount": 15990 } ],
"preposts": [ { "id": 87, "object_code": "AB123456789BR", "invoice_number": "1234", "invoice_key": "35261112345678000195550010000012341123456781", "dce": false, "contract_source": "own" } ],
"invoice": { "invoice_number": "1234", "invoice_key": "35261112345678000195550010000012341123456781", "model": "55", "source": "meu-plugin-nfe", "source_label": "Meu Plugin de NF-e" },
"danfe_status": "ready",
"danfe": { "schema": 1, "source": "meu-plugin-nfe", "environment": "production", "key": "35261112345678000195550010000012341123456781", "number": "1234", "series": "1", "operation": "out", "total": 15990 },
"sender": null
}
]
}Documento da devolução e reversa
GET /wp-json/infixs-correios-automatico/v1/preposts/reverse/document?order_id=1234&shipping_item_id=77
{ "source": "outbound_invoice", "emite_dce": false, "invoice_number": "1234", "invoice_key": "35261112345678000195550010000012341123456781" }POST /wp-json/infixs-correios-automatico/v1/preposts/reverse
Content-Type: application/json
{ "order_id": 1234, "shipping_item_id": 77 }NF-e pela REST do WooCommerce
PRO Com as chaves da REST do WooCommerce ou uma senha de aplicação de um usuário que edita pedidos:
PUT /wp-json/wc/v3/orders/1234
Content-Type: application/json
{
"meta_data": [
{ "key": "_infixs_correios_automatico_invoice_number", "value": "1234" },
{ "key": "_infixs_correios_automatico_invoice_key", "value": "35261112345678000195550010000012341123456781" }
]
}XML da NF-e para o Correios LOG+
PRO Requisição e resposta (recortada):
POST /wp-json/infixs-correios-automatico/v1/logplus/order/1234/xml
Content-Type: application/json
{ "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><nfeProc ...>...<compra><xPed>987654</xPed></compra>...</nfeProc>" }{
"order_id": 1234,
"enabled": true,
"logplus_order": true,
"id": "987654",
"number": "1234",
"service": "39888",
"service_label": "SEDEX LOG+",
"status": "created",
"xml_status": "sent",
"xml_attempts": 1,
"has_xml": true,
"xml_error": null,
"xml_retrying": false,
"error": null
}