← Volver al blog

Crear una app y generar un token de API

Tus primeras dos llamadas a la API: registrar una app y emitir un token acotado. Un recorrido por el sobre de la API REST y el header de auth que necesita cada petición.

2 min de lectura
Read in English

Todo es una llamada a la API

El panel de StreamHub es solo un cliente de la misma API REST que podés usar directamente. Cada endpoint vive bajo /api/v1, toma un header Authorization: Bearer <token> y devuelve un sobre consistente:

{ "data": <payload>, "error": null }

Los errores devuelven el estado HTTP correcto más un cuerpo de error de NestJS. La documentación interactiva completa está en /api/v1/docs (Swagger) y /api/v1/openapi.json.

Paso 1 — preparar tu shell

El instalador sembró un token sk_ global. Tomalo y apuntá a tu servidor:

export BASE="https://media.example.com/api/v1"
export TOKEN="sk_...."     # el token global sembrado

Paso 2 — crear una app

curl -s -X POST $BASE/apps -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"name":"live","displayName":"Canal en Vivo"}'

Eso registra la app, crea su base de datos por app y configura su prefijo de sala. La app es ahora el ámbito de streams, grabaciones, plugins y sus propios tokens.

Paso 3 — generar un token acotado

Un token global puede hacer cualquier cosa; para la integración del día a día querés un token acotado a una app, así una filtración queda contenida:

curl -s -X POST $BASE/tokens -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"name":"live-ci","app":"live"}'

La respuesta contiene el nuevo valor sk_ una sola vez — guardalo en tu gestor de secretos de inmediato. Podés listar y revocar tokens más tarde con GET /tokens y DELETE /tokens/{id}.

Paso 4 — confirmar que funciona

curl -s $BASE/apps/live -H "Authorization: Bearer $LIVE_TOKEN"

Deberías recibir la config de la app de vuelta en el sobre data.

Entender los permisos

Detrás de escena, cada ruta declara un permiso Casbin como app:create o ingress:create. Un token global o superadmin saltea el acotamiento por tenant; un token acotado a una app queda confinado a esa app. Si una llamada devuelve 403, el token está autenticado pero le falta el permiso — chequeá el recurso:accion requerido del endpoint en la referencia de la API.

Con una app y un token en mano, estás listo para ingestar tu primer stream.