Integration Interface

Interface de Integração

< Voltar

A Interface de Comunicação com APIs Externas – Usada Somente pelo SDK

Esta documentação segue o mesmo padrão profissional da Google/Apple, incluindo:

  • Função

  • Parâmetros

  • Regras de segurança (MTLS, JWT, TTL, erros)

  • Fluxos completos

  • Exemplos em TypeScript, Kotlin e Swift

  • Diagramas de sequência

  • Comportamento esperado do APP e do servidor


📘 3. LocatorIntegration – Visão Geral

LocatorIntegration é a interface obrigatória que o APP deve implementar para permitir que o SDK comunique-se com os endpoints protegidos da API Locator.

⚠️ Importante: O SDK nunca acessa servidores diretamente sem passar pela implementação fornecida pelo APP. Isso permite:

  • abstrair rede / auth / stack HTTP

  • evolução do backend sem alterar o SDK

  • controle de erros

  • logging e telemetria aplicados pelo próprio app


📐 3.1 Responsabilidades do LocatorIntegration

Responsabilidade
Descrição

Obter certificado mTLS

Necessário para comunicação segura com API + MQTT

Obter tokens JWT

Necessário para API, MQTT e WSS

Sincronizar dados remotos

Config, grupos, geofences, scopes, features

Garantir autenticação forte

MTLS obrigatório após certificado baixado

Retornar erros detalhados

SDK depende disso para tomada de decisão


🔒 3.2 Segurança

✔ Certificado mTLS

Chamado somente via:

  • SDK envia um nonce

  • API retorna outro nonce + P12

  • SDK deriva a senha do P12 combinando ambos

✔ JWT

Chamado via:

Tipos de tokens:

Tipo
Uso

jwt_api

Chamadas HTTP

jwt_mqtt

Conexão MQTT

jwt_wss

Conexão WebSocket sobre TLS

✔ Todas as demais chamadas exigem:

  • Certificado mTLS válido

  • JWT do tipo API


📘 3.3 Interface completa

🟩 Kotlin (Android)

🟧 Swift (iOS)


🚀 3.4 Métodos (Documentação Completa)

A seguir, cada método documentado com:

  • descrição

  • regras de negócio

  • erros possíveis

  • fluxos

  • exemplos (TS / Kotlin / Swift)


🟦 3.4.1 getCert()

✔ Função

Solicita o certificado mTLS para este dispositivo.

✔ Assinatura

✔ Parâmetros

Campo
Tipo
Obrigatório
Descrição

nonce

string

Nonce gerado pelo SDK para compor a senha do certificado

✔ Retorno

Campo
Tipo
Descrição

p12Base64

string

Certificado P12 criptografado

nonce

string

Segundo nonce usado na derivação da senha

expiresAt

number

Epoch de expiração do certificado

✔ Regras de Segurança

  • Não requer mTLS (é o único endpoint que não requer)

  • Requer JWT_API inicial fornecido pelo APP

  • API deve ter rate-limit forte

  • SDK não repete chamadas sem backoff

✔ Fluxo de execução (diagrama)

✔ Erros possíveis

Código
Condição

auth_invalid

token inicial inválido

rate_limit

excesso de tentativas

network_timeout

instabilidade

exception

erro interno

unknown

fallback


🟦 3.4.2 getToken()

✔ Função

Obtém um token JWT baseado no tipo solicitado:

  • jwt_api

  • jwt_mqtt

  • jwt_wss

✔ Assinatura

✔ Parâmetros

Campo
Tipo
Obrigatório
Descrição

type

LocatorTokenType

Tipo do token desejado

scopes

string[]

opcional

Scopes adicionais para RBAC

✔ Regras de Segurança

  • Requer mTLS (certificado válido)

  • Requer JWT_API existente (token anterior)

✔ Erros

Mesmos erros de rede / auth de qualquer rota protegida.


🟦 3.4.3 getScopes()

Sincroniza todas as permissões habilitadas para o usuário.

✔ Assinatura

✔ Regras

  • Requer mTLS + JWT_API

  • Deve retornar lista completa, não delta

  • Controlado por revision


🟦 3.4.4 getFeatures()

Recupera todas as features habilitadas.

Observações importantes:

  • Features podem depender de scopes

  • Uma feature sem scopes é pública

  • API deve retornar somente features liberadas


🟦 3.4.5 getConfig()

Obtém a configuração principal do SDK.

Inclui:

  • intervalos de coleta

  • regras de bateria

  • retry policy

  • URLs

  • enable/disable de features


🟦 3.4.6 getGroups()

Obtém todos os grupos associados ao usuário:

Observações

  • Um grupo que desaparece deve ser removido do SDK

  • admin[] controla recursos avançados

  • all[] controla visibilidade


🟦 3.4.7 getGeofences()

Retorna lista completa de cercas.

Regras

  • Deve retornar todas as geofences

  • SDK ativa somente as dos grupos presentes em LocatorGroups

  • Se chegar geofence de grupo desconhecido → SDK força syncGroups()


🖥️ 3.5 Exemplos Completos


🔷 TypeScript (React Native / Capacitor / Web)


🟩 Kotlin (Android)


🟧 Swift (iOS)

< Voltar

Last updated