N-Ways
Documentação para programadoresChaves de crédito Startups

Está a desenvolver com o N-Ways?

Obter uma chave de API

Chaves de crédito do Programa de Startups

O crédito do Programa de Startups paga apenas as chamadas dos seus próprios produtos, feitas com chaves de crédito que provam de onde vêm. Tudo o resto é faturado normalmente.

Nesta página
Nota:

Para as empresas do Programa de Startups N-Ways. O crédito é só para os seus próprios produtos. Revendê-lo, partilhar chaves ou servir de proxy à N-Ways para outras empresas viola o Acordo de Crédito para Startups: o crédito termina de imediato e a empresa e os fundadores podem ser banidos.

Como o crédito paga

Uma chamada é paga pelo seu crédito para startups apenas quando tudo isto se verifica. Caso contrário, é faturada como utilização paga normal, do crédito próprio da sua organização, e recusada com 402 STARTUP_CREDIT_NOT_ELIGIBLE se não houver.

  • Um fundador verificou pelo menos um produto e aceitou o acordo em startup.nways.ng.
  • A chamada usa uma chave de crédito: uma chave API da sua empresa associada a um dos seus produtos verificados, ou aos seus servidores.
  • A chamada prova de onde vem (abaixo).
  • O crédito não está em pausa e os limites não foram atingidos.

Cada resposta a uma empresa com crédito para startups diz o que aconteceu em X-NWays-Credit: startup quando o crédito pagou, ou paid; why=<código> quando não pôde.

Verificar os seus produtos

ProdutoProvaVerificação
SiteUm registo DNS TXT _nways-verify.example.com com nways-verify=<token>. Os subdomínios estão incluídos.Automática, depois todos os dias. Três falhas seguidas e a prova é perdida.
App iOSBundle ID, Team ID da Apple e link da App Store. O site do programador na página pública é um dos seus domínios verificados, ou o token está na descrição.Automática; uma app ainda não pública é verificada à mão pela N-Ways.
App AndroidNome do pacote, SHA-256 do certificado de assinatura e link do Google Play. A página pública aponta para um dos seus domínios verificados, ou mostra o token na descrição.Automática; caso contrário, à mão pela N-Ways.

Depois de aceitar, pode acrescentar ou substituir 2 produtos em quaisquer 12 meses. Cada um é verificado de novo.

Chaves de navegador

Associe uma chave restrita a sites a um site verificado. As suas chamadas usam o crédito quando o Origin (ou Referer) da página é esse domínio ou um dos seus subdomínios. Não é preciso enviar mais nada: os navegadores acrescentam o cabeçalho.

Chaves móveis e atestação da app

Associe uma chave restrita a apps iOS ou Android à sua app verificada. As suas chamadas usam o crédito quando trazem X-NWays-Attestation, uma sessão que a app obtém ao provar que é a sua app genuína num dispositivo real. Os SDK da N-Ways fazem isto numa chamada, e a sessão dura 30 dias:

iOS
NWaysMaps.configure(apiKey: "A_SUA_CHAVE_DE_CREDITO_IOS")
Task { try? await NWaysCredit.start() } // App Attest; depois enviado em cada pedido à N-Ways
Android
NWaysMaps.init(this, "A_SUA_CHAVE_DE_CREDITO_ANDROID")
thread { runCatching { NWaysCredit.start(this) } } // atestação de chave por hardware (Android 7+)

Sem o SDK, faça as mesmas chamadas:

  1. POST /maps/v1/credit/attest/challenge com a chave: um desafio válido por 5 minutos.
  2. iOS: DCAppAttestService.attestKey com clientDataHash = SHA-256("nways-credit|" + desafio + "|" + keyId). Android: gere uma chave no Android Keystore com setAttestationChallenge igual a esse SHA-256 (o seu próprio keyId aleatório).
  3. POST /maps/v1/credit/attest com {"platform", "challenge", "keyId", "attestation"} (iOS, base64) ou {"platform", "challenge", "keyId", "chain"} (Android: a cadeia de certificados, DER em base64, a folha primeiro). A resposta é {"token", "expiresAt"}: envie o token em X-NWays-Attestation.

A N-Ways verifica as atestações iOS com a raiz App Attest da Apple, o seu Team ID e bundle ID, e as Android com as raízes de atestação por hardware da Google, o seu pacote e o seu certificado de assinatura. Não é preciso nada das suas contas Apple ou Google. Emuladores, simuladores e dispositivos com root sem atestação por hardware não conseguem atestar: as chamadas são faturadas normalmente.

Chaves de servidor

A maioria dos produtos chama a N-Ways a partir dos seus próprios servidores. Associe uma chave restrita a endereços IP (ou sem restrição) aos seus servidores e registe os seus endereços públicos de saída em startup.nways.ng: até 5 endereços ou intervalos, IPv4 no máximo /28 e IPv6 /56, e até 4 alterações em 30 dias.

Cada endereço novo é verificado por uma chamada feita a partir dele, com uma chave de crédito de servidor e o desafio mostrado quando o acrescentou (válido 48 horas):

Execute no servidor
curl -X POST https://api.nways.ng/maps/v1/credit/verify-ip \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_DE_CREDITO_DE_SERVIDOR" \
  -H "Content-Type: application/json" \
  -d '{"challenge": "nwip_…"}'

Cada chamada de servidor que deve usar o crédito indica o utilizador final a que se destina:

GET /maps/v1/places/search?query=farmacia HTTP/1.1
Host: api.nways.ng
X-NWays-Api-Key: A_SUA_CHAVE_DE_CREDITO_DE_SERVIDOR
X-NWays-End-User: u_7f3a9c2d41e8
  • X-NWays-End-User é um ID opaco do seu próprio sistema: um hash com sal ou um ID aleatório, de 8 a 128 letras, dígitos e . _ : = -. É o mesmo para um utilizador e diferente para utilizadores diferentes.
  • Nunca ponha dados pessoais: nem nome, nem endereço de email, nem número de telefone, de identificação ou de conta. Endereços de email e números de telefone são recusados.
  • X-NWays-End-User-Country (opcional) é o país do utilizador, em duas letras.
  • As chamadas de um endereço não registado, ou sem o cabeçalho, são faturadas normalmente.

Limites

  • A utilização mensal do crédito: ₦100 000 para começar, por mês civil (hora de Lagos).
  • A utilização diária por produto (e para os seus servidores em conjunto): ₦10 000.
  • Matrizes de rotas e otimização de rotas: cada uma até 10% do limite mensal por mês.

Passado um limite, as chamadas são faturadas normalmente até ele reiniciar. Os seus limites e a sua utilização estão em startup.nways.ng.

Monitorização

A N-Ways acompanha a utilização do crédito: picos face à sua própria utilização, sites que não são seus em chaves de navegador, atestações falhadas, tráfego muito acima do declarado na candidatura, tráfego regular como uma máquina, poucos «utilizadores finais» com volumes enormes, várias apps atrás de uma chave de servidor, utilizadores finais fora do seu país e chamadas de endereços não registados. Quando parece partilha ou revenda, o crédito é pausado automaticamente (as chamadas são faturadas normalmente) e os seus contactos de faturação são informados; depois, a N-Ways analisa.

Erros e códigos why

whySignificadoO que fazer
key_not_boundA chave não é uma chave de crédito.Associe-a em startup.nways.ng.
credit_not_activeO acordo ainda não foi aceite, ou o crédito terminou.Aceite-o em startup.nways.ng.
credit_frozenO crédito está em pausa para análise.Responda ao email da N-Ways.
origin_not_verifiedA página não está num domínio verificado.Verifique o domínio, ou chame a partir dele.
attestation_missing, attestation_invalidSem X-NWays-Attestation válido.Chame NWaysCredit.start() de novo.
app_not_verifiedOutra app que não a associada à chave.Use a chave de crédito da própria app.
ip_not_registeredO endereço do servidor não está registado e verificado.Registe-o e verifique-o.
end_user_missing, end_user_invalidSem X-NWays-End-User opaco.Envie o ID opaco do seu utilizador.
key_restriction_changedA restrição da chave já não corresponde à associação.Reponha-a, ou associe a chave de novo.
monthly_cap, daily_cap, sku_capUm limite foi atingido.Espere que reinicie, ou use crédito pago.

Sem crédito pago, estas chamadas respondem 402 STARTUP_CREDIT_NOT_ELIGIBLE com o código em metadata.why. Veja Erros.