N-Ways
Documentação para programadoresStartup credit

Está a desenvolver com o N-Ways?

Obter uma chave de API

Startup credit

Chaves de crédito do Programa de Startups (https://nways.ng/pt/developers/startup-credit): a atestação da app das chaves de crédito móveis, e a verificação de um endereço de saída de servidor. Gratuito, limitado por chave e por endereço.

Nesta página
Nota:

Envie a sua chave com key=A_SUA_CHAVE_API no endereço, ou no cabeçalho X-NWays-Api-Key. Chaves de API

Endereço base: https://nways.ng/maps/v1

Um desafio para uma atestação da app (chave de crédito móvel)

POST https://nways.ng/maps/v1/credit/attest/challenge

Um desafio de uso único, válido 5 minutos, para a chave indicada. A app atesta sobre SHA-256("nways-credit|" + desafio + "|" + keyId). Os SDK iOS e Android da N-Ways chamam-no por si (NWaysCredit.start()). Gratuito.

cURL
curl -X POST "https://nways.ng/maps/v1/credit/attest/challenge" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/credit/attest/challenge', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/credit/attest/challenge",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Resposta

O desafio

CampoTipoDescrição
challengestringObrigatório.
expiresInintegerObrigatório. Segundos.
200 OK
{
  "challenge": "string",
  "expiresIn": 0
}

Erros

  • default Erro

Provar que a app é a app verificada da startup (uma sessão de 30 dias)

POST https://nways.ng/maps/v1/credit/attest

iOS: uma atestação App Attest; Android: a cadeia de certificados de uma chave Android Keystore por hardware criada com o desafio. O token da resposta vai em X-NWays-Attestation em cada chamada da chave de crédito móvel. Motivos: NOT_MOBILE_KEY, PLATFORM_MISMATCH, PRODUCT_UNVERIFIED, ATTESTATION_FAILED. Gratuito.

Corpo do pedido

CampoTipoDescrição
platformstringObrigatório. Um de: ios, android.
challengestringObrigatório.
keyIdstringObrigatório. iOS: o id da chave App Attest (base64). Android: o seu próprio id aleatório, o dos dados de cliente com hash.
attestationstringiOS: o objeto de atestação, em base64.
chainstring[]Android: a cadeia de certificados da chave, DER em base64, a folha primeiro.
cURL
curl -X POST "https://nways.ng/maps/v1/credit/attest" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API" \
  -H "Content-Type: application/json" \
  -d '{"platform":"ios","challenge":"string","keyId":"string","attestation":"string","chain":["string"]}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/credit/attest', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "platform": "ios",
    "challenge": "string",
    "keyId": "string",
    "attestation": "string",
    "chain": [
      "string"
    ]
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/credit/attest",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"platform": "ios", "challenge": "string", "keyId": "string", "attestation": "string", "chain": ["string"]},
    timeout=10,
)
data = res.json()

Resposta

A sessão

CampoTipoDescrição
tokenstringObrigatório.
expiresAtstring (date-time)Obrigatório.
200 OK
{
  "token": "string",
  "expiresAt": "2026-10-15T09:00:00+01:00"
}

Erros

  • default Erro

Verificar um endereço de saída de servidor (chave de crédito de servidor, enviado a partir dele)

POST https://nways.ng/maps/v1/credit/verify-ip

Enviado a partir do servidor cujo endereço ou intervalo foi registado em startup.nways.ng, com uma chave de crédito de servidor e o desafio mostrado quando foi acrescentado (válido 48 horas, uma vez). Motivos: NOT_SERVER_KEY, CHALLENGE_UNKNOWN, CHALLENGE_EXPIRED, IP_MISMATCH. Gratuito.

Corpo do pedido

CampoTipoDescrição
challengestringObrigatório.
cURL
curl -X POST "https://nways.ng/maps/v1/credit/verify-ip" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API" \
  -H "Content-Type: application/json" \
  -d '{"challenge":"nwip_…"}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/credit/verify-ip', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "challenge": "nwip_…"
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/credit/verify-ip",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"challenge": "nwip_…"},
    timeout=10,
)
data = res.json()

Resposta

Verificado

CampoTipoDescrição
verifiedbooleanObrigatório.
cidrstringObrigatório.
fromstringObrigatório.
200 OK
{
  "verified": true,
  "cidr": "string",
  "from": "string"
}

Erros

  • default Erro