{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"3ca60313-3fc3-441d-b308-1c0f03ff87db","name":"API - Maestro Homologação","description":"# 🔐 API Oficina Inteligente\n\n**Segurança:** Todas as requisições para esta API devem ser realizadas via HTTPS. Conexões não seguras (HTTP) serão recusadas.\n\n---\n\n## 📜 Regras para Utilização deste Serviço\n\nPara garantir a estabilidade e o bom desempenho da API para todos os usuários, observe as seguintes regras:\n\n### 1\\. Janela de Consumo Permitida\n\n- A API de Integração deve ser consumida obrigatóriamente entre **19:00 PM e 07:00 AM** (horário de Brasília)\n    \n- **Frequência:** Recomenda-se o consumo uma vez por dia dentro desta janela\n    \n\n### 2\\. Limites de Uso e Desativação Automática\n\n- O sistema monitora o volume de requisições por token\n    \n- Consumo excessivo originado de um token específico poderá levar à desativação automática temporária da integração para esse token, a fim de preservar a integridade do serviço\n    \n\n### 3\\. Obtenção e Custo do TOKEN de Acesso\n\n- O TOKEN de acesso é essencial para utilizar a API\n    \n- Ele será fornecido após a autorização formal da integração pelo cliente\n    \n- A utilização destas API (Maestro) possui um custo mensal de R$ 49,90\n    \n\n---\n\n## 🌐 URL Base\n\nAs requisições devem ser feitas via HTTPS para:\n\n```\n{{url}}\n\n ```\n\n⚠️ **Importante:** Apenas conexões seguras (HTTPS) são aceitas.\n\n---\n\n## 🚀 Guia Rápido: Como Começar\n\n### 1\\. Autenticação (Login)\n\nPara acessar a API, você precisa primeiro fazer login para obter um token JWT.\n\n#### Endpoint de Login\n\n```\nPOST https://api.oiapi.com.br/api/v2/parceiro/logar\n\n ```\n\n#### Headers Obrigatórios\n\n``` http\nContent-Type: application/json\nX-Cliente-ID: {client_id_fornecido_pela_oficina_inteligente}\nAuthorization: Basic {base64(username:secret)}\n\n ```\n\n#### Detalhamento dos Headers\n\n**X-Cliente-ID:**\n\n- Valor que será fornecido pela Oficina Inteligente\n    \n- Identifica exclusivamente seu cliente/parceiro\n    \n\n**Authorization Basic:**\n\n- Formato: `Basic {credentials_base64}`\n    \n- As credenciais devem ser codificadas em Base64 no formato: `username:secret`\n    \n- Tanto o `username` quanto o `secret` serão fornecidos pela Oficina Inteligente junto com o Client ID\n    \n\n#### Exemplo de Requisição\n\n``` http\nPOST https://api.oiapi.com.br/api/v2/parceiro/logar\nContent-Type: application/json\nX-Cliente-ID: seu_client_id_aqui\nAuthorization: Basic dXNlcm5hbWU6c2VjcmV0\n\n ```\n\n#### Resposta de Sucesso\n\n``` json\n{\n  \"success\": true,\n  \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  \"expires_in\": 28800,\n  \"token_type\": \"Bearer\"\n}\n\n ```\n\n#### Resposta de Erro\n\n``` json\n{\n  \"success\": false,\n  \"message\": \"Credenciais inválidas\",\n  \"error_code\": \"INVALID_CREDENTIALS\"\n}\n\n ```\n\n### 2\\. Armazenamento do Token\n\n- Guarde o token JWT recebido de forma segura\n    \n- Ele será utilizado para autenticar todas as próximas requisições\n    \n- **Validade:** O Token expira em **8 horas** e precisa ser renovado\n    \n- Recomenda-se implementar um sistema de renovação automática antes da expiração\n    \n\n### 3\\. Realizando Requisições Autenticadas\n\nPara **todos os demais endpoints da API** (exceto o login), você deve incluir o token JWT no cabeçalho (header) `Authorization` da sua requisição usando o tipo **Bearer Token**.\n\n#### Formato do Header\n\n``` http\nAuthorization: Bearer {seu_token_jwt_aqui}\n\n ```\n\n#### Exemplo de Requisição Autenticada\n\n``` http\nGET https://api.oiapi.com.br/api/v2/exemplo/endpoint\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\nContent-Type: application/json\n\n ```\n\n⚠️ **Importante:** O token deve ser enviado em **todas as requisições**, exceto na requisição de login. Sem o token, você receberá erro 401 (Unauthorized).\n\n---\n\n## 🔧 Fluxo Completo de Autenticação\n\n### Passo a Passo\n\n1. **Receba as Credenciais:**\n    \n    - Client ID (X-Cliente-ID)\n        \n    - Username e Secret (para Authorization Basic)\n        \n2. **Codifique as Credenciais:**\n    \n    ``` csharp\n                     // Exemplo em C#\n                     var credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes($\"{username}:{secret}\"));\n    \n     ```\n    \n3. **Faça a Requisição de Login:**\n    \n    ``` csharp\n                     // Configurar headers\n                     httpClient.DefaultRequestHeaders.Add(\"X-Cliente-ID\", clientId);\n                     httpClient.DefaultRequestHeaders.Add(\"Authorization\", $\"Basic {credentials}\");\n                     httpClient.DefaultRequestHeaders.Add(\"Content-Type\", \"application/json\");\n                     // Fazer requisição\n                     var response = await httpClient.PostAsync(\"https://api.oiapi.com.br/api/v2/parceiro/logar\", null);\n    \n     ```\n    \n4. **Armazene o Token:**\n    \n    ``` csharp\n                     if (response.IsSuccessStatusCode)\n                     {\n                         var jsonResponse = await response.Content.ReadAsStringAsync();\n                         var loginResponse = JsonConvert.DeserializeObject<LoginResponse>(jsonResponse);\n                         var token = loginResponse.Token;\n                     }\n    \n     ```\n    \n5. **Use o Token Bearer em Todas as Demais Requisições:**\n    \n    ``` csharp\n                     // Para qualquer outro endpoint da API\n                     httpClient.DefaultRequestHeaders.Clear();\n                     httpClient.DefaultRequestHeaders.Add(\"Authorization\", $\"Bearer {token}\"); // Bearer Token obrigatório\n                     httpClient.DefaultRequestHeaders.Add(\"Content-Type\", \"application/json\");\n                     var apiResponse = await httpClient.GetAsync(\"https://api.oiapi.com.br/api/v2/outro/endpoint\");    \n    \n     ```\n    \n\n**📝 Regra Importante:** O token JWT deve ser enviado como **Bearer Token** no header `Authorization` em **100% das requisições** para qualquer endpoint da API, exceto apenas na requisição de login inicial.\n\n## Exemplos de Retorno com Sucesso\n\n### Listar entradas\n\n```\nGET https://api.oiapi.com.br/api/v4/maestro/empresa/997/entradas?periodoDe=2025-01-01&   periodoAte=2025-01-10\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\nContent-Type: application/json\nx-cliente-id: Client ID (Oficina Inteligente Forneceu)\n\n ```\n\n``` json\nResponse:\n{\n    \"codigoStatus\": 200,\n    \"sucesso\": true,\n    \"dados\": [\n        {\n            \"codigoDaEmpresa\": 997,\n            \"codigoDaEntrada\": 1782,\n            \"data\": \"2025-01-08T00:00:00\",\n            \"nomeDoFornecedor\": \"Nome do Fornecedor Teste\",\n            \"cpfcnpj\": \"99999999999999\",\n            \"numeroDoDocumento\": \"409836\",\n            \"chaveDeAcesso\": \"99999999999999999999999999999999999999999999\",\n            \"numeroDoPedidoDeCompra\": 0,\n            \"item\": [\n                {\n                    \"codigoDaEmpresa\": 997,\n                    \"codigoDaEntrada\": 1782,\n                    \"data\": \"2024-07-08T00:00:00\",\n                    \"codigoDoItem\": \"850          \",\n                    \"codigoDoFabricante\": \"08233-M99-024\",\n                    \"descricaoDoItem\": \"oleo lubriicante\",\n                    \"marcaDoItem\": null,\n                    \"quantidadeDoItem\": 12,\n                    \"valorUnitarioDoItem\": 78.04,\n                    \"valorTotalDoItem\": 936.52\n                }\n            ]\n        },\n        {\n            \"codigoDaEmpresa\": 997,\n            \"codigoDaEntrada\": 1784,\n            \"data\": \"2024-07-08T00:00:00\",\n            \"nomeDoFornecedor\": \"Segundo Fornecedor GO\",\n            \"cpfcnpj\": \"88888888000188\",\n            \"numeroDoDocumento\": \"37282\",\n            \"chaveDeAcesso\": \"88888888888888888888888888888888888888888888\",\n            \"numeroDoPedidoDeCompra\": 0,\n            \"item\": [\n                {\n                    \"codigoDaEmpresa\": 997,\n                    \"codigoDaEntrada\": 1784,\n                    \"data\": \"2024-07-08T00:00:00\",\n                    \"codigoDoItem\": \"265          \",\n                    \"codigoDoFabricante\": \"36481\",\n                    \"descricaoDoItem\": \"BENGALA INTERNA \\\\ YBR125 K 2000 A 2008/YBR125 E 2000 A 2008/YBR125 ED 2000 A 2008/FACTOR125 K 2009 A 2016/FACTOR125 E\",\n                    \"marcaDoItem\": null,\n                    \"quantidadeDoItem\": 2,\n                    \"valorUnitarioDoItem\": 52.45,\n                    \"valorTotalDoItem\": 104.9\n                },\n                {\n                    \"codigoDaEmpresa\": 997,\n                    \"codigoDaEntrada\": 1784,\n                    \"data\": \"2024-07-08T00:00:00\",\n                    \"codigoDoItem\": \"266          \",\n                    \"codigoDoFabricante\": \"44301\",\n                    \"descricaoDoItem\": \"PARALAMA DIANTEIRO PRETO \\\\ FAZER150 2014 A 2015 E 2018 A 2019/FACTOR150 ED 2016 A 2022/FACTOR125i 2017 A 2022(E)\",\n                    \"marcaDoItem\": null,\n                    \"quantidadeDoItem\": 1,\n                    \"valorUnitarioDoItem\": 67.41,\n                    \"valorTotalDoItem\": 67.41\n                },\n                {\n                    \"codigoDaEmpresa\": 997,\n                    \"codigoDaEntrada\": 1784,\n                    \"data\": \"2024-07-08T00:00:00\",\n                    \"codigoDoItem\": \"267          \",\n                    \"codigoDoFabricante\": \"26590\",\n                    \"descricaoDoItem\": \"PROTETOR DO ESCAPE PRETO \\\\ FAZER150 ED 2014 A 2015/FAZER150 SED 2014 A 2017/FAZER150 UBS 2018 A 2023/FACTOR150 E 2016\",\n                    \"marcaDoItem\": null,\n                    \"quantidadeDoItem\": 1,\n                    \"valorUnitarioDoItem\": 60.38,\n                    \"valorTotalDoItem\": 60.38\n                },\n                {\n                    \"codigoDaEmpresa\": 997,\n                    \"codigoDaEntrada\": 1784,\n                    \"data\": \"2024-07-08T00:00:00\",\n                    \"codigoDoItem\": \"268          \",\n                    \"codigoDoFabricante\": \"48996\",\n                    \"descricaoDoItem\": \"PROTETOR DO TANQUE DE COMBUSTIVEL PRETO (SEM ADESIVO) \\\\ FACTOR125i 2017 A 2022/FACTOR150 2016 A 2022(E)\",\n                    \"marcaDoItem\": null,\n                    \"quantidadeDoItem\": 1,\n                    \"valorUnitarioDoItem\": 97.74,\n                    \"valorTotalDoItem\": 97.74\n                }\n            ]\n        }\n    ]\n}\n\n ```\n\n### Lista de Ordem de Serviços\n\n```\nRequest:\nGET https://api.oiapi.com.br/api/v4/maestro/empresa/997/ordem-de-servicos?periodoDe=2025-01-10&periodoAte=2025-01-20\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\nContent-Type: application/json\nx-cliente-id: Client ID (Oficina Inteligente Forneceu)\n\n ```\n\n``` json\nResponse:\n{\n    \"codigoStatus\": 200,\n    \"sucesso\": true,\n    \"dados\": [        \n        {\n            \"codigoDaEmpresa\": 997,\n            \"data\": \"2024-12-10T00:00:00\",\n            \"codigo\": 35934,\n            \"cpfcnpj\": null,    //string\n            \"nomeDoCliente\": \"LARBAC JEFERSON AVLIS\",\n            \"celular\": \"(11) 99633-0686\",\n            \"telefone1\": null,  //string\n            \"telefone2\": null,  //string\n            \"telefone3\": null,  //string\n            \"telefone4\": null,  //string\n            \"email\": \"teste@fom.com\",\n            \"sexo\": null,  //string\n            \"fisicaJuridica\": \"F\",\n            \"dataDeCadastroDoCliente\": \"2016-11-08T13:31:00\",\n            \"logradouro\": \"Rua Luanda\",\n            \"numero\": \"18\",\n            \"complemento\": null,    //string\n            \"bairro\": \"Parque Capuava\",\n            \"nomeDaCidade\": \"SANTO ANDRE\",\n            \"siglaDoEstado\": \"SP\",\n            \"cep\": \"09271140\",\n            \"dataDeNascimento\": \"1994-01-22T00:00:00\",\n            \"placaDoVeiculo\": \"JUN5236\",\n            \"hodometroDoVeiculo\": 25623,\n            \"motorizacao\": null,    //string\n            \"montadora\": null,      //string\n            \"anoDoVeiculo\": 2024,\n            \"NomeDoVeiculo\": null,  //string            \n            \"valor\": 652.396,\n            \"situacao\": \"Fechada\",\n            \"codigoDoResponsavel\": 0,\n            \"nomeDoResponsavel\": \"BIANCA OLIVEIRA DA SILVA\",\n            \"pesquisa\": \"Cliente\",\n            \"codigoDoTipoOS\": 1,\n            \"descricaoTipoOS\": \"Venda\",\n            \"dataDoFaturamento\": \"2025-01-20T00:00:00\",\n            \"dataDeInicializacao\": \"2024-12-10T00:10:00\",\n            \"dataDeFinalizacao\": \"2025-01-22T09:48:00\",\n            \"itens\": [\n                {\n                    \"codigo\": \"1213\",\n                    \"descricao\": \"FILTRO DE AR\",\n                    \"quantidade\": 1,\n                    \"valorTotal\": 161.16,\n                    \"valorUnitario\": 161.16,\n                    \"CodigoDoExecutor\": null, // int?\n                    \"NomeDoExecutor\": null,   // string      \n                    \"CodigoGrupoDeProduto\": 9,\n                    \"DescricaoDoGrupo\":\"CARBAGEM\",\n                    \"NCM\": \"87089200\"\n                },\n                {\n                    \"codigo\": \"15W40\",\n                    \"descricao\": \"HAVOLINE SAE\",\n                    \"quantidade\": 5,\n                    \"valorTotal\": 491.23,\n                    \"valorUnitario\": 98.25,\n                    \"CodigoDoExecutor\": null, // int?\n                    \"NomeDoExecutor\": null,  //string              \n                    \"CodigoGrupoDeProduto\": 1200,\n                    \"DescricaoDoGrupo\": \"ÓLEO\",\n                    \"NCM\": \"87089990\"\n                }\n            ],\n            \"pagamentos\": []\n        },               \n        {\n            \"codigoDaEmpresa\": 997,\n            \"data\": \"2025-01-29T00:00:00\",\n            \"codigo\": 35946,\n            \"cpfcnpj\": null,\n            \"nomeDoCliente\": \"SERGIO\",\n            \"celular\": \"(11) 99720-7945\",\n            \"telefone1\": \"99720-7945\",\n            \"telefone2\": null,  //string\n            \"telefone3\": null,  //string\n            \"telefone4\": null,  //string\n            \"email\": null,  //string\n            \"sexo\": null,   //string\n            \"fisicaJuridica\": \"J\",\n            \"dataDeCadastroDoCliente\": \"2022-03-16T19:05:00\",\n            \"logradouro\": null, //string\n            \"numero\": null, //string\n            \"complemento\": null,    //string\n            \"bairro\": null, //string\n            \"nomeDaCidade\": null,   //string\n            \"siglaDoEstado\": null,  //string\n            \"cep\": null,    //string\n            \"dataDeNascimento\": null, //datetime?\n            \"placaDoVeiculo\": \"SVQ3F37\",\n            \"motorizacao\": \"DRIVE 1.3\",\n            \"anoDoVeiculo\": 2025,            \n            \"valor\": 5016.5,\n            \"situacao\": \"Fechada\",\n            \"codigoDoResponsavel\": 0,\n            \"nomeDoResponsavel\": \"ADAILSON\",\n            \"pesquisa\": \"Cliente\",\n            \"codigoDoTipoOS\": 1,\n            \"descricaoTipoOS\": \"Venda\",\n            \"dataDoFaturamento\": \"2025-01-29T00:00:00\",\n            \"dataDeInicializacao\": \"2025-01-29T10:36:00\",\n            \"dataDeFinalizacao\": \"2025-01-29T11:18:00\",\n            \"itens\": [\n                {\n                    \"codigo\": \"07340\",\n                    \"descricao\": \"ANEIS DO MOTOR FORD 1.0 12V 3CC STD\",\n                    \"quantidade\": 1,\n                    \"valorTotal\": 266.5,\n                    \"valorUnitario\": 266.50,\n                    \"CodigoDoExecutor\":null, //int?\n                    \"NomeDoExecutor\": null,  //string              \n                    \"CodigoGrupoDeProduto\": 1276,\n                    \"DescricaoDoGrupo\": \"TESTE - MANUTENÇÃO DE PRODUTOS\",\n                    \"NCM\": \"90183212\"\n                },\n                {\n                    \"codigo\": \"850255657398\",\n                    \"descricao\": \"teste\",\n                    \"quantidade\": 1,\n                    \"valorTotal\": 4750,\n                    \"valorUnitario\": 4750.00,\n                    \"CodigoDoExecutor\":null, //int?\n                    \"NomeDoExecutor\": null,  //string          \n                    \"CodigoGrupoDeProduto\": 1075,\n                    \"DescricaoDoGrupo\":\"ACESSÓRIOS\",\n                    \"NCM\": \"87088000\"\n                },\n                {\n                    \"codigo\": \"433\",\n                    \"descricao\": \"balanceamento\",\n                    \"quantidade\": 2,\n                    \"valorTotal\": 0,\n                    \"valorUnitario\": 0.00,\n                    \"CodigoDoExecutor\":null, //int?\n                    \"NomeDoExecutor\": null,  //string            \n                    \"CodigoGrupoDeProduto\": 1046,\n                    \"DescricaoDoGrupo\":\"MÃO DE OBRA - TESTE\",\n                    \"NCM\": \"99\"\n                }\n            ],\n            \"pagamentos\": [\n                {\n                    \"codigo\": 189,\n                    \"descricao\": \"abc teste\",\n                    \"valor\": 5016.50\n                }\n            ]\n        },\n        ...\n    ]\n}\n\n ```\n\n### LIsta de Produtos\n\n```\nRequest:\nGET https://api.oiapi.com.br/api/v4/maestro/empresa/997/produtos\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\nContent-Type: application/json\nx-cliente-id: Client ID (Oficina Inteligente Forneceu)\n\n ```\n\n``` json\nResponse:\n{\n    \"codigoStatus\": 200,\n    \"sucesso\": true,\n    \"dados\": [\n        {\n            \"codigo\": \"2601\",\n            \"descricao\": \"barra axial\",\n            \"codigoDoGrupoDeProduto\": 1063,\n            \"descricaoDoGrupo\": \"AMORTECEDOR\",\n            \"codigoDaAreaDeProduto\": 73,\n            \"descricaoDaArea\": \"AMORTECEDOR TESTE1\",\n            \"unidade\": \"256 \",\n            \"estoque\": 0,\n            \"ideal\": 0,\n            \"precoDeVenda\": 0.00,\n            \"precoDeCusto\": 18.15,\n            \"precoDeCompra\": 240.00,\n            \"aplicacao\": \"suspensão\",\n            \"referencia\": \"2601\",\n            \"codigoDeBarra\": \"260100101001\",\n            \"ncm\": \"87088000\",\n            \"ativo\": true,\n            \"CodigoDaMarca\": \"17\",\n            \"DescricaoDaMarca\": \"BOSCH\"\n        },\n        {\n            \"codigo\": \"10141600091\",\n            \"descricao\": \"1\",\n            \"codigoDoGrupoDeProduto\": 1014,\n            \"descricaoDoGrupo\": \"M.O. RÁDIO\",\n            \"codigoDaAreaDeProduto\": 5,\n            \"descricaoDaArea\": \"SERVICO\",\n            \"unidade\": \"UN\",\n            \"estoque\": 0,\n            \"ideal\": 20,\n            \"precoDeVenda\": 0.00,\n            \"precoDeCusto\": 18.15,\n            \"precoDeCompra\": 126.00,\n            \"aplicacao\": \"PLACA ABC123\",\n            \"referencia\": \"BAT651\",\n            \"codigoDeBarra\": \"luaninha1234\",\n            \"ncm\": \"99\",\n            \"ativo\": false,\n            \"CodigoDaMarca\": \"38\",\n            \"DescricaoDaMarca\": \"AR\"\n        }\n        ...\n    ]\n}\n\n ```\n\n### Consulta de um Produto\n\n```\nRequest:\nGET https://api.oiapi.com.br/api/v4/maestro/empresa/997/produto/850255656624\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\nContent-Type: application/json\nx-cliente-id: Client ID (Oficina Inteligente Forneceu)\n\n ```\n\n``` json\nResponse:\n{\n    \"codigoStatus\": 200,\n    \"sucesso\": true,\n    \"dados\": {\n        \"codigo\": \"850255656624\",\n        \"descricao\": \"PN 195/50 R16 84V DZ102 L JP EV\",\n        \"codigoDoGrupoDeProduto\": 246,\n        \"descricaoDoGrupo\": \"PNEUS KM\",\n        \"codigoDaAreaDeProduto\": 24,\n        \"descricaoDaArea\": \"PNEUS\",\n        \"unidade\": \"UN  \",\n        \"estoque\": 0,\n        \"ideal\": 0,\n        \"precoDeVenda\": 0.00,\n        \"precoDeCusto\": 18.15,\n        \"precoDeCompra\": 314.40,\n        \"aplicacao\": null, //string\n        \"referencia\": \"416068\",\n        \"codigoDeBarra\": null, //string\n        \"ncm\": \"40111000\",\n        \"ativo\": true,\n        \"CodigoDaMarca\": null, //int?\n        \"DescricaoDaMarca\": null //string\n    }\n}\n\n ```\n\n### Lista de Notas Fiscais\n\n```\nRequest:\nGET https://api.oiapi.com.br/api/v4/maestro/empresa/997/notas-fiscais?periodoDe=2024-06-10&periodoAte=2024-07-10\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\nContent-Type: application/json\nx-cliente-id: Client ID (Oficina Inteligente Forneceu)\n\n ```\n\n``` json\nResponse:\n{\n    \"codigoStatus\": 200,\n    \"sucesso\": true,\n    \"dados\": [\n        {\n            \"codigo\": 19,\n            \"numeroDaNotaFiscal\": 18,\n            \"dataDeEmissao\": \"2024-06-14T00:00:00\",\n            \"cpfcnpj\": \"860.691.888-10\",\n            \"nomeDoCliente\": \"GUILHERME L CARDOSO (4)\",\n            \"telefoneSMS\": \"(11) 96648-6404\",\n            \"itens\": [\n                {\n                    \"codigoDoItem\": \"07342\",\n                    \"descricaoDoItem\": \"DV6120V-TUBO RETO ESCAPE (INOX 409 38,\",\n                    \"quantidadeDoItem\": 1,\n                    \"valorUnitarioDoItem\": 103.15,\n                    \"valorTotalDoItem\": 103.15,\n                    \"ncm\": \"87089990\"\n                },\n                {\n                    \"codigoDoItem\": \"103B\",\n                    \"descricaoDoItem\": \"103BB-BIELETA DO FOCUS\",\n                    \"quantidadeDoItem\": 1,\n                    \"valorUnitarioDoItem\": 200.00,\n                    \"valorTotalDoItem\": 200.00,\n                    \"ncm\": \"19053100\"\n                }\n            ],\n            \"duplicatas\": [\n                {\n                    \"dataDeVencimento\": \"2024-06-14T00:00:00\",\n                    \"valorDaParcela\": 303.15\n                }\n            ]\n        },\n        {\n            \"codigo\": 20,\n            \"numeroDaNotaFiscal\": 19,\n            \"dataDeEmissao\": \"2024-06-17T12:02:07.333\",\n            \"cpfcnpj\": \"50.074.390/0001-12\",\n            \"nomeDoCliente\": \"OFICINA INTELIGENTE LTDA\",\n            \"telefoneSMS\": null,\n            \"itens\": [\n                {\n                    \"codigoDoItem\": \"146\",\n                    \"descricaoDoItem\": \"TERMINAL DE DIRECAO ESQ\",\n                    \"quantidadeDoItem\": 10,\n                    \"valorUnitarioDoItem\": 10.00,\n                    \"valorTotalDoItem\": 100.00,\n                    \"ncm\": \"99\"\n                },\n                {\n                    \"codigoDoItem\": \"158\",\n                    \"descricaoDoItem\": \"teste teste teste\",\n                    \"quantidadeDoItem\": 1,\n                    \"valorUnitarioDoItem\": 1500.00,\n                    \"valorTotalDoItem\": 1500.00,\n                    \"ncm\": \"87088000\"\n                },\n                {\n                    \"codigoDoItem\": \"16584\",\n                    \"descricaoDoItem\": \"05530 PROTETIVO ROSA RADIADOR 1\",\n                    \"quantidadeDoItem\": 1,\n                    \"valorUnitarioDoItem\": 10.00,\n                    \"valorTotalDoItem\": 10.00,\n                    \"ncm\": \"87089990\"\n                }\n            ],\n            \"duplicatas\": []\n        }\n    ]\n}\n\n ```\n\n### Inclusão de Televenda\n\n``` json\nRequest:\nPOST https://api.oiapi.com.br/api/v4/maestro/empresa/997/televenda\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\nContent-Type: application/json\nx-cliente-id: Client ID (Oficina Inteligente Forneceu)\nBody:\n{\n    \"CodigoDaEmpresaOI\": 997,\n    \"CodigoDoCliente\": 1,\n    \"TelefoneDoCliente\": \"+55(11)94825-5689\",\n    \"NomeDoCliente\": \"Cliente teste\",\n    \"CodigoDoProtocolo\": 20250611451270,\n    \"CodigoDoOperadorOI\": 5,\n    \"Tags\":[\"Carol\",\"Implantacao\",\"CS\",\"Lead\",\"Gigante Pneus\"]\n}\n\n ```\n\n``` json\nResponse:\n{\n    \"codigoStatus\": 201,\n    \"sucesso\": true,\n    \"dados\": \"Televenda criado com sucesso!\"     \n}\n\n ```\n\n---\n\n## ⚠️ Tratamento de Erros\n\n### Códigos de Status HTTP Comuns\n\n| Código | Descrição | Ação Recomendada |\n| --- | --- | --- |\n| 200 | OK | Requisição bem-sucedida |\n| 401 | Unauthorized | Verifique suas credenciais ou renove o token |\n| 403 | Forbidden | Token inválido ou sem permissão |\n| 429 | Too Many Requests | Aguarde antes de fazer nova requisição |\n| 500 | Internal Server Error | Erro interno do servidor |\n\n### Renovação de Token\n\nQuando receber um erro 401 (Unauthorized), isso geralmente indica que o token expirou. Neste caso:\n\n1. Faça uma nova requisição para o endpoint de login\n    \n2. Obtenha um novo token\n    \n3. Repita a requisição original com o novo token\n    \n\n---\n\n## 📌 Observações Importantes\n\n- Mantenha suas credenciais (Client ID, Username e Secret) em segurança\n    \n- Implemente um sistema de cache para o token JWT para evitar requisições desnecessárias de login\n    \n- Monitor o tempo de expiração do token para renovação automática\n    \n- Respeite os limites de uso para evitar bloqueios temporários\n    \n\n---\n\n## 🆘 Suporte Técnico\n\nPara suporte técnico, entre em contato com nossa equipe de Produto (Desenvolvimento).\n\n---\n\n## 📚 Exemplos Práticos\n\n### Exemplo em C#\n\n``` csharp\nusing System;\nusing System.Net.Http;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Newtonsoft.Json;\npublic class OficinaInteligenteApiClient\n{\n    private readonly HttpClient _httpClient;\n    private readonly string _baseUrl;\n    private readonly string _clientId;\n    private readonly string _username;\n    private readonly string _secret;\n    private string _token;\n    public OficinaInteligenteApiClient(string baseUrl, string clientId, string username, string secret)\n    {\n        _httpClient = new HttpClient();\n        _baseUrl = baseUrl;\n        _clientId = clientId;\n        _username = username;\n        _secret = secret;\n    }\n    public async Task<bool> LoginAsync()\n    {\n        try\n        {\n            // Codificar credenciais em Base64\n            var credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes($\"{_username}:{_secret}\"));\n            // Configurar headers\n            _httpClient.DefaultRequestHeaders.Clear();\n            _httpClient.DefaultRequestHeaders.Add(\"X-Cliente-ID\", _clientId);\n            _httpClient.DefaultRequestHeaders.Add(\"Authorization\", $\"Basic {credentials}\");\n            _httpClient.DefaultRequestHeaders.Add(\"Content-Type\", \"application/json\");\n            // Fazer requisição de login\n            var response = await _httpClient.PostAsync($\"{_baseUrl}/api/v2/parceiro/logar\", null);\n            if (response.IsSuccessStatusCode)\n            {               var jsonResponse = await response.Conent.ReadAsStringAsync();\n                var loginResponse = JsonConvert.DeserializeObject<LoginResponse>(jsonResponse);\n                _token = loginResponse.Token;\n                Console.WriteLine(\"Login realizado com sucesso!\");\n                return true;\n            }\n            else\n            {\n                var errorResponse = await response.Content.ReadAsStringAsync();\n                Console.WriteLine($\"Erro no login: {response.StatusCode} - {errorResponse}\");\n                return false;\n            }\n        }\n        catch (Exception ex)\n        {\n            Console.WriteLine($\"Exceção durante o login: {ex.Message}\");\n            return false;\n        }\n    }\n    public async Task<string> MakeApiCallAsync(string endpoint)\n    {\n        try\n        {\n            // Verificar se o token existe\n            if (string.IsNullOrEmpty(_token))\n            {\n                Console.WriteLine(\"Token não encontrado. Faça login primeiro.\");\n                return null;\n            }\n            // Configurar headers para requisições autenticadas\n            _httpClient.DefaultRequestHeaders.Clear();\n            _httpClient.DefaultRequestHeaders.Add(\"Authorization\", $\"Bearer {_token}\");\n            _httpClient.DefaultRequestHeaders.Add(\"Content-Type\", \"application/json\");\n            // Fazer requisição autenticada\n            var response = await _httpClient.GetAsync($\"{_baseUrl}{endpoint}\");\n            if (response.IsSuccessStatusCode)\n            {\n                var jsonResponse = await response.Content.ReadAsStringAsync();\n                return jsonResponse;\n            }\n            else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized)\n            {\n                Console.WriteLine(\"Token expirado ou inválido. Faça login novamente.\");\n                return null;\n            }\n            else\n            {\n                var errorResponse = await response.Content.ReadAsStringAsync();\n                Console.WriteLine($\"Erro na requisição: {response.StatusCode} - {errorResponse}\");\n                return null;\n            }\n        }\n        catch (Exception ex)\n        {\n            Console.WriteLine($\"Exceção durante a requisição: {ex.Message}\");\n            return null;\n        }\n    }\n    public void Dispose()\n    {\n        _httpClient?.Dispose();\n    }\n}\n// Classe para deserializar a resposta do login\npublic class LoginResponse\n{\n    [JsonProperty(\"success\")]\n    public bool Success { get; set; }\n    [JsonProperty(\"token\")]\n    public string Token { get; set; }\n    [JsonProperty(\"expires_in\")]\n    public int ExpiresIn { get; set; }\n    [JsonProperty(\"token_type\")]\n    public string TokenType { get; set; }\n}\n// Exemplo de uso\nclass Program\n{\n    static async Task Main(string[] args)\n    {\n        // Credenciais fornecidas pela Oficina Inteligente\n        var baseUrl = \"https://api.oiapi.com.br\";\n        var clientId = \"seu_client_id\";\n        var username = \"seu_username\";\n        var secret = \"seu_secret\";\n        var apiClient = new OficinaInteligenteApiClient(baseUrl, clientId, username, secret);\n        try\n        {\n            // Fazer login\n            var loginSuccess = await apiClient.LoginAsync();\n            if (loginSuccess)\n            {\n                // Fazer chamada autenticada para um endpoint exemplo\n                var result = await apiClient.MakeApiCallAsync(\"/api/v2/exemplo/endpoint\");\n                if (result != null)\n                {\n                    Console.WriteLine(\"Resposta da API:\");\n                    Console.WriteLine(result);\n                }\n            }\n        }\n        finally\n        {\n            apiClient.Dispose();\n        }\n    }\n}\n\n ```","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"44059572","team":7319762,"collectionId":"3ca60313-3fc3-441d-b308-1c0f03ff87db","publishedId":"2sB2xCh9GX","public":true,"publicUrl":"https://doc.oiapi.com.br","privateUrl":"https://go.postman.co/documentation/44059572-3ca60313-3fc3-441d-b308-1c0f03ff87db","customColor":{"top-bar":"0c577c","right-sidebar":"218bcc","highlight":"218bcc"},"documentationLayout":"classic-single-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/62a60be5-21f0-49ae-b493-64ed3969cd09/bG9nb19saW5oYV9icmFuY2EucG5n","colors":{"top-bar":"218bcc","right-sidebar":"0c577c","highlight":"0c577c"}},{"name":"light","logo":"https://content.pstmn.io/fd8b819d-770e-44b8-8081-6d013d61ba6c/bG9nb19saW5oYV9icmFuY2EucG5n","colors":{"top-bar":"0c577c","right-sidebar":"218bcc","highlight":"218bcc"}}]}},"version":"8.10.1","publishDate":"2025-06-24T17:37:42.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/fd8b819d-770e-44b8-8081-6d013d61ba6c/bG9nb19saW5oYV9icmFuY2EucG5n","logoDark":"https://content.pstmn.io/62a60be5-21f0-49ae-b493-64ed3969cd09/bG9nb19saW5oYV9icmFuY2EucG5n"}},"statusCode":200},"environments":[{"name":"Homologação","id":"8ff15705-c98f-406e-98ed-d7ddfbf99ece","owner":"44059572","values":[{"key":"url","value":"https://homapi.oiapi.com.br","enabled":true,"type":"default"},{"key":"token","value":"","enabled":true,"type":"default"},{"key":"x-cliente-id","value":"CA-297b23f861","enabled":true,"type":"default"},{"key":"username carrier","value":"64D0B072-C56C-4E19-B24C-48FA0B4A4983","enabled":true,"type":"default"},{"key":"secret carrier","value":"2OGZNW4IeFIShDJ+LrByfDQZXg+LVANmmmVvfk8hY1Q=","enabled":true,"type":"default"},{"key":"header premacar","value":"PC-f3144a5905","enabled":true,"type":"default"},{"key":"username premacar","value":"084fb53b-9c82-4914-a44e-89ec81737fe7","enabled":true,"type":"default"},{"key":"secret premacar","value":"M0RniQrcSabrcQ6iDRPD1gTT2MQOkLHGVgDOflWiZyc=","enabled":true,"type":"default"},{"key":"ambiente","value":"Homologação","enabled":true,"type":"default"},{"key":"header carrier","value":"CA-297b23f861","enabled":true,"type":"default"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/e3939b9e156d379c9d736008688185394337fb298d8b399fc9671dda61590054","favicon":"https://oiapi.com.br/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Homologação","value":"44059572-8ff15705-c98f-406e-98ed-d7ddfbf99ece"}],"canonicalUrl":"https://doc.oiapi.com.br/view/metadata/2sB2xCh9GX"}