{
  "info": {
    "name": "Weesy API Fiscal — v1",
    "description": "Coleção gerada dos contratos OpenAPI comuns, NFS-e, Webhooks, CT-e e MDF-e. Configure baseUrl e token antes de executar. Token aceita JWT de parceiro ou token Bearer de empresa, conforme o contrato. Não contém credenciais reais.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{token}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://apifiscal.weesy.com.br/v1",
      "type": "string"
    },
    {
      "key": "token",
      "value": "<JWT_OU_TOKEN_DO_EMISSOR>",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "NFS-e",
      "item": [
        {
          "name": "Fazer login (só integradores)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "",
                "description": "O token de parceiro que a Weesy entregou a você.",
                "disabled": false
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/autenticacao",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "autenticacao"
              ]
            },
            "description": "Use **só** se você é um integrador que emite notas para várias empresas e recebeu da Weesy um\n**token de parceiro**. Envie esse token no cabeçalho `token` e receba um token temporário,\nválido por 2 horas, para usar nas outras chamadas.\n\n**Tem um token de API (começa com `wee_`)?** Então não precisa desta chamada: use o token\ndireto no cabeçalho `Authorization: Bearer wee_...`.\n"
          },
          "response": []
        },
        {
          "name": "Listar empresas",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/empresas",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas"
              ]
            },
            "description": "Lista as empresas que você pode usar para emitir. Com um token de API (`wee_...`), vem só a sua empresa.\n"
          },
          "response": []
        },
        {
          "name": "Consultar uma empresa",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                }
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": "CNPJ da empresa, só números."
                }
              ]
            },
            "description": "Mostra os dados da empresa, a situação do certificado digital e a configuração de NFS-e.\n"
          },
          "response": []
        },
        {
          "name": "Configurar a emissão de NFS-e",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj/configuracao-nfse",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                },
                "configuracao-nfse"
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": "CNPJ da empresa, só números."
                }
              ]
            },
            "description": "Define a série e o número do próximo RPS (o número provisório que a nota recebe antes de virar\nNFS-e), o regime tributário e se a empresa tem incentivo fiscal. Normalmente se faz uma vez,\nantes da primeira nota.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"serie\": \"02\",\n  \"proximoRps\": \"1\",\n  \"regime\": {\n    \"situacaoSimplesNacional\": 3,\n    \"regimeEspecial\": 0,\n    \"regimeApuracaoSimples\": 1\n  },\n  \"incentivoFiscal\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar o certificado digital A1",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj/certificado",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                },
                "certificado"
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": "CNPJ da empresa, só números."
                }
              ]
            },
            "description": "Envie o arquivo do certificado digital A1 (`.pfx` ou `.p12`) e a senha dele. O certificado é\nnecessário para emitir em produção. Recusamos certificado vencido ou de outro CNPJ, e a senha\nnunca é devolvida.\n"
          },
          "response": []
        },
        {
          "name": "Verificar se a cidade é atendida",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/municipios/:codigoIbge",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "municipios",
                {
                  "type": "variable",
                  "value": "codigoIbge"
                }
              ],
              "variable": [
                {
                  "key": "codigoIbge",
                  "value": "{{codigoIbge}}",
                  "description": "Código IBGE do município consultado."
                }
              ]
            },
            "description": "Antes de cadastrar uma empresa, confira se emitimos notas na cidade dela. A resposta também diz\nse a prefeitura tem ambiente de testes e se exige certificado. Cidade não atendida vem com\n`atendido: false` — não é um erro.\n"
          },
          "response": []
        },
        {
          "name": "Listar os códigos de serviço da cidade",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/municipios/:codigoIbge/servicos?referencia={{referencia}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "municipios",
                {
                  "type": "variable",
                  "value": "codigoIbge"
                },
                "servicos"
              ],
              "query": [
                {
                  "key": "referencia",
                  "value": "{{referencia}}",
                  "description": "Data de referência da vigência. Padrão = hoje.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "codigoIbge",
                  "value": "{{codigoIbge}}",
                  "description": "Código IBGE do município consultado."
                }
              ]
            },
            "description": "Os códigos de serviço que a prefeitura aceita, com a alíquota de ISS de cada um. Use esta lista\npara cadastrar os serviços da empresa. Lista vazia quer dizer que ainda não temos os códigos\ndessa cidade.\n"
          },
          "response": []
        },
        {
          "name": "Listar as atividades de um código de serviço",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/municipios/:codigoIbge/atividades?servico={{servico}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "municipios",
                {
                  "type": "variable",
                  "value": "codigoIbge"
                },
                "atividades"
              ],
              "query": [
                {
                  "key": "servico",
                  "value": "{{servico}}",
                  "description": "Código do serviço do município (ex. `1.07`).",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "codigoIbge",
                  "value": "{{codigoIbge}}",
                  "description": "Código IBGE do município consultado."
                }
              ]
            },
            "description": "Algumas prefeituras dividem um código de serviço em atividades mais específicas. Esta lista mostra quais são, para você escolher a certa.\n"
          },
          "response": []
        },
        {
          "name": "Listar indicadores de operação (IBS/CBS)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/tabelas/ibscbs/indicadores-operacao",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "tabelas",
                "ibscbs",
                "indicadores-operacao"
              ]
            },
            "description": "Códigos da reforma tributária (IBS/CBS) que dizem que tipo de serviço é prestado e onde o imposto é devido. Você escolhe um ao cadastrar o serviço.\n"
          },
          "response": []
        },
        {
          "name": "Listar classificações tributárias (IBS/CBS)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/tabelas/ibscbs/classificacoes",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "tabelas",
                "ibscbs",
                "classificacoes"
              ]
            },
            "description": "Classificações tributárias do IBS/CBS (o código `cClassTrib`), com o CST de cada uma. Você escolhe uma ao cadastrar o serviço.\n"
          },
          "response": []
        },
        {
          "name": "Listar motivos de cancelamento",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/tabelas/nfse/motivos-cancelamento?cnpjEmitente={{cnpjEmitente}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "tabelas",
                "nfse",
                "motivos-cancelamento"
              ],
              "query": [
                {
                  "key": "cnpjEmitente",
                  "value": "{{cnpjEmitente}}",
                  "description": "",
                  "disabled": false
                }
              ]
            },
            "description": "Os motivos de cancelamento que a prefeitura da empresa aceita. Informe o `codigo` escolhido ao cancelar uma nota.\n"
          },
          "response": []
        },
        {
          "name": "Listar os serviços da empresa",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj/servicos",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                },
                "servicos"
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": "CNPJ da empresa, só números."
                }
              ]
            },
            "description": "Os serviços já cadastrados para a empresa, com os códigos tributários de cada um. Na emissão,\na nota aponta para um deles pelo `id` (`servico: { \"id\": 42 }`).\n"
          },
          "response": []
        },
        {
          "name": "Cadastrar um serviço",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj/servicos",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                },
                "servicos"
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": "CNPJ da empresa, só números."
                }
              ]
            },
            "description": "Cadastre uma vez cada serviço que a empresa presta: o código da prefeitura, a descrição e os\nimpostos. Depois, para emitir, basta informar o serviço, o valor e o cliente. Pegue os códigos em\n*Listar os códigos de serviço da cidade*.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"descricao\": \"Suporte técnico\",\n  \"atividadeMunicipio\": \"620910000\",\n  \"nbs\": \"115013000\",\n  \"cIndOp\": \"100301\",\n  \"cClassTrib\": \"000001\",\n  \"exigibilidadeIss\": 1,\n  \"consumoPessoal\": false,\n  \"issRetidoPadrao\": false,\n  \"discriminacaoPadrao\": \"Suporte técnico mensal ao sistema\",\n  \"ativo\": true,\n  \"confirmadoPor\": \"Maria Souza (contadora)\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Consultar um serviço",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj/servicos/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                },
                "servicos",
                {
                  "type": "variable",
                  "value": "id"
                }
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": "CNPJ da empresa, só números."
                },
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "O `id` do serviço, devolvido no cadastro."
                }
              ]
            },
            "description": "Mostra um serviço da empresa com os códigos da prefeitura, a NBS e os códigos do IBS/CBS que\nvão para a nota. Confira antes de emitir a primeira nota com ele.\n"
          },
          "response": []
        },
        {
          "name": "Alterar um serviço",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj/servicos/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                },
                "servicos",
                {
                  "type": "variable",
                  "value": "id"
                }
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": "CNPJ da empresa, só números."
                },
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "O `id` do serviço, devolvido no cadastro."
                }
              ]
            },
            "description": "Altera o serviço. As próximas notas usam os dados novos; as já emitidas não mudam.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"descricao\": \"Suporte técnico\",\n  \"atividadeMunicipio\": \"620910000\",\n  \"nbs\": \"115013000\",\n  \"cIndOp\": \"100301\",\n  \"cClassTrib\": \"000001\",\n  \"exigibilidadeIss\": 1,\n  \"consumoPessoal\": false,\n  \"issRetidoPadrao\": false,\n  \"discriminacaoPadrao\": \"Suporte técnico mensal ao sistema\",\n  \"ativo\": true,\n  \"confirmadoPor\": \"Maria Souza (contadora)\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Desativar um serviço",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj/servicos/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                },
                "servicos",
                {
                  "type": "variable",
                  "value": "id"
                }
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": "CNPJ da empresa, só números."
                },
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "O `id` do serviço, devolvido no cadastro."
                }
              ]
            },
            "description": "O serviço deixa de aparecer para novas notas. Ele não é apagado, porque as notas antigas continuam apontando para ele.\n"
          },
          "response": []
        },
        {
          "name": "Simular uma nota (sem emitir)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj/servicos/:id/previa",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                },
                "servicos",
                {
                  "type": "variable",
                  "value": "id"
                },
                "previa"
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": "CNPJ da empresa, só números."
                },
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "O `id` do serviço, devolvido no cadastro."
                }
              ]
            },
            "description": "Mostra como a nota vai ficar — impostos, valores e códigos — sem emitir nada. Use para conferir\num serviço novo antes da primeira nota. O corpo é o mesmo de *Emitir NFS-e*; `idIntegracao` e\n`ambiente` são opcionais aqui.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"valorServico\": 100,\n  \"discriminacao\": \"Suporte técnico — outubro/2026\",\n  \"tomador\": {\n    \"tipoPessoa\": \"J\",\n    \"cpfCnpj\": \"11222333000181\",\n    \"nome\": \"EMPRESA EXEMPLO LTDA\",\n    \"endereco\": {\n      \"cep\": \"01001000\",\n      \"logradouro\": \"Rua Exemplo\",\n      \"numero\": \"100\",\n      \"bairro\": \"Centro\",\n      \"codigoIbge\": \"3550308\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Emitir NFS-e",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/nfse",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "nfse"
              ]
            },
            "description": "Envia a nota para a prefeitura. **A resposta só confirma que recebemos a nota** (`201`, situação\n`recebida`). A prefeitura responde depois — em segundos ou minutos — e você fica sabendo pelo\nwebhook `nfse.autorizada` (ou `nfse.rejeitada`), ou consultando a nota.\n\n**Pode repetir a chamada sem medo de emitir duas vezes.** Mande sempre o mesmo `idIntegracao`\npara a mesma venda (por exemplo, o número do pedido):\n\n- mesmo `idIntegracao` e mesmos dados: devolvemos a nota que já existe (`200`);\n- mesmo `idIntegracao` com dados diferentes: erro `409 idintegracao_reutilizado`, com a nota que\n  já existe no campo `existente`;\n- nota **rejeitada** + mesmo `idIntegracao` + dados corrigidos: é a correção — a nota vai de novo\n  para a prefeitura com os dados novos (`200`);\n- duas chamadas iguais ao mesmo tempo: só uma nota é criada; a outra recebe `200` ou `409`.\n\nO `idIntegracao` vale para sempre dentro da empresa — não reaproveite números de pedido.\nNa comparação dos dados, a ordem dos campos e os espaços não fazem diferença.\n\nPara testar sem certificado e sem enviar nada à prefeitura, use `ambiente: simulacao`. No período\nde teste grátis, `producao` não é aceito (`403 ambiente_nao_liberado`).\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"idIntegracao\": \"pedido-10432\",\n  \"cnpjEmitente\": \"21664333000195\",\n  \"ambiente\": \"producao\",\n  \"servico\": {\n    \"id\": 42\n  },\n  \"valorServico\": 100,\n  \"discriminacao\": \"Suporte técnico — outubro/2026\",\n  \"tomador\": {\n    \"tipoPessoa\": \"J\",\n    \"cpfCnpj\": \"11222333000181\",\n    \"nome\": \"EMPRESA EXEMPLO LTDA\",\n    \"email\": \"financeiro@agworks.com.br\",\n    \"endereco\": {\n      \"cep\": \"01001000\",\n      \"logradouro\": \"Rua Exemplo\",\n      \"numero\": \"100\",\n      \"bairro\": \"Centro\",\n      \"codigoIbge\": \"3550308\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Listar NFS-e",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/nfse?cnpjEmitente={{cnpjEmitente}}&status={{status}}&numero={{numero}}&tomador={{tomador}}&competenciaDe={{competenciaDe}}&competenciaAte={{competenciaAte}}&ambiente={{ambiente}}&atualizadoDesde={{atualizadoDesde}}&limite={{limite}}&cursor={{cursor}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "nfse"
              ],
              "query": [
                {
                  "key": "cnpjEmitente",
                  "value": "{{cnpjEmitente}}",
                  "description": "CNPJ da empresa. Obrigatório para integradores, que têm várias empresas.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "{{status}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "numero",
                  "value": "{{numero}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "tomador",
                  "value": "{{tomador}}",
                  "description": "CPF ou CNPJ do tomador.",
                  "disabled": true
                },
                {
                  "key": "competenciaDe",
                  "value": "{{competenciaDe}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "competenciaAte",
                  "value": "{{competenciaAte}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "ambiente",
                  "value": "{{ambiente}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "atualizadoDesde",
                  "value": "{{atualizadoDesde}}",
                  "description": "Traz só o que mudou a partir desta data e hora (inclusive). Para sincronizar: guarde a hora da última consulta e atualize os registros pelo `id` — pode vir algum repetido.",
                  "disabled": true
                },
                {
                  "key": "limite",
                  "value": "{{limite}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "{{cursor}}",
                  "description": "Para pegar a próxima página, repasse o `paginacao.proximoCursor` da resposta anterior.",
                  "disabled": true
                }
              ]
            },
            "description": "Lista as notas, com filtros por empresa, período e situação. Para manter o seu sistema em dia, use `atualizadoDesde` e atualize as notas pelo `id`.\n"
          },
          "response": []
        },
        {
          "name": "Consultar NFS-e",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/nfse/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "nfse",
                {
                  "type": "variable",
                  "value": "id"
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Identificador do recurso consultado."
                }
              ]
            },
            "description": "Mostra a nota com a situação atual, o número e o código de verificação da prefeitura e os links para o PDF e o XML.\n"
          },
          "response": []
        },
        {
          "name": "Consultar NFS-e pelo seu código (idIntegracao)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/nfse/integracao/:idIntegracao?cnpjEmitente={{cnpjEmitente}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "nfse",
                "integracao",
                {
                  "type": "variable",
                  "value": "idIntegracao"
                }
              ],
              "query": [
                {
                  "key": "cnpjEmitente",
                  "value": "{{cnpjEmitente}}",
                  "description": "",
                  "disabled": false
                }
              ],
              "variable": [
                {
                  "key": "idIntegracao",
                  "value": "{{idIntegracao}}",
                  "description": ""
                }
              ]
            },
            "description": "Busca a nota pelo `idIntegracao` que você enviou na emissão — útil quando você não guardou o `id` que a Weesy devolveu.\n"
          },
          "response": []
        },
        {
          "name": "Baixar o XML da NFS-e",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "If-None-Match",
                "value": "",
                "description": "",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/nfse/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "nfse",
                {
                  "type": "variable",
                  "value": "id"
                },
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Identificador do recurso consultado."
                }
              ]
            },
            "description": "O XML oficial da nota autorizada — o arquivo que tem valor fiscal e que o contador precisa guardar.\n"
          },
          "response": []
        },
        {
          "name": "Baixar o PDF da NFS-e (DANFSe)",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "If-None-Match",
                "value": "",
                "description": "",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/nfse/:id/pdf",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "nfse",
                {
                  "type": "variable",
                  "value": "id"
                },
                "pdf"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Identificador do recurso consultado."
                }
              ]
            },
            "description": "O PDF da nota (DANFSe), para enviar ao cliente ou imprimir. Só existe depois que a nota é autorizada; antes disso responde `409 nfse_status_invalido`.\n"
          },
          "response": []
        },
        {
          "name": "Cancelar NFS-e",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/nfse/:id/cancelamento",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "nfse",
                {
                  "type": "variable",
                  "value": "id"
                },
                "cancelamento"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Identificador do recurso consultado."
                }
              ]
            },
            "description": "Pede à prefeitura o cancelamento de uma nota **autorizada**. Informe o motivo (os códigos estão em\n*Listar motivos de cancelamento*). A resposta só confirma o pedido; o resultado chega pelo\nwebhook `nfse.cancelada` ou `nfse.cancelamento_rejeitado`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"motivo\": 1,\n  \"justificativa\": \"Nota emitida com o valor errado; uma nova nota será emitida.\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Tentar emitir de novo",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/nfse/:id/reprocessamento",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "nfse",
                {
                  "type": "variable",
                  "value": "id"
                },
                "reprocessamento"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Identificador do recurso consultado."
                }
              ]
            },
            "description": "Manda de novo para a prefeitura uma nota que deu `erro` (prefeitura fora do ar, por exemplo) ou\nfoi `rejeitada`, **com os mesmos dados**. Para corrigir os dados, use *Emitir NFS-e* com o mesmo\n`idIntegracao`.\n"
          },
          "response": []
        },
        {
          "name": "Enviar a NFS-e por e-mail",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/nfse/:id/email",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "nfse",
                {
                  "type": "variable",
                  "value": "id"
                },
                "email"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Identificador do recurso consultado."
                }
              ]
            },
            "description": "Envia a nota autorizada (PDF e XML) por e-mail para o cliente ou para outros endereços.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"destinatarios\": [\n    \"financeiro@empresaexemplo.com.br\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Exportar as notas do mês (para o contador)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj/exportacoes/nfse?competencia={{competencia}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                },
                "exportacoes",
                "nfse"
              ],
              "query": [
                {
                  "key": "competencia",
                  "value": "{{competencia}}",
                  "description": "",
                  "disabled": false
                }
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": "CNPJ da empresa, só números."
                }
              ]
            },
            "description": "Um arquivo ZIP com os XMLs das notas autorizadas e canceladas do mês e uma planilha\n(`notas.csv`) com número, data, cliente, valor e situação — pronto para mandar ao contador.\nAté 2.000 notas no mês; acima disso responde `409 exportacao_muito_grande`.\n"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Webhooks",
      "item": [
        {
          "name": "Ver o webhook do integrador",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/webhook",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhook"
              ]
            },
            "description": "Só para integradores (token de parceiro). Mostra o endereço que recebe os avisos de todas as suas empresas. Com token de API (`wee_...`), use *Ver o webhook da empresa*.\n"
          },
          "response": []
        },
        {
          "name": "Configurar o webhook do integrador",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/webhook",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhook"
              ]
            },
            "description": "Só para integradores (token de parceiro). Define um endereço único que recebe os avisos de todas as suas empresas. Uma empresa pode ter um endereço próprio, que vale no lugar deste.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://meusistema.com.br/weesy/avisos\",\n  \"eventos\": [\n    \"nfse.autorizada\",\n    \"nfse.rejeitada\",\n    \"nfse.cancelada\"\n  ],\n  \"ativo\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Ver o webhook da empresa",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj/webhook",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                },
                "webhook"
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": ""
                }
              ]
            },
            "description": "Mostra o endereço (URL) que recebe os avisos desta empresa e quais avisos estão ligados. Para\nmudar, use *Configurar o webhook da empresa*.\n"
          },
          "response": []
        },
        {
          "name": "Configurar o webhook da empresa",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj/webhook",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                },
                "webhook"
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": ""
                }
              ]
            },
            "description": "Define o endereço (URL) que vai receber os avisos da empresa — nota autorizada, rejeitada,\ncancelada — e quais avisos você quer receber. A URL precisa ser `https`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://meusistema.com.br/weesy/avisos\",\n  \"eventos\": [\n    \"nfse.autorizada\",\n    \"nfse.rejeitada\",\n    \"nfse.cancelada\"\n  ],\n  \"ativo\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Remover o webhook da empresa",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/empresas/:cnpj/webhook",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "empresas",
                {
                  "type": "variable",
                  "value": "cnpj"
                },
                "webhook"
              ],
              "variable": [
                {
                  "key": "cnpj",
                  "value": "{{cnpj}}",
                  "description": ""
                }
              ]
            },
            "description": "A empresa para de receber avisos no endereço próprio. Para integradores, ela volta a usar o webhook do integrador; com token de API, fica sem webhook.\n"
          },
          "response": []
        },
        {
          "name": "Enviar um webhook de teste",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/webhook/teste",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhook",
                "teste"
              ]
            },
            "description": "Manda um aviso de teste (`teste`) para o endereço configurado, para você conferir se o seu sistema recebe e valida a assinatura. Limite de 10 por hora.\n"
          },
          "response": []
        },
        {
          "name": "Listar os webhooks enviados",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/webhooks/eventos?cnpjEmitente={{cnpjEmitente}}&tipo={{tipo}}&situacao={{situacao}}&de={{de}}&ate={{ate}}&limite={{limite}}&cursor={{cursor}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhooks",
                "eventos"
              ],
              "query": [
                {
                  "key": "cnpjEmitente",
                  "value": "{{cnpjEmitente}}",
                  "description": "CNPJ da empresa. Obrigatório para integradores, que têm várias empresas.",
                  "disabled": true
                },
                {
                  "key": "tipo",
                  "value": "{{tipo}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "situacao",
                  "value": "{{situacao}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "de",
                  "value": "{{de}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "ate",
                  "value": "{{ate}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "limite",
                  "value": "{{limite}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "{{cursor}}",
                  "description": "Para pegar a próxima página, repasse o `paginacao.proximoCursor` da resposta anterior.",
                  "disabled": true
                }
              ]
            },
            "description": "Todos os avisos que enviamos, com cada tentativa: quando, a resposta do seu sistema (código HTTP) e o tempo. Use para descobrir por que um aviso não chegou.\n"
          },
          "response": []
        },
        {
          "name": "Reenviar um webhook",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/webhooks/eventos/:id/reenvio",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhooks",
                "eventos",
                {
                  "type": "variable",
                  "value": "id"
                },
                "reenvio"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": ""
                }
              ]
            },
            "description": "Envia de novo um aviso que já foi enviado, com o mesmo conteúdo e o mesmo `id`, para o endereço configurado hoje. Útil depois de o seu sistema ficar fora do ar.\n"
          },
          "response": []
        },
        {
          "name": "Obter as chaves para validar a assinatura",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/webhooks/chaves",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhooks",
                "chaves"
              ]
            },
            "description": "As chaves públicas da Weesy. Com elas o seu sistema confere que o aviso veio mesmo da Weesy e\nnão foi alterado no caminho. Não precisa de token. Veja o passo a passo no guia de webhooks.\n"
          },
          "response": []
        }
      ]
    },
    {
      "name": "CT-e",
      "item": [
        {
          "name": "Emitir CT-e",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/cte",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cte"
              ]
            },
            "description": "Envia um CT-e para autorização na SEFAZ com todos os dados do frete. A resposta só confirma\nque recebemos; o resultado (autorizado ou rejeitado) chega depois pelo webhook ou\nconsultando o CT-e.\n\n**Não duplica:** o `idIntegracao` identifica o CT-e no seu sistema. Mandou de novo o mesmo\n`idIntegracao` com o mesmo corpo? Devolvemos o CT-e que já existe (`200`), sem emitir outro.\nSe o CT-e anterior foi **rejeitado**, mandar o mesmo `idIntegracao` com o corpo corrigido\n**reenvia** o CT-e com os dados novos (`200`, mesmo `id`). Em qualquer outra situação, corpo\ndiferente com o mesmo `idIntegracao` responde `409`.\n\nOs dados da empresa (razão social, endereço, inscrição estadual, regime) vêm do cadastro\nda Weesy — não vão no corpo.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"idIntegracao\": \"frete-10432\",\n  \"cnpjEmitente\": \"21664333000195\",\n  \"ambiente\": \"homologacao\",\n  \"serie\": \"1\",\n  \"naturezaOperacao\": \"PRESTACAO DE SERVICO DE TRANSPORTE\",\n  \"tomador\": {\n    \"papel\": 0\n  },\n  \"remetente\": {\n    \"cpfCnpj\": \"11222333000181\",\n    \"inscricaoEstadual\": \"111222333444\",\n    \"nome\": \"EMPRESA EXEMPLO LTDA\",\n    \"endereco\": {\n      \"cep\": \"01001000\",\n      \"logradouro\": \"Rua Exemplo\",\n      \"numero\": \"100\",\n      \"bairro\": \"Centro\",\n      \"codigoIbge\": \"3550308\"\n    }\n  },\n  \"destinatario\": {\n    \"cpfCnpj\": \"12345678000195\",\n    \"inscricaoEstadual\": \"9012345678\",\n    \"nome\": \"CLIENTE EXEMPLO LTDA\",\n    \"endereco\": {\n      \"cep\": \"80010000\",\n      \"logradouro\": \"Avenida Exemplo\",\n      \"numero\": \"200\",\n      \"bairro\": \"Centro\",\n      \"codigoIbge\": \"4106902\"\n    }\n  },\n  \"origem\": {\n    \"codigoIbge\": \"3550308\"\n  },\n  \"destino\": {\n    \"codigoIbge\": \"4106902\"\n  },\n  \"documentosTransportados\": [\n    {\n      \"chaveNfe\": \"35261011222333000181550010000456781000456789\"\n    }\n  ],\n  \"valores\": {\n    \"valorTotalServico\": 850,\n    \"valorReceber\": 850,\n    \"componentes\": [\n      {\n        \"nome\": \"FRETE PESO\",\n        \"valor\": 800\n      },\n      {\n        \"nome\": \"PEDAGIO\",\n        \"valor\": 50\n      }\n    ]\n  },\n  \"carga\": {\n    \"valor\": 15800,\n    \"produtoPredominante\": \"MATERIAL DE CONSTRUCAO\",\n    \"quantidades\": [\n      {\n        \"unidade\": \"01\",\n        \"tipoMedida\": \"PESO BRUTO\",\n        \"quantidade\": 1250.5\n      }\n    ]\n  },\n  \"impostos\": {\n    \"cfop\": \"6353\",\n    \"icms\": {\n      \"cst\": \"00\",\n      \"baseCalculo\": 850,\n      \"aliquota\": 12,\n      \"valor\": 102\n    }\n  },\n  \"rodoviario\": {\n    \"rntrc\": \"12345678\"\n  },\n  \"observacoes\": {\n    \"informacoesComplementares\": \"Entregar em horário comercial.\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Emitir CT-e usando o cadastro",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/cte/assistida",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cte",
                "assistida"
              ]
            },
            "description": "Igual a \"Emitir CT-e\", mas você manda só o CPF ou CNPJ de remetente, destinatário, tomador,\nexpedidor e recebedor. A Weesy busca nome, inscrição estadual e endereço no cadastro de\nclientes da empresa. Use quando os clientes já estão cadastrados no ERP Weesy.\n\n**Em breve:** a rota já recebe o CT-e, mas ainda não completa os dados das partes pelo\ncadastro. Até lá, use \"Emitir CT-e\" com os dados completos.\n"
          },
          "response": []
        },
        {
          "name": "Consultar CT-e",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/cte/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cte",
                {
                  "type": "variable",
                  "value": "id"
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do CT-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Mostra a situação atual do CT-e (`status`), a chave de acesso, o protocolo de autorização e\na última resposta da SEFAZ. Use para acompanhar o CT-e se você não usa webhook.\n"
          },
          "response": []
        },
        {
          "name": "Baixar XML do CT-e",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "If-None-Match",
                "value": "",
                "description": "O `ETag` da última vez que você baixou. Se nada mudou, a resposta é `304`, sem corpo.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/cte/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cte",
                {
                  "type": "variable",
                  "value": "id"
                },
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do CT-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Baixa o XML do CT-e autorizado, com o protocolo da SEFAZ. É este arquivo que você guarda e\nmanda para o tomador e para o contador. Antes da autorização responde `409`.\n"
          },
          "response": []
        },
        {
          "name": "Baixar DACTE em PDF",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "If-None-Match",
                "value": "",
                "description": "O `ETag` da última vez que você baixou. Se nada mudou, a resposta é `304`, sem corpo.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/cte/:id/dacte",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cte",
                {
                  "type": "variable",
                  "value": "id"
                },
                "dacte"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do CT-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Baixa o **DACTE** (o PDF do CT-e, que viaja junto com a carga). É gerado na hora, a partir\ndo XML autorizado.\n\n**Em breve:** enquanto não estiver disponível, esta rota responde `501`. Gere o PDF a partir\ndo XML (`GET /cte/{id}/xml`) no seu sistema.\n"
          },
          "response": []
        },
        {
          "name": "Reenviar CT-e com erro",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/cte/:id/reprocessamento",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cte",
                {
                  "type": "variable",
                  "value": "id"
                },
                "reprocessamento"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do CT-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Manda de novo para a SEFAZ um CT-e que ficou com `status` **erro** (SEFAZ fora do ar,\ntempo esgotado) ou **rejeitado**, sem mudar nenhum dado. Não tem corpo. Antes de reenviar,\na Weesy confere na SEFAZ se o CT-e já não foi autorizado, para nunca emitir em dobro.\n\nPara **corrigir dados** de um CT-e rejeitado, use `POST /cte` com o mesmo `idIntegracao`\ne o corpo corrigido.\n"
          },
          "response": []
        },
        {
          "name": "Cancelar CT-e",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/cte/:id/cancelamento",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cte",
                {
                  "type": "variable",
                  "value": "id"
                },
                "cancelamento"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do CT-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Pede à SEFAZ o cancelamento de um CT-e **autorizado**, por exemplo quando o frete não\naconteceu. Regras da SEFAZ:\n\n- só é aceito em até **7 dias (168 horas)** depois da autorização;\n- CT-e que já tem carta de correção registrada não pode ser cancelado;\n- a justificativa precisa ter de 15 a 255 caracteres.\n\nA resposta confirma que recebemos o pedido. Em geral a SEFAZ responde na hora e o CT-e já\nvolta `cancelado` (ou `cancelamento_rejeitado`); se a SEFAZ demorar, ele volta\n`cancelamento_solicitado` e o resultado chega pelo webhook ou consultando o CT-e.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"justificativa\": \"Frete não realizado, carga devolvida ao remetente.\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar carta de correção",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/cte/:id/carta-correcao",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cte",
                {
                  "type": "variable",
                  "value": "id"
                },
                "carta-correcao"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do CT-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Corrige um dado de um CT-e **autorizado** sem cancelar, como um endereço ou uma observação.\nRegras da SEFAZ:\n\n- **não** corrige valores, impostos, CFOP, CNPJ/CPF, inscrição estadual, tomador nem datas\n  de emissão — nesses casos, cancele e emita outro CT-e;\n- aceita até **20** cartas por CT-e; cada carta nova substitui a anterior, então mande\n  todas as correções juntas;\n- só é aceita em até **30 dias (720 horas)** depois da autorização.\n\nA resposta traz o evento. Em geral a SEFAZ responde na hora (`situacao` `registrado` ou\n`rejeitado`); se demorar, o resultado chega pelo webhook `cte.carta_correcao_registrada`\nou em `GET /cte/{id}/eventos`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"correcoes\": [\n    {\n      \"grupoAlterado\": \"compl\",\n      \"campoAlterado\": \"xObs\",\n      \"valorAlterado\": \"Entrega agendada para o período da manhã.\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Listar eventos do CT-e",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/cte/:id/eventos",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cte",
                {
                  "type": "variable",
                  "value": "id"
                },
                "eventos"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do CT-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Lista os cancelamentos e cartas de correção pedidos para o CT-e, do mais antigo para o mais\nnovo, com a resposta da SEFAZ de cada um.\n"
          },
          "response": []
        },
        {
          "name": "Montar CT-e a partir da NF-e",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/cte/previa-nfe",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cte",
                "previa-nfe"
              ]
            },
            "description": "Lê o XML de uma NF-e (a nota da mercadoria que vai ser transportada) e devolve os dados\nque já servem para o CT-e: remetente, destinatário, chave da NF-e e valor da carga. Também\ndiz quais campos ainda faltam para emitir. **Nada é emitido nem gravado.**\n\nMande o XML (`xmlNfeBase64`) ou só a chave (`chaveNfe`). Pela chave, a SEFAZ só entrega o\nXML a quem tem direito a ele — se não entregar, responde `404` e você manda o XML.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cnpjEmitente\": \"21664333000195\",\n  \"chaveNfe\": \"35261011222333000181550010000456781000456789\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Consultar se a SEFAZ está no ar",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/cte/status-sefaz?cnpjEmitente={{cnpjEmitente}}&uf={{uf}}&ambiente={{ambiente}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cte",
                "status-sefaz"
              ],
              "query": [
                {
                  "key": "cnpjEmitente",
                  "value": "{{cnpjEmitente}}",
                  "description": "CNPJ da empresa cujo certificado será usado na consulta.",
                  "disabled": false
                },
                {
                  "key": "uf",
                  "value": "{{uf}}",
                  "description": "Sigla do estado da SEFAZ que você quer consultar (normalmente a UF da empresa).",
                  "disabled": false
                },
                {
                  "key": "ambiente",
                  "value": "{{ambiente}}",
                  "description": "Ambiente consultado. Padrão `homologacao`.",
                  "disabled": true
                }
              ]
            },
            "description": "Pergunta à SEFAZ da UF se o serviço de CT-e está funcionando. Útil antes de emitir em\nlote ou para mostrar um aviso na sua tela. Usamos o certificado da empresa para perguntar,\npor isso o `cnpjEmitente` é obrigatório.\n"
          },
          "response": []
        }
      ]
    },
    {
      "name": "MDF-e",
      "item": [
        {
          "name": "Emitir MDF-e",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/mdfe",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "mdfe"
              ]
            },
            "description": "Envia um MDF-e para autorização na SEFAZ com os dados da viagem: de onde sai, para onde vai,\no veículo, os motoristas e os CT-e da carga. A resposta só confirma que recebemos; o\nresultado (autorizado ou rejeitado) chega depois pelo webhook ou consultando o MDF-e.\n\n**Não duplica:** mandou de novo o mesmo `idIntegracao` com o mesmo corpo? Devolvemos o\nMDF-e que já existe (`200`). Se o anterior foi **rejeitado**, o mesmo `idIntegracao` com o\ncorpo corrigido **reenvia** com os dados novos (`200`, mesmo `id`). Em qualquer outra\nsituação, corpo diferente com o mesmo `idIntegracao` responde `409`.\n\nAntes de emitir, confira se o veículo não tem MDF-e aberto (`GET /mdfe/nao-encerrados`).\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"idIntegracao\": \"viagem-2087\",\n  \"cnpjEmitente\": \"21664333000195\",\n  \"ambiente\": \"homologacao\",\n  \"serie\": \"1\",\n  \"ufInicio\": \"SP\",\n  \"ufFim\": \"PR\",\n  \"percurso\": [],\n  \"carregamento\": [\n    {\n      \"codigoIbge\": \"3550308\"\n    }\n  ],\n  \"descarregamento\": [\n    {\n      \"codigoIbge\": \"4106902\",\n      \"chavesCte\": [\n        \"35261021664333000195570010000012341000012345\"\n      ]\n    }\n  ],\n  \"rodoviario\": {\n    \"rntrc\": \"12345678\",\n    \"veiculo\": {\n      \"placa\": \"ABC1D23\",\n      \"uf\": \"SP\",\n      \"tipoRodado\": \"01\",\n      \"tipoCarroceria\": \"02\",\n      \"tara\": 8500,\n      \"capacidadeKg\": 23000\n    },\n    \"condutores\": [\n      {\n        \"nome\": \"MOTORISTA EXEMPLO\",\n        \"cpf\": \"12345678909\"\n      }\n    ],\n    \"ciot\": {\n      \"numero\": \"123456789012\",\n      \"cpfCnpj\": \"21664333000195\"\n    }\n  },\n  \"carga\": {\n    \"valor\": 15800,\n    \"unidade\": \"01\",\n    \"quantidade\": 1250.5\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Consultar MDF-e",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/mdfe/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "mdfe",
                {
                  "type": "variable",
                  "value": "id"
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do MDF-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Mostra a situação atual do MDF-e (`status`), a chave de acesso, o protocolo e a última\nresposta da SEFAZ. Use para acompanhar o MDF-e se você não usa webhook.\n"
          },
          "response": []
        },
        {
          "name": "Baixar XML do MDF-e",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "If-None-Match",
                "value": "",
                "description": "O `ETag` da última vez que você baixou. Se nada mudou, a resposta é `304`, sem corpo.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/mdfe/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "mdfe",
                {
                  "type": "variable",
                  "value": "id"
                },
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do MDF-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Baixa o XML do MDF-e autorizado, com o protocolo da SEFAZ. Antes da autorização responde `409`.\n"
          },
          "response": []
        },
        {
          "name": "Baixar DAMDFE em PDF",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "If-None-Match",
                "value": "",
                "description": "O `ETag` da última vez que você baixou. Se nada mudou, a resposta é `304`, sem corpo.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/mdfe/:id/damdfe",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "mdfe",
                {
                  "type": "variable",
                  "value": "id"
                },
                "damdfe"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do MDF-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Baixa o **DAMDFE** (o PDF do MDF-e, que o motorista leva na viagem). É gerado na hora, a\npartir do XML autorizado.\n\n**Em breve:** enquanto não estiver disponível, esta rota responde `501`. Gere o PDF a partir\ndo XML (`GET /mdfe/{id}/xml`) no seu sistema.\n"
          },
          "response": []
        },
        {
          "name": "Reenviar MDF-e com erro",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/mdfe/:id/reprocessamento",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "mdfe",
                {
                  "type": "variable",
                  "value": "id"
                },
                "reprocessamento"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do MDF-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Manda de novo para a SEFAZ um MDF-e que ficou com `status` **erro** (SEFAZ fora do ar,\ntempo esgotado) ou **rejeitado**, sem mudar nenhum dado. Não tem corpo.\n\nPara **corrigir dados** de um MDF-e rejeitado, use `POST /mdfe` com o mesmo `idIntegracao`\ne o corpo corrigido.\n"
          },
          "response": []
        },
        {
          "name": "Conferir MDF-e na SEFAZ",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/mdfe/:id/situacao-sefaz",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "mdfe",
                {
                  "type": "variable",
                  "value": "id"
                },
                "situacao-sefaz"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do MDF-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Pergunta à SEFAZ, pela chave de acesso, qual é a situação do MDF-e lá, e atualiza o nosso\nregistro com a resposta. Use quando desconfiar que o `status` aqui está diferente do da\nSEFAZ — por exemplo, depois de uma queda de conexão.\n"
          },
          "response": []
        },
        {
          "name": "Encerrar MDF-e",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/mdfe/:id/encerramento",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "mdfe",
                {
                  "type": "variable",
                  "value": "id"
                },
                "encerramento"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do MDF-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Avisa a SEFAZ que a viagem terminou. **Faça isso sempre** no fim da viagem: MDF-e aberto\nimpede emitir o próximo MDF-e do mesmo veículo (a SEFAZ rejeita com os códigos 611, 662,\n462 ou 686).\n\nSó MDF-e **autorizado** pode ser encerrado. Se a SEFAZ aceitar, o MDF-e volta `encerrado`;\nse recusar, continua `autorizado` e o motivo está em `sefaz.mensagem`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"codigoIbge\": \"4106902\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Cancelar MDF-e",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/mdfe/:id/cancelamento",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "mdfe",
                {
                  "type": "variable",
                  "value": "id"
                },
                "cancelamento"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{id}}",
                  "description": "Id do MDF-e, devolvido no campo `id` quando você emitiu."
                }
              ]
            },
            "description": "Pede à SEFAZ o cancelamento de um MDF-e **autorizado**, quando a viagem não aconteceu.\nRegras da SEFAZ:\n\n- só é aceito em até **24 horas** depois da autorização;\n- MDF-e já encerrado não pode ser cancelado;\n- a justificativa precisa ter de 15 a 255 caracteres.\n\nSe a viagem aconteceu, o certo é **encerrar**, não cancelar. Se a SEFAZ aceitar, o MDF-e\nvolta `cancelado`; se recusar, continua `autorizado` e o motivo está em `sefaz.mensagem`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"justificativa\": \"Viagem cancelada pelo cliente antes da saída.\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Listar MDF-e não encerrados",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/mdfe/nao-encerrados?cnpjEmitente={{cnpjEmitente}}&ambiente={{ambiente}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "mdfe",
                "nao-encerrados"
              ],
              "query": [
                {
                  "key": "cnpjEmitente",
                  "value": "{{cnpjEmitente}}",
                  "description": "CNPJ da empresa.",
                  "disabled": false
                },
                {
                  "key": "ambiente",
                  "value": "{{ambiente}}",
                  "description": "Ambiente consultado. Padrão `producao`.",
                  "disabled": true
                }
              ]
            },
            "description": "Pergunta à SEFAZ quais MDF-e da empresa ainda estão abertos. A lista vem **da SEFAZ**, então\ninclui MDF-e emitidos por outros sistemas. Use antes de emitir um MDF-e novo para não ser\nrejeitado por manifesto aberto, e encerre o que estiver pendente.\n"
          },
          "response": []
        },
        {
          "name": "Consultar se a SEFAZ está no ar",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/mdfe/status-sefaz?cnpjEmitente={{cnpjEmitente}}&uf={{uf}}&ambiente={{ambiente}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "mdfe",
                "status-sefaz"
              ],
              "query": [
                {
                  "key": "cnpjEmitente",
                  "value": "{{cnpjEmitente}}",
                  "description": "CNPJ da empresa cujo certificado será usado na consulta.",
                  "disabled": false
                },
                {
                  "key": "uf",
                  "value": "{{uf}}",
                  "description": "Sigla do estado da empresa. Padrão = a UF do cadastro da empresa.",
                  "disabled": true
                },
                {
                  "key": "ambiente",
                  "value": "{{ambiente}}",
                  "description": "Ambiente consultado. Padrão `homologacao`.",
                  "disabled": true
                }
              ]
            },
            "description": "Pergunta à SEFAZ se o serviço de MDF-e está funcionando. Usamos o certificado da empresa\npara perguntar, por isso o `cnpjEmitente` é obrigatório.\n"
          },
          "response": []
        }
      ]
    },
    {
      "name": "NF-e",
      "item": [
        {
          "name": "Listar NF-e",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/nfe?emitidaDe={{emitidaDe}}&emitidaAte={{emitidaAte}}&situacao={{situacao}}&limite={{limite}}&cursor={{cursor}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "nfe"
              ],
              "query": [
                {
                  "key": "emitidaDe",
                  "value": "{{emitidaDe}}",
                  "description": "Primeiro dia do período de emissão.",
                  "disabled": false
                },
                {
                  "key": "emitidaAte",
                  "value": "{{emitidaAte}}",
                  "description": "Último dia do período de emissão (inclusive), no máximo 366 dias depois de `emitidaDe`.",
                  "disabled": false
                },
                {
                  "key": "situacao",
                  "value": "{{situacao}}",
                  "description": "Traz só as notas nesta situação. Sem o filtro, vêm as autorizadas, as canceladas e as denegadas.",
                  "disabled": true
                },
                {
                  "key": "limite",
                  "value": "{{limite}}",
                  "description": "Quantas notas vêm por página, de 1 a 100. Sem o parâmetro, vêm 50.",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "{{cursor}}",
                  "description": "Para pegar a próxima página, repasse o `paginacao.proximoCursor` da resposta anterior.",
                  "disabled": true
                }
              ]
            },
            "description": "Lista as NF-e da empresa do token no **período de emissão** (`emitidaDe` e `emitidaAte`, até\n366 dias). Para saber de cancelamentos, consulte de novo os períodos recentes: a `situacao`\nda nota muda para `cancelada`. Siga o `proximoCursor` até ele vir nulo.\n"
          },
          "response": []
        },
        {
          "name": "Consultar uma NF-e",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/nfe/:chaveAcesso",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "nfe",
                {
                  "type": "variable",
                  "value": "chaveAcesso"
                }
              ],
              "variable": [
                {
                  "key": "chaveAcesso",
                  "value": "{{chaveAcesso}}",
                  "description": "A chave de acesso da NF-e, 44 posições, sem espaços."
                }
              ]
            },
            "description": "O resumo da nota pela chave de acesso. Chave de outra empresa responde como inexistente (`404`)."
          },
          "response": []
        },
        {
          "name": "Baixar o XML da NF-e",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/nfe/:chaveAcesso/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "nfe",
                {
                  "type": "variable",
                  "value": "chaveAcesso"
                },
                "xml"
              ],
              "variable": [
                {
                  "key": "chaveAcesso",
                  "value": "{{chaveAcesso}}",
                  "description": "A chave de acesso da NF-e, 44 posições, sem espaços."
                }
              ]
            },
            "description": "O XML da nota com o protocolo de autorização (`nfeProc`), exatamente como foi guardado. Nota\ncancelada continua com o XML da autorização; a situação está no resumo.\n"
          },
          "response": []
        }
      ]
    }
  ]
}
