API de Integração de Plataforma Nura

Documentação oficial para integração de aplicativos de terceiros com nossa plataforma

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.com

Versão Atual

v1.0

Formato de Resposta

JSON

Requisições por Minuto (Modo Sandbox)

60

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

  1. Entre em contato com nosso suporte para solicitar um token

Exemplo de header de autenticação

Nura-Third-Party-Token: B7C9F9839e9FC3F14607....

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.

Nura-Api-Mode: sandbox

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)"
  }
]

Endpoints

GET

/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...."

Exemplo de Resposta

[
  {
    "id": "2",
    "name": "DIA",
    "description": "Dedicated Internet"
  },
  {
    "id": "4",
    "name": "Broadband",
    "description": "Broadband"
  }
]

Propriedades da Resposta

PropriedadeTipoDescrição
idStringIdentificador único do produto
nameStringNome do produto
descriptionStringDescrição detalhada do produto
GET

/available

Verifica a disponibilidade de um produto em uma localização específica.

Parâmetros de Query

ParâmetroTipoObrigatórioDescrição
productNameStringObrigatórioNome do produto
latitudeNumberObrigatórioLatitude da localização
longitudeNumberObrigatórioLongitude 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...."

Exemplo de Resposta

[
  {
    "area": "NnIs8WSOn60Wabof728WQfIaJyfF4bWgQbfRoLzXOIS9AeFDDFS/Vbvbj634QU1zG228UAXcrp5cpAPzfk/FP36LEdHyIEh4H+7dtWeBg1F2jzZ2GYoIVWdL8QaodMU="
  }
]

Propriedades da Resposta

PropriedadeTipoDescrição
areaStringIdentificador ú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.

GET

/quotes

Retorna cotações detalhadas para um código específico de área.

Parâmetros de Query

ParâmetroTipoObrigatórioDescrição
codeStringObrigatórioCó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...."

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

PropriedadeTipoDescrição
speedNumberVelocidade contratada (em Mbps)
currencyStringMoeda utilizada para o custo (ex.: BRL)
plansArrayLista de planos disponíveis
plans[].termNumberDuração do contrato (em meses)
plans[].monthlyCostNumberCusto mensal do plano
plans[].installationCostNumberCusto de instalação
plans[].forInterStateBooleanSe o plano está disponível para instalação inter-estadual
plans[].forOutSideBooleanSe o plano está disponível para instalação fora do país
POST

/invoice

Em Implementação

Gera 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ódigoDescriçãoPossíveis Causas
200 OKRequisição bem-sucedidaA requisição foi processada com sucesso
400 Bad RequestRequisição inválidaParâmetros ausentes ou inválidos
401 UnauthorizedNão autorizadoToken de autenticação ausente ou inválido
403 ForbiddenProibidoO token não tem permissão para acessar o recurso
404 Not FoundNão encontradoO recurso solicitado não existe
429 Too Many RequestsMuitas requisiçõesLimite de requisições excedido
500 Internal Server ErrorErro interno do servidorErro 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)"
  }
]