API e IntegracionesFunción del plan Growth

Endpoints de la API

Referencia completa de todos los endpoints de la API REST de Screenzzie

Acceso a la API REST

Integra con la API de Screenzzie para automatizar tu senalizacion digital. Disponible en el plan Growth.

Referencia de Endpoints de la API

Documentación completa de todos los endpoints disponibles de la API REST.

Organización e Introspección

Obtén información sobre tu contexto actual de API y organización.

Obtener Contexto Actual

GET /api/v1/me

Devuelve información sobre tu clave API, organización, límites de tasa y funciones disponibles. Este endpoint no cuenta para tu límite de tasa.

Ejemplo de Solicitud:

curl -X GET "https://www.screenzzie.com/api/v1/me" \
  -H "Authorization: Bearer sk_live_xxx"

Ejemplo de Respuesta:

{
  "success": true,
  "data": {
    "apiKey": {
      "id": "uuid",
      "name": "Mi Clave API",
      "keyPrefix": "sk_live_abc123",
      "scopes": ["screens:read", "screens:write", "playlists:read"],
      "expiresAt": null
    },
    "organization": {
      "id": "uuid",
      "name": "Mi Empresa",
      "planId": "growth",
      "subscriptionStatus": "active",
      "maxScreensAllowed": 50,
      "activeScreensCount": 12
    },
    "rateLimits": {
      "limit": 1000,
      "used": 45,
      "remaining": 955,
      "resetAtMs": 1704153600000
    },
    "features": {
      "sequences": true,
      "schedules": true,
      "api": true
    }
  }
}

Listar Organizaciones

GET /api/v1/organizations

Devuelve las organizaciones accesibles con tu clave API. Actualmente, cada clave API pertenece a exactamente una organización.

Parámetros de Consulta:

ParámetroTipoDescripción
pagenúmeroNúmero de página (por defecto: 1)
limitnúmeroItems por página (por defecto: 20, max: 100)

Ejemplo de Solicitud:

curl -X GET "https://www.screenzzie.com/api/v1/organizations" \
  -H "Authorization: Bearer sk_live_xxx"

Ejemplo de Respuesta:

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "uuid",
        "name": "Mi Empresa",
        "planId": "growth",
        "subscriptionStatus": "active",
        "maxScreensAllowed": 50,
        "activeScreensCount": 12,
        "createdAt": "2024-01-01T00:00:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 1,
      "totalPages": 1,
      "hasMore": false
    }
  }
}

Pantallas

Gestiona tus pantallas de señalización digital.

Listar Pantallas

GET /api/v1/screens

Parámetros de Consulta:

ParámetroTipoDescripción
pagenúmeroNúmero de página (por defecto: 1)
limitnúmeroItems por página (por defecto: 20, max: 100)
statustextoFiltrar por estado: online, offline, pending
workspaceIduuidFiltrar por workspace

Ejemplo de Solicitud:

curl -X GET "https://www.screenzzie.com/api/v1/screens?status=online&limit=10" \
  -H "Authorization: Bearer sk_live_xxx"

Ejemplo de Respuesta:

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "uuid",
        "name": "Pantalla del Lobby",
        "status": "online",
        "orientation": "landscape",
        "resolution": "1920x1080",
        "playlistId": "uuid",
        "screenGroupId": null,
        "lastPingAt": "2024-01-01T12:00:00Z",
        "createdAt": "2024-01-01T00:00:00Z",
        "updatedAt": "2024-01-01T12:00:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 10,
      "total": 25,
      "totalPages": 3,
      "hasMore": true
    }
  }
}

Obtener Pantalla

GET /api/v1/screens/:screenId

Parámetros de Ruta:

ParámetroTipoDescripción
screenIduuidEl ID de la pantalla

Crear Pantalla

POST /api/v1/screens

Cuerpo de la Solicitud:

CampoTipoRequeridoDescripción
nametextoNombre de la pantalla (max 100 caracteres)
descriptiontextoNoDescripción de la pantalla
orientationtextoNolandscape o portrait (por defecto: landscape)
playlistIduuidNoAsignación de lista inicial
screenGroupIduuidNoMembresía de grupo de pantallas
workspaceIduuidNoAsignación de workspace

Ejemplo de Solicitud:

curl -X POST "https://www.screenzzie.com/api/v1/screens" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Sala de Conferencias A",
    "orientation": "landscape",
    "playlistId": "abc123"
  }'

Actualizar Pantalla

PATCH /api/v1/screens/:screenId

Cuerpo de la Solicitud:

Todos los campos son opcionales. Solo incluye los campos que deseas actualizar.

CampoTipoDescripción
nametextoNuevo nombre de pantalla
descriptiontextoNueva descripción (null para limpiar)
orientationtextolandscape o portrait
playlistIduuidID de lista (null para eliminar)
screenGroupIduuidID de grupo (null para eliminar)

Listas de Reproducción

Gestiona listas de contenido para tus pantallas.

Listar Listas de Reproducción

GET /api/v1/playlists

Parámetros de Consulta:

ParámetroTipoDescripción
pagenúmeroNúmero de página (por defecto: 1)
limitnúmeroItems por página (por defecto: 20, max: 100)
workspaceIduuidFiltrar por workspace

Obtener Lista de Reproducción

GET /api/v1/playlists/:playlistId

Parámetros de Consulta:

ParámetroTipoDescripción
includeItemsbooleanoIncluir items de la lista (por defecto: false)

Crear Lista de Reproducción

POST /api/v1/playlists

Cuerpo de la Solicitud:

CampoTipoRequeridoDescripción
nametextoNombre de la lista (max 100 caracteres)
descriptiontextoNoDescripción de la lista
workspaceIduuidNoAsignación de workspace

Actualizar Lista de Reproducción

PATCH /api/v1/playlists/:playlistId

Cuerpo de la Solicitud:

CampoTipoDescripción
nametextoNuevo nombre de lista
descriptiontextoNueva descripción (null para limpiar)

Eliminar Lista de Reproducción

DELETE /api/v1/playlists/:playlistId

Devuelve 204 No Content en caso de éxito.


Medios

Accede a tu biblioteca de medios.

Listar Medios

GET /api/v1/media

Parámetros de Consulta:

ParámetroTipoDescripción
pagenúmeroNúmero de página (por defecto: 1)
limitnúmeroItems por página (por defecto: 20, max: 100)
typetextoFiltrar por tipo: image o video
folderIduuidFiltrar por carpeta
workspaceIduuidFiltrar por workspace

Ejemplo de Respuesta:

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "uuid",
        "name": "video-promo.mp4",
        "type": "video",
        "url": "https://...",
        "thumbnailUrl": "https://...",
        "fileSize": 15728640,
        "mimeType": "video/mp4",
        "duration": 30,
        "width": 1920,
        "height": 1080,
        "createdAt": "2024-01-01T00:00:00Z"
      }
    ],
    "pagination": { ... }
  }
}

Obtener Medio

GET /api/v1/media/:mediaId

Eliminar Medio

DELETE /api/v1/media/:mediaId

Devuelve 204 No Content en caso de éxito.

La subida de medios no está disponible vía la API REST. Usa el panel web para subir archivos.


Horarios

Los horarios solo están disponibles en el plan Growth y superiores.

Programa contenido para reproducir en horarios específicos.

Listar Horarios

GET /api/v1/schedules

Parámetros de Consulta:

ParámetroTipoDescripción
pagenúmeroNúmero de página (por defecto: 1)
limitnúmeroItems por página (por defecto: 20, max: 100)
workspaceIduuidFiltrar por workspace
screenIduuidFiltrar por pantalla
isActivebooleanoFiltrar por estado activo

Obtener Horario

GET /api/v1/schedules/:scheduleId

Crear Horario

POST /api/v1/schedules

Cuerpo de la Solicitud:

CampoTipoRequeridoDescripción
nametextoNoNombre del horario
playlistIduuidNoLista a programar
sequenceIduuidNoSecuencia a programar
targetTypetextoscreen, screen_group, all_screens, multiple_screens
screenIduuidNoPantalla objetivo (si targetType es screen)
screenGroupIduuidNoGrupo objetivo (si targetType es screen_group)
dayOfWeeknúmero[]NoDías de la semana (0=Dom, 6=Sáb)
startTimetextoNoHora de inicio en formato HH:MM
endTimetextoNoHora de fin en formato HH:MM
startDatetextoNoFecha de inicio en formato ISO
endDatetextoNoFecha de fin en formato ISO
prioritynúmeroNoPrioridad 0-100 (por defecto: 0)
isActivebooleanoNoSi está activo (por defecto: true)
workspaceIduuidNoAsignación de workspace

Ejemplo de Solicitud:

curl -X POST "https://www.screenzzie.com/api/v1/schedules" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Promociones de Fin de Semana",
    "playlistId": "abc123",
    "targetType": "all_screens",
    "dayOfWeek": [0, 6],
    "startTime": "09:00",
    "endTime": "21:00",
    "priority": 10
  }'

Actualizar Horario

PATCH /api/v1/schedules/:scheduleId

Todos los campos son opcionales.

Eliminar Horario

DELETE /api/v1/schedules/:scheduleId

Devuelve 204 No Content en caso de éxito.


Códigos de Estado HTTP

CódigoDescripción
200Éxito
201Creado
204Sin Contenido (eliminación exitosa)
400Solicitud Incorrecta (error de validación)
401No Autorizado (clave API inválida)
403Prohibido (permisos insuficientes)
404No Encontrado
429Demasiadas Solicitudes (límite de tasa)
500Error Interno del Servidor