{
  "info": {
    "name": "PetroW — integração Basama",
    "_postman_id": "petrow-petrow-integração-basama",
    "description": "Coleção gerada da documentação oficial (https://wiki.txfuel.com.br/pt-br/petrow/api). Preencha as variáveis da coleção: base_url, tipo_identificador (APP, REDE, CNPJ ou CPF), valor_identificador, identificador e app_id. A senha do dia é calculada automaticamente.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "// Autenticação das APIs de terceiro do PetroW: acrescenta APP|REDE|CNPJ|CPF, SENHA (do dia) e A em todo pedido.",
          "// SENHA = md5(identificador + AAAA-MM-DD + valor enviado em APP/REDE/CNPJ/CPF), data de Brasília.",
          "const tipo = pm.variables.get('tipo_identificador') || 'APP';",
          "const valor = pm.variables.get('valor_identificador') || '';",
          "const identificador = pm.variables.get('identificador') || '';",
          "const hoje = new Date(Date.now() - 3 * 3600 * 1000).toISOString().slice(0, 10);",
          "const chave = (tipo === 'CNPJ' || tipo === 'CPF') ? valor.replace(/\\D/g, '') : valor;",
          "const senha = CryptoJS.MD5(identificador + hoje + chave).toString();",
          "['APP', 'REDE', 'CNPJ', 'CPF', 'SENHA', 'A'].forEach(k => pm.request.url.query.remove(k));",
          "pm.request.url.query.add({ key: tipo, value: chave });",
          "pm.request.url.query.add({ key: 'SENHA', value: senha });",
          "pm.request.url.query.add({ key: 'A', value: pm.variables.get('app_id') });"
        ]
      }
    }
  ],
  "variable": [
    {
      "key": "base_url",
      "value": "https://pwbase1.txfuel.com.br/api"
    },
    {
      "key": "tipo_identificador",
      "value": "APP"
    },
    {
      "key": "valor_identificador",
      "value": "NOME DO APP"
    },
    {
      "key": "identificador",
      "value": ""
    },
    {
      "key": "app_id",
      "value": "0"
    }
  ],
  "item": [
    {
      "name": "Integração Basama",
      "description": "Integração com o Basama, sistema usado por clientes do PetroW: criação e cancelamento de ordem no formato SisPetro, com regras próprias desse sistema. Autenticação, perfis e erros seguem o manual geral das APIs de terceiro.",
      "item": [
        {
          "name": "POST basama/ordem_create — Cria ordem (C ou D) no layout SisPetro",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/v1/terceiro/basama/ordem_create",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "terceiro",
                "basama",
                "ordem_create"
              ],
              "query": []
            },
            "description": "CODTRANSP não é usado: não define a transportadora da ordem.\n\nPerfis: App, Rede, Filial, Cliente, Pessoa.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"ORDEM_CARREGAMENTO\": {\n    \"CNPJEMPRESA\": \"00.000.000/0001-00\",\n    \"TIPO\": \"C\",\n    \"DATA\": \"12/11/2026\",\n    \"CODTRANSP\": \"000.000.000-00\",\n    \"SEQFROTA\": \"ABC1D23\",\n    \"SEQFROTACARRETA\": \"ABC1D24\",\n    \"SEQFROTATREM\": \"\",\n    \"SEQFROTA4\": \"\",\n    \"COLETAAMOSTRA\": \"0\",\n    \"WEBNUMEROOCCLIENTE\": \"OC-0001\",\n    \"OBSERVACAO\": \"\",\n    \"COMPARTIMENTACAO_OC\": [\n      {\n        \"COMPARTIMENTO\": \"1\",\n        \"CODPROD\": \"S10\",\n        \"QTDE\": \"10000\"\n      },\n      {\n        \"COMPARTIMENTO\": \"2\",\n        \"CODPROD\": \"S10\",\n        \"QTDE\": \"15000\"\n      }\n    ]\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "POST basama/ordem_cancel — Cancela ordem pendente",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/v1/terceiro/basama/ordem_cancel",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "terceiro",
                "basama",
                "ordem_cancel"
              ],
              "query": []
            },
            "description": "Cancela a ordem ID se ela for do cliente do CNPJEMPRESA e estiver em P (pendente): passa para C (cancelada), com data_hora_cancelada = agora. Respeita o escopo do acesso (ordem de outra filial ou de outro cliente = 403) e exige que CNPJEMPRESA seja o do cliente.\n\nPerfis: App, Rede, Filial, Cliente, Pessoa.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"CNPJEMPRESA\": \"00.000.000/0001-00\",\n  \"ID\": \"123456\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    }
  ]
}
