1. Inicio
  2. Documentos
  3. NS BPe
  4. Primeiros Passos

Primeiros Passos

O que é a NS BP-e API

A NS BP-e API é uma aplicação de integração por onde outras aplicações podem realizar a emissão e gerenciamento de BP-es.

Diferentemente das aplicações tradicionais, onde os dados dos documentos são enviados para a aplicação de integração através de arquivos TXTs ou banco de dados, com a NS BP-e API os dados são enviados e recebidos através de requisições HTTPs que podem ser facilmente implementadas em qualquer linguagem de programação.

Veja em nossos exemplos de integração como implementar a comunicação.

Uma API é uma aplicação que possui métodos consumíveis por outras aplicações, ou seja, é uma aplicação que possui métodos que podem ser acessados diretamente através do código de outras aplicações.

Dá-se o nome de Consumidora ou Cliente à aplicação que consome os métodos de uma API.

Informações enviadas e recebidas nas requisições

Dados de envio

Os dados de envio variam de acordo com o método que está sendo consumido. Veja a documentação de consumo da API para informações detalhadas de quais dados são enviados para cada método.

O formato de dados enviados é JSON, mas em alguns casos é possível enviar os dados também em XML ou TXT.

Dados de recebidos

Toda requisição receberá como retorno algumas informações que podem ser classificadas em dois grupos: Status HTTP e Dados de Retorno.

Status HTTP

O status HTTP é enviado no cabeçalho da resposta e informa se a requisição foi realizada com sucesso ou se algum erro ocorreu. Este status é formado por um código e uma mensagem.

Por exemplo, se a requisição HTTP for realizada para o endereço errado o status HTTP terá código 404 e mensagem Não encontrado (Not Found). Se a requisição HTTP for realizada corretamente o status HTTP terá código 200 e mensagem OK.

As informações do Status HTTP não devem ser consideradas como dados de resposta do método consumido. Estas informações informam apenas se a requisição HTTP foi realizada com sucesso ou não.

Veja na tabela abaixo os códigos de Status HTTP que podem ser retornados pela API:

CódigoDescrição
Quando OcorrePossui dados de retorno
200OkSim
400Requisição mal formada Quando a requisição está sendo realizada com dados montados de forma erradaNão
401Não autorizadoQuando a aplicação consumidora tenta acessar algum recurso não autorizadoNão
403Acesso negadoQuando o token de acesso informado é inválidoNão
404Não encontradoQuando a URL do método é inválida ou a informação requisitada não é encontradaSim (mas pode não conter caso o erro seja URL não existente)
501Erro interno da APIQuando algum erro interno não previsto ocorreSim
Dados de Retorno

Os dados de retorno são enviados no corpo da resposta e possuem as informações de resposta do método consumido. Estes dados variam de acordo com cada método consumido.

Dependendo de qual for o Status HTTP retornado, estas informações podem não existir. Por exemplo, se o status HTTP for 400 (Bad Request), o retorno conterá apenas o Status HTTP  e não terá Dados de retorno. Por este motivo, é importante que a sua aplicação sempre valide o Status HTTP recebido antes de utilizar as informações dos Dados de Retorno para garantir que os mesmos existem.

Código e descrição do Retorno

Os dados de retorno possuem dois campos que indicam a situação do processamento realizado chamados status e motivo. Além destes campos, outros campos também estarão presentes e serão específicos para cada método da API. Veja a documentação de consumo da API para visualizar os campos retornados por cada método.

Os campos status e motivo informam o código de Status do Processamento e descrição literal do status de processamento, respectivamente.

Status do Processamento é diferente do Status HTTP visto acima. Por exemplo, o consumo de um determinado método pode retorno Status HTTP 200, que indica que a comunicação com a API aconteceu de forma correta, e Status de Processamento -400, que indica que algum campo obrigatório não foi informado.

A tabela abaixo mostra os códigos de Status de Processamento que são comuns a todos os métodos. Demais códigos são específicos de cada método e estão documentados na página de consumo da API.

Código Descrição
-400Campos obrigatórios não preenchidas
-500 ou -999Erro interno da API
200Ok
-401Usuário sem permissões para gerenciar documentos do contribuinte
Layout dos dados de integração

O layout padrão de integração para troca de informações é o JSON. No entanto, no método de emissão de BP-e é possível realizar o envio dos dados  também em XML considerando o mesmo layout definidos pelo Manual de Orientação do Contribuinte da Sefaz.

O JSON de integração deve ser montado seguindo o mesmo layout do XML de emissão.

Exemplo de geração de JSON

O quadro abaixo mostra um trecho do XML montado de acordo com o layout da Sefaz:

<infPassagem>
    <cLocOrig>4314902</cLocOrig>
    <xLocOrig>PORTO ALEGRE</xLocOrig>
    <cLocDest>PR</cLocDest>
    <xLocDest>CURITIBA</xLocDest>
    <dhEmb>2018-01-31T15:00:00-02:00</dhEmb>
    <infPassageiro>
        <xNome>John Doe</xNome>
        <CPF>12345678901</CPF>
        <tpDoc>1</tpDoc>
        <nDoc>1234567890</nDoc>
    </infPassageiro>
</infPassagem>

No quadro abaixo é possível ver o JSON montado com as mesmas informações acima:

{
    "infPassagem": {
        "cLocOrig": "4314902",
        "xLocOrig": "PORTO ALEGRE",
        "cLocDest": "PR",
        "xLocDest": "CURITIBA",
        "dhEmb": "2018-01-31T15:00:00-02:00",
        "infPassageiro": {
            "CPF": "12345678901",
            "nDoc": "1234567890",
            "tpDoc": "1",
            "xNome": "John Doe"
        }
    }
}

Articles

Como podemos ajudar?