Integration API · v0.1.0

Getting Started

API para partners que integran telemetría de dispositivos Tagora en sus propios sistemas.

Mi estado de integración

Consulta tu rol, empresa y webhooks activos.

El flujo en 6 pasos

01 Seguridad

Login del owner

POST /security/auth/login
El owner de la organización entra con su email y password de la web. Recibe un accessToken de 10 minutos y un renewToken de 7 días.

→accessTokenrenewToken
Request / Response { email, password } accessToken · renewToken · expiresIn: 600
Ver en Swagger →
02 Seguridad

Tu organización

GET /memberships/me
Con el token del paso 1, lista tus organizaciones y tus roles en cada una. De aquí sale el organizationId de los pasos siguientes.

→organizationIdroles
Request / Response Bearer {accessToken} organizations[ { organizationId, organizationName, roles } ]
Ver en Swagger →
03 Seguridad

Credencial de integración

GET /integration/credentials · POST /integration/credentials
Sólo el owner. Consulta con GET si ya existe. POST genera o ROTA: si ya había una, la apiKey viva deja de servir. El secret se muestra una sola vez.

→apiKeysecret (una sola vez)
Request / Response GET ?organizationId → apiKey · secret: null POST { organizationId } → apiKey · secret · wasNew
Ver en Swagger →
04 Integración

Login de integración

POST /integration/v1/auth/login
El sistema del cliente cambia apiKey + secret por un token scope=integration de 10 minutos. Renueva en /integration/v1/auth/renew: rota los dos tokens.

→accessToken (integration)renewToken
Request / Response { apiKey, secret } — sin Bearer accessToken · renewToken · scope: integration · expiresIn: 600
Ver en Swagger →
05 Integración

Leer tus dispositivos

GET /integration/v1/devices
Los tags de tu organización, con su serial, assetId y macAddress. Filtra con ?serial=; uno de otra organización devuelve [].

→deviceIdserialassetId
Request / Response ?limit · offset · serial [ { deviceId, serial, assetId, deviceName, status, macAddress } ]
Ver en Swagger →
06 Integración

Registrar el webhook

POST /integration/v1/webhook
La URL donde Tagora te manda cada posición, firmada con Ed25519. Guarda la publicKey. Uno por organización (el segundo da 409). Para cambiar la URL o pausarlo: PATCH /integration/v1/webhook/{id} — las llaves no cambian.

→webhookIdpublicKey
Request / Response { postUrl, name } { webhookId, publicKey } · 409 si ya hay uno
Ver en Swagger →

También puedes hacerlo directamente aquí

Mi estado de integración

Consulta tu rol, empresa y webhooks activos.

Ciclo de vida del token

+ El accessToken vive solo en memoria — nunca en localStorage ni cookies.
! El renewToken puede persistirse en sessionStorage para sobrevivir recargas.
↺ Renueva con POST /auth/renew ~2 min antes del exp. Si falla, reintenta con backoff exponencial (5s → 10s → 15s). Tras 3 fallos, redirige a login.
x Un 401 en cualquier endpoint protegido indica que el accessToken expiró. Renueva y reintenta la petición una vez.