Introdução
Esta API permite que terceiros empresariais integrem seus aplicativos com o nosso sistema. A API oferece acesso a produtos, verificação de disponibilidade e cotações detalhadas.
URL Base
https://api.nuraconnect.comVersão Atual
Formato de Resposta
Requisições por Minuto (Modo Sandbox)
Autenticação
Todas as requisições à API devem ser autenticadas usando um token de acesso. Este token deve ser incluído no header Nura-Third-Party-Token de cada requisição.
Token de Autenticação
O token é uma string única que identifica sua aplicação e controla o acesso à API.
Como obter um token
- Entre em contato com nosso suporte para solicitar um token
Exemplo de header de autenticação
Importante
Mantenha seu token seguro. Não compartilhe ou exponha seu token em código-fonte público, URLs ou aplicativos cliente. Em caso de comprometimento, solicite imediatamente um novo token.
Modo Sandbox
O modo sandbox permite testar a integração com a API sem afetar dados reais ou gerar transações. Para ativar o modo sandbox, inclua o header Nura-Api-Mode em suas requisições.
Ativando o Modo Sandbox
Adicione o header abaixo para ativar o modo sandbox em suas requisições.
Características do Modo Sandbox
- Retorna dados mockados para testes
- Disponível para todos os endpoints
- Simula todos os cenários de erro possíveis
Dados de Teste
O modo sandbox fornece dados consistentes para testes.
[
{
"id": "1",
"name": "SANDBOX_DIA",
"description": "Dedicated Internet Access (Sandbox)"
},
{
"id": "2",
"name": "SANDBOX_BROADBAND",
"description": "Broadband Internet (Sandbox)"
}
][
{
"area": "SANDBOX_AREA_CODE_123456789"
}
]{
"speed": 100,
"currency": "BRL",
"plans": [
{
"term": 12,
"monthlyCost": 99.99,
"installationCost": 500,
"forInterState": false,
"forOutSide": false
},
{
"term": 24,
"monthlyCost": 89.99,
"installationCost": 500,
"forInterState": false,
"forOutSide": false
}
]
}Endpoints
/products
Retorna todos os produtos disponíveis no sistema.
Parâmetros
Esta rota não requer parâmetros.
Exemplo de Requisição
curl -X GET "https://api.nuraconnect.com/products" \ -H "Nura-Third-Party-Token: B7C9F9839e9FC3F14607...."
const response = await fetch('https://api.nuraconnect.com/products', {
method: 'GET',
headers: {
'Nura-Third-Party-Token': 'B7C9F9839e9FC3F14607....'
}
});
const data = await response.json();
console.log(data);import requests
headers = {
'Nura-Third-Party-Token': 'B7C9F9839e9FC3F14607....'
}
response = requests.get('https://api.nuraconnect.com/products', headers=headers)
data = response.json()
print(data)Exemplo de Resposta
[
{
"id": "2",
"name": "DIA",
"description": "Dedicated Internet"
},
{
"id": "4",
"name": "Broadband",
"description": "Broadband"
}
]Propriedades da Resposta
| Propriedade | Tipo | Descrição |
|---|---|---|
id | String | Identificador único do produto |
name | String | Nome do produto |
description | String | Descrição detalhada do produto |
/available
Verifica a disponibilidade de um produto em uma localização específica.
Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
productName | String | Obrigatório | Nome do produto |
latitude | Number | Obrigatório | Latitude da localização |
longitude | Number | Obrigatório | Longitude da localização |
Exemplo de Requisição
curl -X GET "https://api.nuraconnect.com/available?productName=BROADBAND&latitude=-23.5838308&longitude=-46.6835412" \ -H "Nura-Third-Party-Token: B7C9F9839e9FC3F14607...."
const params = new URLSearchParams({
productName: 'BROADBAND',
latitude: -23.5838308,
longitude: -46.6835412
});
const response = await fetch(`https://api.nuraconnect.com/available?${params}`, {
method: 'GET',
headers: {
'Nura-Third-Party-Token': 'B7C9F9839e9FC3F14607....'
}
});
const data = await response.json();
console.log(data);import requests
headers = {
'Nura-Third-Party-Token': 'B7C9F9839e9FC3F14607....'
}
params = {
'productName': 'BROADBAND',
'latitude': -23.5838308,
'longitude': -46.6835412
}
response = requests.get('https://api.nuraconnect.com/available', headers=headers, params=params)
data = response.json()
print(data)Exemplo de Resposta
[
{
"area": "NnIs8WSOn60Wabof728WQfIaJyfF4bWgQbfRoLzXOIS9AeFDDFS/Vbvbj634QU1zG228UAXcrp5cpAPzfk/FP36LEdHyIEh4H+7dtWeBg1F2jzZ2GYoIVWdL8QaodMU="
}
]Propriedades da Resposta
| Propriedade | Tipo | Descrição |
|---|---|---|
area | String | Identificador único da área geográfica, usado para obter cotações |
Importante
O código de área retornado é necessário para obter cotações através do endpoint /quotes. Este código é criptografado e contém informações sobre a localização e o produto.
/quotes
Retorna cotações detalhadas para um código específico de área.
Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
code | String | Obrigatório | Código obtido da rota /available |
Exemplo de Requisição
curl -X GET "https://api.nuraconnect.com/quotes?code=aH2RfrO3dNgCHLPZlEzwfZcTA62vE9COTgb7s0V1D1fmLw3AStpPHRC2EWQJfsqrVDlEibGZ52CWgwQ3rNcD39HaipD1LmvYMCYKQvVwMe10vlvToQwYaqni7ZYphWI=" \ -H "Nura-Third-Party-Token: B7C9F9839e9FC3F14607...."
const code = 'aH2RfrO3dNgCHLPZlEzwfZcTA62vE9COTgb7s0V1D1fmLw3AStpPHRC2EWQJfsqrVDlEibGZ52CWgwQ3rNcD39HaipD1LmvYMCYKQvVwMe10vlvToQwYaqni7ZYphWI=';
const params = new URLSearchParams({ code });
const response = await fetch(`https://api.nuraconnect.com/quotes?${params}`, {
method: 'GET',
headers: {
'Nura-Third-Party-Token': 'B7C9F9839e9FC3F14607....'
}
});
const data = await response.json();
console.log(data);import requests
headers = {
'Nura-Third-Party-Token': 'B7C9F9839e9FC3F14607....'
}
params = {
'code': 'aH2RfrO3dNgCHLPZlEzwfZcTA62vE9COTgb7s0V1D1fmLw3AStpPHRC2EWQJfsqrVDlEibGZ52CWgwQ3rNcD39HaipD1LmvYMCYKQvVwMe10vlvToQwYaqni7ZYphWI='
}
response = requests.get('https://api.nuraconnect.com/quotes', headers=headers, params=params)
data = response.json()
print(data)Exemplo de Resposta
{
"speed": 20,
"currency": "BRL",
"plans": [
{
"term": 12,
"monthlyCost": 89.98,
"installationCost": 590,
"forInterState": false,
"forOutSide": false
},
{
"term": 24,
"monthlyCost": 85.48,
"installationCost": 590,
"forInterState": false,
"forOutSide": false
},
{
"term": 36,
"monthlyCost": 81.2,
"installationCost": 590,
"forInterState": false,
"forOutSide": false
},
{
"term": 48,
"monthlyCost": 78.77,
"installationCost": 590,
"forInterState": false,
"forOutSide": false
},
{
"term": 60,
"monthlyCost": 77.19,
"installationCost": 590,
"forInterState": false,
"forOutSide": false
}
]
}Propriedades da Resposta
| Propriedade | Tipo | Descrição |
|---|---|---|
speed | Number | Velocidade contratada (em Mbps) |
currency | String | Moeda utilizada para o custo (ex.: BRL) |
plans | Array | Lista de planos disponíveis |
plans[].term | Number | Duração do contrato (em meses) |
plans[].monthlyCost | Number | Custo mensal do plano |
plans[].installationCost | Number | Custo de instalação |
plans[].forInterState | Boolean | Se o plano está disponível para instalação inter-estadual |
plans[].forOutSide | Boolean | Se o plano está disponível para instalação fora do país |
/invoice
Em ImplementaçãoGera uma fatura para o plano selecionado.
Parâmetros
Em Desenvolvimento
Este endpoint está atualmente em desenvolvimento. Os parâmetros de entrada estão sendo definidos e estarão disponíveis em breve.
Exemplo de Requisição
Em breve. Este endpoint ainda está em implementação.
Exemplo de Resposta
Em breve. Este endpoint ainda está em implementação.
Códigos de Erro
A API utiliza códigos de status HTTP padrão para indicar o sucesso ou falha de uma requisição.
Códigos de Status HTTP
| Código | Descrição | Possíveis Causas |
|---|---|---|
200 OK | Requisição bem-sucedida | A requisição foi processada com sucesso |
400 Bad Request | Requisição inválida | Parâmetros ausentes ou inválidos |
401 Unauthorized | Não autorizado | Token de autenticação ausente ou inválido |
403 Forbidden | Proibido | O token não tem permissão para acessar o recurso |
404 Not Found | Não encontrado | O recurso solicitado não existe |
429 Too Many Requests | Muitas requisições | Limite de requisições excedido |
500 Internal Server Error | Erro interno do servidor | Erro inesperado no servidor |
Exemplo de Resposta de Erro
{
"error": {
"code": "INVALID_PARAMETERS",
"message": "Parâmetros inválidos ou ausentes",
"details": "O parâmetro 'latitude' é obrigatório"
}
}Exemplos de Uso
Abaixo estão exemplos de fluxos completos de integração com a API.
Fluxo Completo de Cotação
Este exemplo demonstra como obter uma cotação completa em três etapas.
1. Listar Produtos Disponíveis
// Requisição
const response = await fetch('https://api.nuraconnect.com/products', {
method: 'GET',
headers: {
'Nura-Third-Party-Token': 'B7C9F9839e9FC3F14607....'
}
});
// Resposta
[
{
"id": "2",
"name": "DIA",
"description": "Dedicated Internet"
},
{
"id": "4",
"name": "Broadband",
"description": "Broadband"
}
]2. Verificar Disponibilidade
// Requisição
const params = new URLSearchParams({
productName: 'BROADBAND',
latitude: -23.5838308,
longitude: -46.6835412
});
const response = await fetch(`https://api.nuraconnect.com/available?${params}`, {
method: 'GET',
headers: {
'Nura-Third-Party-Token': 'B7C9F9839e9FC3F14607....'
}
});
// Resposta
[
{
"area": "NnIs8WSOn60Wabof728WQfIaJyfF4bWgQbfRoLzXOIS9AeFDDFS/Vbvbj634QU1zG228UAXcrp5cpAPzfk/FP36LEdHyIEh4H+7dtWeBg1F2jzZ2GYoIVWdL8QaodMU="
}
]3. Obter Cotações
// Requisição
const areaCode = "NnIs8WSOn60Wabof728WQfIaJyfF4bWgQbfRoLzXOIS9AeFDDFS/Vbvbj634QU1zG228UAXcrp5cpAPzfk/FP36LEdHyIEh4H+7dtWeBg1F2jzZ2GYoIVWdL8QaodMU=";
const params = new URLSearchParams({ code: areaCode });
const response = await fetch(`https://api.nuraconnect.com/quotes?${params}`, {
method: 'GET',
headers: {
'Nura-Third-Party-Token': 'B7C9F9839e9FC3F14607....'
}
});
// Resposta
{
"speed": 20,
"currency": "BRL",
"plans": [
{
"term": 12,
"monthlyCost": 89.98,
"installationCost": 590,
"forInterState": false,
"forOutSide": false
},
{
"term": 24,
"monthlyCost": 85.48,
"installationCost": 590,
"forInterState": false,
"forOutSide": false
}
]
}Testando com o Modo Sandbox
Este exemplo demonstra como usar o modo sandbox para testar a integração.
// Requisição com modo sandbox ativado
const response = await fetch('https://api.nuraconnect.com/products', {
method: 'GET',
headers: {
'Nura-Third-Party-Token': 'B7C9F9839e9FC3F14607....',
'Nura-Api-Mode': 'sandbox'
}
});
// Resposta (dados mockados)
[
{
"id": "1",
"name": "SANDBOX_DIA",
"description": "Dedicated Internet Access (Sandbox)"
},
{
"id": "2",
"name": "SANDBOX_BROADBAND",
"description": "Broadband Internet (Sandbox)"
}
]