Documentação · API v1

API de Integração

Consulte pedidos de produção do ProdPlan a partir do seu sistema. Somente leitura, autenticada por chave, com um contrato estável e versionado.

Somente leitura. A API v1 permite consultar pedidos. Não há endpoints de escrita (criar/alterar/excluir) para integrações externas.

Autenticação

Toda requisição precisa enviar sua chave de integração no header x-api-key:

x-api-key: ppk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • A chave é gerada pelo administrador da sua empresa dentro do ProdPlan (menu de Integração).
  • Ela é exibida uma única vez, no momento da criação. Guarde-a em local seguro (cofre de segredos / variável de ambiente). Se perder, gere uma nova e revogue a antiga.
  • A chave identifica sua empresa automaticamente — você não precisa (nem deve) enviar nenhum identificador de empresa nas requisições.

Erros de autenticação

HTTPerrorSignificado
401Missing API keyHeader x-api-key ausente.
401Invalid API keyChave inexistente, inativa ou revogada.
401API key expiredChave passou da data de expiração.
403INTEGRATION_DISABLEDIntegração não está habilitada/contratada para a empresa.
403SUBSCRIPTION_INACTIVEAssinatura da empresa está inativa.
403INSUFFICIENT_SCOPEA chave não tem permissão para este recurso.
429RATE_LIMITEDExcesso de requisições (ver Rate limit).

Base URL

https://api.prodplan.com.br/integration/v1

Todos os caminhos abaixo são relativos a essa base.

Consultar pedidos

GET/ordersescopo: orders:read

Retorna pedidos com seus itens e, para cada item, o histórico de leituras de produção.

Parâmetros de consulta

Todos são opcionais e combináveis.

ParâmetroTipoDescrição
orderNumberinteiro ou listaFiltra por número(s) de pedido. Ex: orderNumber=101,102,103.
batchNumberinteiro ou listaFiltra por número(s) de lote. Ex: batchNumber=5.
pageinteiro (default 1)Página da paginação.
limitinteiro (default 50)Itens por página. Máximo 200.

Sem filtros, retorna todos os pedidos da empresa (paginados), do mais recente para o mais antigo.

Exemplos

# Um pedido específico
curl -H "x-api-key: SUA_CHAVE" \
  "https://api.prodplan.com.br/integration/v1/orders?orderNumber=101"

# Vários pedidos
curl -H "x-api-key: SUA_CHAVE" \
  "https://api.prodplan.com.br/integration/v1/orders?orderNumber=101,102,103"

# Um lote inteiro
curl -H "x-api-key: SUA_CHAVE" \
  "https://api.prodplan.com.br/integration/v1/orders?batchNumber=5"

# Lote + paginação
curl -H "x-api-key: SUA_CHAVE" \
  "https://api.prodplan.com.br/integration/v1/orders?batchNumber=5&page=2&limit=100"

Resposta 200 OK

{
  "data": [
    {
      "orderNumber": 101,
      "batchNumber": 5,
      "boxNumber": 12,
      "customerName": "Marcenaria Silva",
      "buyOrder": "OC-2024-889",
      "loadNumber": "CARGA-31",
      "orderDate": "2026-07-10T00:00:00.000Z",
      "deliveryDate": "2026-07-25T00:00:00.000Z",
      "totalAmount": 12500.0,
      "createdAt": "2026-07-10T13:02:11.000Z",
      "progress": {
        "totalItems": 120,
        "itemsStarted": 120,
        "itemsFinished": 84,
        "cutting":   { "total": 120, "done": 120 },
        "drilling":  { "total": 120, "done": 100 },
        "border":    { "total": 120, "done": 96  },
        "packaging": { "total": 120, "done": 84  },
        "firstReadDate": "2026-07-11T08:15:00.000Z",
        "lastReadDate":  "2026-07-18T16:40:00.000Z"
      },
      "items": [
        {
          "barcode": "7891234500017",
          "quantity": 2,
          "product": {
            "itemCode": "MDF-18-BRANCO",
            "description": "Lateral 18mm Branco TX 700x400"
          },
          "readings": [
            {
              "readingType": "Normal",
              "readDate": "2026-07-11T08:15:00.000Z",
              "machineId": 7,
              "machineDescription": "Seccionadora 01",
              "poId": 1
            }
          ]
        }
      ]
    }
  ],
  "total": 37,
  "page": 1,
  "limit": 50
}

Dicionário de campos

Pedido (data[])

CampoTipoDescrição
orderNumberinteiroNúmero do pedido (único por empresa).
batchNumberinteiroNúmero do lote de produção.
boxNumberinteiro | nullNúmero da caixa/volume, quando aplicável.
customerNamestringNome do cliente do pedido.
buyOrderstringOrdem de compra do cliente.
loadNumberstringIdentificação da carga.
orderDateISO 8601Data do pedido.
deliveryDateISO 8601Data de entrega prevista.
totalAmountnúmero | nullValor total do pedido.
createdAtISO 8601Quando o pedido foi importado no ProdPlan.
progressobjeto | nullResumo de progresso.
itemslistaItens do pedido.

Progresso (progress)

Contadores por etapa de produção. Cada etapa traz total (itens que passam por ela) e done (itens já lidos nela). Etapas: cutting (corte), drilling (furação), border (bordagem/coladeira), packaging (embalagem). itemsFinished == totalItems indica pedido concluído.

Item (items[])

CampoTipoDescrição
barcodestringCódigo de barras da peça.
quantitynúmeroQuantidade.
product.itemCodestringCódigo do produto.
product.descriptionstringDescrição do produto.
readingslistaLeituras de produção do item.

Leitura (readings[])

Cada apontamento de produção do item, em ordem cronológica.

CampoTipoDescrição
readingTypestring | nullNormal, Retrabalho, Refugo, Manual, Outro.
readDateISO 8601Data/hora da leitura.
machineIdinteiroId da máquina.
machineDescriptionstring | nullNome da máquina.
poIdinteiroId do posto operativo (etapa) onde a leitura ocorreu.
Peças repostas: se uma peça foi refugada e reposta, as leituras da peça antiga são omitidas — readings reflete sempre a peça vigente.

Rate limit

  • 120 requisições por minuto, por chave.
  • Cada resposta traz os headers padrão RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset.
  • Ao exceder, a API responde 429 com { "error": "RATE_LIMITED" }. Aguarde a janela reiniciar (respeite RateLimit-Reset) e evite polling agressivo — prefira consultar por lote/pedido.

Boas práticas

  • Guarde a chave como segredo. Nunca a exponha em código-fonte público, front-end ou logs.
  • Rotação: para trocar a chave sem downtime, gere a nova, atualize sua integração e só então revogue a antiga.
  • Paginação: ao varrer muitos pedidos, itere page até page * limit >= total.
  • Datas: todas em UTC, formato ISO 8601. Converta para o fuso local ao exibir.
  • Versionamento: o caminho começa em /v1. Mudanças incompatíveis virão em /v2, sem quebrar o /v1.

Suporte

Dúvidas de integração ou solicitação de habilitação/aumento de limite: entre em contato com a equipe ProdPlan.