OpenAPI YAMLOpenAPI JSONproblemas YAMLResumen de la API
Este grupo tiene 147 operaciones, generadas a partir de api/openapi.yaml. Filtre por ruta, acción o autenticación. Cada endpoint indica sus entradas; despliéguelo para ver una plantilla de solicitud y los códigos de respuesta. Las plantillas necesitan sus propios valores y un cuerpo válido según el esquema.
Reemplace los marcadores en mayúsculas con sus valores. Para una solicitud JSON, guarde un cuerpo que coincida con el esquema en request.json. Los ejemplos de cookies usan un frasco de cookies local de una sesión autenticada.
Proyectos, invitaciones e inicio de sesión
Vista previa del agente de eliminación de proyecto
Devuelve detalles actuales de confirmación, bloqueadores de eliminación y dispositivos archivados que serán desconectados. allowed es falso, con una razón, cuando el llamante no puede eliminar el proyecto (solo su propietario o un administrador de su organización puede; para un agente, su persona responsable) o queda un bloqueador.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
| project_id | consulta | opcional | ID de proyecto esperado; se rechaza una selección cambiada. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project/deletion-preview'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado del ciclo de vida del proyecto | ProjectDeletionPreview (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Transferir agente propietario del proyecto
El propietario transfiere la propiedad a un miembro existente y verificado del proyecto; esto no concede ninguna membresía nueva. La membresía del nuevo propietario deja cualquier screen_scope y upload_scope, así que el nuevo propietario accede a todo el proyecto.
Una sesión del dashboard de un administrador de la organización del proyecto que es miembro transfiere la propiedad de la misma manera, desde quien es propietario del proyecto; un administrador de la organización que no es miembro usa PUT /api/organizations/{org_id}/projects/{project_id}/owner.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| project_id (opcional, cadena) | ID de proyecto esperado. El servidor rechaza la acción si la credencial actual o la sesión de cookie apunta a otro proyecto; los clientes de navegador envían el ID del proyecto de la página. minLength: 1 maxLength: 200 |
| user_id (requerido, cadena) | minLength: 1 maxLength: 200 |
Plantilla y respuestas de solicitud
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project/owner'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado del ciclo de vida del proyecto | ProjectContext (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Mover agente de proyecto
El movimiento autorizado por el propietario transfiere la ocupación de la pantalla y el nuevo uso al pagador destino atómicamente; los cargos históricos mantienen su pagador. Un destino que ya tiene tantos proyectos activos como permite su plan es project_limit_reached, cuyo required_plan nombra el plan con espacio, ausente en Enterprise.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| project_id (opcional, cadena) | ID de proyecto esperado. El servidor rechaza la acción si la credencial actual o la sesión de cookie apunta a otro proyecto; los clientes de navegador envían el ID del proyecto de la página. minLength: 1 maxLength: 200 |
| organization_id (requerida, cadena) | minLength: 1 maxLength: 200 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project/move'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado del ciclo de vida del proyecto | ProjectContext (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Proyecto permitido mueve agente
Lista destinos que el propietario administra o cuyo dominio verificado coincide con su correo electrónico verificado.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
| project_id | consulta | opcional | ID de proyecto esperado; se rechaza una selección cambiada. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project/moves'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado del ciclo de vida del proyecto | ProjectMoveDestinations (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar proyectos de agentes
Lista todas las membresías activas de la identidad, con contexto de organización y propietario, incluyendo membresías omitidas de este token o el consentimiento de su concesión. Cada entrada marca in_token; el descubrimiento no añade autoridad y no tiene límite de 64 proyectos.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
Plantilla y respuestas de solicitud
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/projects'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado del ciclo de vida del proyecto | ProjectContextList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear proyecto de agente
Crea un proyecto con nombre propiedad de la persona responsable verificada. Si no se nombra organización, se asigna a la organización del dominio verificado de la persona, o a la organización del proyecto actual, o a la organización que la persona usó más recientemente entre las que administra o tiene como gratuita, o a una nueva organización.
Un nombre de organización selecciona exactamente una coincidencia visible, de lo contrario crea una nueva organización. Una persona tiene una organización Standard gratuita; una nueva organización más allá de esa es free_organization_limit, nombrando la que posee.
Una organización tiene como máximo tantos proyectos activos como permite su plan (Standard 1, Plus 3, Premium 10, Education 50, Enterprise 100, ampliado por sus featuresets); uno más es project_limit_reached, cuyo required_plan nombra el plan con espacio, ausente en Enterprise (comuníquese con soporte).
Un reintento idempotente exacto vuelve a entregar su credencial de membresía sellada durante diez minutos. La inscripción está exenta del límite.
Bajo un JWT de acceso de agente (alcance de identidad, access:manage, una concesión con acceso de identidad Manage) no se entrega token de proyecto; el proyecto se une a la concesión con Manage y todas las capacidades, y una actualización con su project_id devuelve un token para él.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (requerido, ProjectName) | Nombre de proyecto imprimible recortado. Rechaza controles, texto con apariencia de URL, @, www. y ://. minLength: 1 maxLength: 60 |
| organization_id (opcional, cadena) | minLength: 1 maxLength: 200 |
| organization_name (opcional, ProjectName) | Nombre de proyecto imprimible recortado. Rechaza controles, texto con apariencia de URL, @, www. y ://. minLength: 1 maxLength: 60 |
Plantilla y respuestas de solicitud
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/projects'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Resultado del ciclo de vida del proyecto | ProyectoCreado (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar invitaciones
Lista registros del ciclo de vida de invitaciones para el proyecto actual, excluyendo restablecimientos de inicio de sesión. Las direcciones de destinatarios son visibles para el proyecto propietario, que las suministró. Nunca se listan tokens ni URLs de credenciales.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
| kind | consulta | opcional | |
| estado | consulta | opcional | |
| cursor | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/invitations'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Lista registros del ciclo de vida de invitaciones para el proyecto actual, excluyendo restablecimientos de inicio de sesión. | Lista de invitaciones |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear invitaciones
Crea invitaciones para miembros o compradores de anuncios. La entrega por correo electrónico nunca devuelve una credencial. La entrega por enlace es solo para miembros y devuelve una URL, incluso en reintentos idempotentes exactos dentro de 24 horas. Las invitaciones por correo electrónico expiran tras siete días; los enlaces expiran tras 24 horas. Las invitaciones por correo electrónico pendientes del mismo tipo, dirección y proyecto se reutilizan.
Un miembro limitado a pantallas no invita a personas (outside_screen_scope).
Una invitación por correo electrónico project_member a una persona que sería un invitado externo de la organización del proyecto (no es su organización principal) está sujeta a la política de invitados de esa organización, y responde guest_not_allowed (403) cuando la política (allow, domains o none) no admite la dirección. Aceptar la invitación lo comprueba de nuevo.
El personal y los propios administradores de la organización están exentos. Un screen_scope en la invitación corresponde al alcance de pantallas, que incluye el plan Enterprise; un proyecto cuyo plan no lo incluye se rechaza con feature_not_in_plan (402).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| kind (requerido, cadena) | Permitido: "project_member", "ad_buyer" |
| entrega (opcional, cadena) | Permitido: "email", "link" predeterminado: "email" |
| correos electrónicos (opcional, arreglo) | |
| advertising (opcional, InvitationAdvertising) | Alcance propiedad del vendedor: al menos una pantalla o espacio publicitario. Se aceptan solo pantallas, solo espacios o ambos. |
| upload_scope (opcional, UploadScope) | Lo que un usuario de carga puede usar (docs/uploaders.md): las listas de reproducción cuyas páginas cambia y las carpetas de medios en las que sube. Las carpetas son exactamente las listadas, nunca sus subcarpetas. Un id que al escribirse no nombra ningún objeto activo del proyecto es invalid_request en su posición; una eliminación posterior deja un id muerto, que no concede nada. El alcance se lee en cada solicitud, así que un cambio se aplica a la siguiente. |
| screen_scope (opcional, ScreenScope) | Sobre qué puede actuar un miembro o agente con alcance (docs/screen-scope.md): las pantallas de las carpetas de pantallas listadas y de cada carpeta que hay dentro, y las pantallas listadas. Al menos un id en total. Un id que no nombra ninguna carpeta ni pantalla viva del proyecto cuando se escribe es invalid_request en su posición; una eliminación posterior deja un id muerto, que no concede nada. El alcance se lee en cada solicitud, así que un cambio se aplica a la siguiente. Las etiquetas nunca son alcance. |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/invitations'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Crea invitaciones para miembros o compradores de anuncios. | Invitación creada (application/json); encabezados: RateLimit-Policy, RateLimit |
| 402 | feature_not_in_plan — un alcance de pantallas necesita Enterprise, y un alcance de carga (un usuario de carga) necesita Plus; el problema nombra la función, el plan que tiene la cuenta y required_plan. Restringir un alcance de carga y quitar cualquiera de los dos alcances siempre están permitidos. | Problema (application/problem+json) |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
Revocar invitación
Revoca una invitación pendiente. Una invitación aceptada devuelve invitation_consumed. Un miembro limitado a pantallas no revoca invitaciones (outside_screen_scope).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
| id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/invitations/RESOURCE_ID/revoke'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 204 | Revoca una invitación pendiente. | sin cuerpo |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Solicitar restablecimiento de inicio de sesión
Acepta una solicitud de restablecimiento de inicio de sesión sin revelar si una persona posee la dirección.
También se encuentra a una persona cuya dirección no está verificada, como un registro de autoservicio, y completar ese restablecimiento, que su propietario debe confirmar con replace_unverified_account, da al propietario de la bandeja de entrada una cuenta nueva (una persona nueva con la credencial del restablecimiento, una organización y un proyecto nuevos) y elimina a la persona no verificada, de quien nadie había demostrado que la dirección le pertenecía.
Un enlace de restablecimiento caduca una hora después de la última solicitud. Mientras el enlace de una persona siga activo y tenga menos de un día, otra solicitud reenvía ese mismo enlace (como máximo una vez cada diez minutos) y lleva su caducidad a una hora desde la solicitud, de modo que una solicitud nunca invalida el enlace que ya está en la bandeja de entrada; si no, un enlace nuevo lo reemplaza. No hay límite por dirección.
Completar un restablecimiento elimina las demás claves de acceso de la persona (todas sus claves de acceso en un restablecimiento de contraseña), elimina la contraseña cuando la nueva credencial es una clave de acceso, descarta un cambio de correo pendiente y cierra todas las sesiones. Con o sin persona, la solicitud también reenvía como máximo diez invitaciones dirigidas al correo, y cada invitación como máximo una vez por hora.
De los diez proyectos no eliminados más recientes cuya dirección de contacto coincide, cada proyecto activo con un plan del catálogo y cuya propiedad siga pendiente desde la inscripción recibe de nuevo su invitación de inscripción, aunque haya caducado o la persona destinataria ya se haya unido como miembro ordinario.
Aceptar esa invitación de inscripción con el inicio de sesión existente completa la reclamación de propiedad; solicitar la recuperación por sí solo no cambia la propiedad ni las credenciales. Las invitaciones por correo pendientes para miembros y compradores de anuncios de proyectos activos con un plan del catálogo, y las invitaciones pendientes para administradores de organizaciones activas, ocupan las plazas restantes, de la más reciente a la más antigua.
Una invitación reenviada conserva su ID y recibe un enlace y una fecha de caducidad nuevos; el enlace anterior deja de funcionar y el número de invitaciones pendientes del proyecto no cambia. Una invitación de inscripción caducada vuelve como una invitación nueva que ocupa de nuevo una plaza, por lo que el contador aumenta en uno; se omite si el proyecto está lleno.
No se reenvían otras invitaciones caducadas, ni las revocadas, aceptadas o compartidas mediante enlace.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| correo electrónico (requerido, cadena) | minLength: 3 maxLength: 254 formato: "email" |
Plantilla y respuestas de solicitud
curl --request POST --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/sign-in-resets'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 202 | Acepta una solicitud de restablecimiento de inicio de sesión sin revelar si una persona posee la dirección. | SignInResetAccepted (application/json); encabezados: RateLimit-Policy, RateLimit |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
Registrar CLI
Crea un nuevo proyecto y su primer agente mediante inscripción explícita con CLI agrupada, incluso si la dirección de contacto ya pertenece a una persona o proyecto. El correo de contacto permanece sin verificar y no otorga autoridad; direcciones malformadas devuelven invalid_request.
Encola una invitación de inscripción en la misma transacción. project_name es opcional; si se omite, se usa un nombre legible de dos palabras. La repetición idempotente exacta precede a los límites de frecuencia. Persista la credencial permanente antes de informar el éxito; su sobre de repetición expira en issuance_expires_at y los reintentos posteriores devuelven credential_issuance_expired.
El registro de idempotencia dura 24 horas.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| credential_format (opcional, cadena) | Debe ser oauth, que responde con el par JWT del agente (CLIEnrollmentOAuth). legacy, o omitirlo, responde 410 client_update_required, porque los portadores permanentes heredados están retirados. Un servidor que no emite JWT de agente responde not_ready. Permitidos: "oauth", "legacy" |
| intent (opcional, cadena) | Propósito de inscripción opcional. Omitir o signage mantiene screens=true, advertiser=false. advertising establece advertiser=true, screens=false y nunca cambia la asignación del plan de facturación. Permitidos: "signage", "advertising" |
| client_id (requerido, cadena) | Identidad de instalación anónima estable generada a partir de 32 bytes CSPRNG y persistida antes de la primera solicitud. Es material para limitar la tasa, no una credencial de proyecto. patrón: "^cli_[A-Za-z0-9_-]{43}$" |
| correo electrónico (opcional, cadena) | Dirección de contacto del proyecto no verificada. Se requiere exactamente uno entre correo electrónico o agentid_claim. La inscripción siempre crea un nuevo proyecto y pone en cola su invitación; una dirección sola no otorga autoridad. minLength: 3 maxLength: 254 formato: "email" |
| agentid_claim (opcional, cadena) | Código de reclamación AgentID de un solo uso desde la página de inicio de sesión AgentID. Se requiere exactamente uno de email o agentid_claim. La dirección verificada del propietario de AgentID se convierte en el contacto del proyecto y destinatario de la invitación. patrón: "^agid_[A-Za-z0-9_-]{43}$" |
| beta_key (opcional, cadena) | Requerido cuando el servidor tiene una clave beta de inscripción configurada. Omitir cuando el servidor no restringe la inscripción. |
| nombre (opcional, cadena) | predeterminado: "Agente" minLength: 1 maxLength: 80 |
| agent_type (opcional, cadena) | predeterminado: "cli" patrón: "^[A-Za-z0-9][A-Za-z0-9._-]{0,31}$" |
| plataforma (opcional, cadena) | maxLength: 80 |
| version (opcional, cadena) | maxLength: 40 |
| install_source (opcional, cadena) | Opcional. Desde dónde se instaló la integración: el host y, después de una barra, el marketplace (claude/screenrig, codex/screenrig, grok/screenrig), o un host solo, como npm. Lo informa el software, no una persona, por lo que un valor ausente o con forma incorrecta se ignora y nunca hace fallar la inscripción. Solo cuenta de dónde vinieron las instalaciones y no concede nada. pattern: "^[a-z][a-z0-9-]{0,31}(/[a-z0-9][a-z0-9._-]{0,63})?$" |
| project_name (opcional, ProjectName) | Nombre de proyecto imprimible recortado. Rechaza controles, texto con apariencia de URL, @, www. y ://. minLength: 1 maxLength: 60 |
| setup_code (opcional, cadena) | Código de configuración opcional que la persona copió del sitio web junto con el prompt de configuración (dos grupos de cuatro letras y dígitos, sin distinguir mayúsculas ni guion). Vincula el proyecto nuevo con esa visita al sitio; un código desconocido o caducado se ignora y nunca hace fallar el registro. No concede nada. pattern: "^[0-9A-Za-z]{4}-?[0-9A-Za-z]{4}$" |
| organización (opcional, ProjectName) | Nombre de proyecto imprimible recortado. Rechaza controles, texto con apariencia de URL, @, www. y ://. minLength: 1 maxLength: 60 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/enrollments'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Nuevo proyecto y credencial bearer permanente. El proyecto lleva la dirección de contacto no verificada en su forma suministrada recortada. Persista y verifique el token antes de informar éxito de inscripción. La credencial no tiene expiración programada pero su sobre de entrega exacta cifrada existe solo hasta issuance_expires_at. | CLIEnrollmentOAuth (application/json); encabezados: Cache-Control, RateLimit-Policy, RateLimit |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 409 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 410 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| 500 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Iniciar ID de agente Iniciar sesión
Inicia un inicio de sesión de navegador AgentID (OIDC) en el host API derivado del origen público en tiempo de ejecución (https://play.<domain> -> https://api.<domain>). Establece una cookie de enlace de un solo uso y redirige al punto de autorización AgentID con PKCE S256. Responde solo en el host API.
Mientras la parte confiable no tiene id de cliente ni secreto, la ruta muestra una página simple de no disponible con 503.
Plantilla y respuestas de solicitud
curl --request GET 'https://api.screenrig.ai/agentid/start'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 302 | Redirigir al punto de autorización AgentID. | sin cuerpo |
| 503 | Inicio de sesión con AgentID no disponible. | cadena (text/html) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Completar inicio de sesión Agent ID
Completa un inicio de sesión AgentID en navegador en el host API. Requiere iss igual al emisor configurado, la cookie de enlace y una transacción de un solo uso no expirada.
Intercambia el código con client_secret_basic y PKCE, verifica el id_token ES256 (iss, aud, exp con desviación de 60 s, nonce) contra el JWKS en caché, llama a userinfo y aplica las reglas del propietario, luego muestra una página de código de reclamación de un solo uso. Un sujeto ya vinculado a un agente muestra la página ya inscrita.
Esta ruta nunca crea un proyecto, identidad o invitación.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| código | consulta | opcional | |
| estado | consulta | opcional | |
| iss | consulta | opcional | |
| error | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET 'https://api.screenrig.ai/agentid/callback'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Página de código de reclamación AgentID de un solo uso con pasos para instalar el complemento. | cadena (text/html) |
| 409 | El sujeto AgentID ya está inscrito. | cadena (text/html) |
| 503 | Inicio de sesión con AgentID no disponible. | cadena (text/html) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener proyecto
El proyecto que llama. No debita el medidor API de 1 crédito, por lo que un proyecto con saldo cero aún puede leer el saldo restante y recuperarse. Después de un principal de proyecto exitoso, las respuestas JSON autenticadas /api y de problemas incluyen ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset y ScreenRig-Credits-Included como créditos enteros.
SSE, runtime, contenido y respuestas no autenticadas los omiten.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Proyecto | Proyecto (application/json); encabezados: ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset, ScreenRig-Credits-Included, ScreenRig-Credits-Low |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Actualizar proyecto
Renombra el proyecto actual. Los nombres contienen de 1 a 60 caracteres imprimibles y no texto con apariencia de URL.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| project_id (opcional, cadena) | ID de proyecto esperado. El servidor rechaza la acción si la credencial actual o la sesión de cookie apunta a otro proyecto; los clientes de navegador envían el ID del proyecto de la página. minLength: 1 maxLength: 200 |
| nombre (requerido, ProjectName) | Nombre de proyecto imprimible recortado. Rechaza controles, texto con apariencia de URL, @, www. y ://. minLength: 1 maxLength: 60 |
Plantilla y respuestas de solicitud
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Renombra el proyecto actual. | Proyecto (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Eliminar agente de proyecto
Solo el propietario del proyecto o un administrador de su organización puede eliminarlo; cualquier otro llamante es rechazado con forbidden. Una persona también debe ser miembro del proyecto.
Un agente necesita la capacidad de proyecto de membresía objetivo y elimina para su persona responsable, que debe ser el propietario o un administrador de la organización; un agente sin persona responsable no puede eliminar, excepto el agente que inscribió el proyecto mientras nadie ha aceptado su inscripción.
También requiere el nombre y la revisión actuales, cero pantallas no archivadas, sin crédito, reservas ni deuda en su propia billetera y sin publicidad en vivo. Un saldo negativo acumulado bajo términos gratuitos o de lanzamiento no bloquea; la eliminación lo cancela con una entrada de libro mayor project_delete_writeoff. Encola avisos para miembros y usa la lápida irreversible.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| project_id (opcional, cadena) | ID de proyecto esperado. El servidor rechaza la acción si la credencial actual o la sesión de cookie apunta a otro proyecto; los clientes de navegador envían el ID del proyecto de la página. minLength: 1 maxLength: 200 |
| empty_only (opcional, booleano) | Requiere un proyecto Screens vacío en la transacción de eliminación, incluyendo contenido, otros agentes o miembros, trabajo y correspondencia. La CLI además requiere su procedencia de inscripción guardada antes de usar esta protección de limpieza. La omisión mantiene la eliminación explícita de miembros. |
| nombre (requerido, ProjectName) | Nombre de proyecto imprimible recortado. Rechaza controles, texto con apariencia de URL, @, www. y ://. minLength: 1 maxLength: 60 |
| revisión (requerida, entero) | mínimo: 1 |
Plantilla y respuestas de solicitud
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado del ciclo de vida del proyecto | Proyecto eliminado (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener capacidades de proyecto
El plan del proyecto que llama, indicadores independientes de anunciante/pantallas con su revisión, el conjunto de capacidades efectivas derivadas, las funciones del plan que tiene (plan_features) y sus límites (limits). Nunca refleja una reclamación del cliente; un plan desconocido falla cerrado como prohibido.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project/capabilities'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Capacidades del proyecto. | ProjectCapabilities (application/json); headers: Cache-Control |
| 403 | prohibido: el plan del proyecto no está en el catálogo. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar la auditoría de la organización
El registro de auditoría propio de la organización: los cambios en sus administradores, dominios y ajustes de facturación, con las mismas entradas, filtros y formatos que GET /api/audit. Requiere un administrador de la organización. Forma parte del registro de auditoría, que incluye el plan Enterprise; una organización cuyo plan no lo incluye se rechaza con feature_not_in_plan (402).
Todos los planes registran sus cambios.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| actor | consulta | opcional | |
| actor_kind | consulta | opcional | |
| origen | consulta | opcional | |
| acción | consulta | opcional | |
| desde | consulta | opcional | |
| hasta | consulta | opcional | |
| cursor | consulta | opcional | |
| límite | consulta | opcional | |
| formato | consulta | opcional | json (por defecto) devuelve el informe como JSON. csv, xlsx y pdf devuelven las mismas filas como archivo adjunto (cada página de un informe paginado, hasta 50000 filas). |
Plantilla y respuestas de solicitud
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/audit'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Una página de entradas, o el registro filtrado como archivo. | AuditList (application/json), string (text/csv), string (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet), string (application/pdf) |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — El registro de auditoría forma parte del plan Enterprise; el problema nombra la función, el plan que tiene la cuenta y required_plan. | Problema (application/problem+json) |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar notificaciones de la organización
Las notificaciones de la organización, de todos los canales, de la más antigua a la más reciente (máximo 50).
Una notificación pertenece a la organización y cubre todos sus proyectos, incluidos los añadidos después (project_ids ausente), o los proyectos elegidos (project_ids); actúa sobre las pantallas, fuentes, campañas y tarjetas de esos proyectos exactamente igual que una notificación de proyecto. status es failing mientras lo estén las entregas de cualquier proyecto cubierto, y failing_since, last_success_at y last_failure_at integran las de los proyectos cubiertos (el inicio de fallo más antiguo, el último éxito y el último fallo).
El secreto de firma de un webhook nunca se devuelve aquí. Requiere un administrador de la organización; para cualquier otra persona es not_found.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Las notificaciones de la organización. | OrganizationNotificationList (application/json) |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear notificación de la organización
Crea una notificación de la organización, con los miembros de POST /api/notifications y los proyectos que cubre: project_ids ausente o null cubre todos los proyectos de la organización (los que tiene y los que reciba), una lista cubre exactamente esos, cada uno un proyecto activo de esta organización (invalid_request en caso contrario).
Los destinatarios de una notificación por correo electrónico son owner (el propietario de cada proyecto cubierto), o user_ids de personas de la organización (sus administradores y miembros de la organización) o de miembros de un proyecto cubierto; cada proyecto sigue enviando correo solo a las personas que son miembros de él.
Una organización tiene como máximo 50 notificaciones, sin contar las predeterminadas que crea el sistema (notification_limit_reached). Las mismas funciones del plan restringen los canales, reglas y condiciones que en las rutas de proyecto, evaluadas según el plan de la organización. Cada proyecto cubierto recibe notification.created, y el cambio queda registrado en el registro de auditoría de la organización.
El secreto de firma de un webhook se devuelve solo en esta respuesta y en rotate-secret; un único secreto firma las entregas de todos los proyectos cubiertos. Un reintento exacto con la misma Idempotency-Key devuelve esta misma respuesta, secreto incluido, durante veinticuatro horas.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| channel (obligatorio, string) | Permitidos: "email", "webhook", "slack", "teams", "pagerduty", "telegram" |
| descripción (opcional, cadena) | Un nombre para personas. maxLength: 200 |
| conditions (opcional, NotificationConditions) | |
| screen_tags (opcional, ScreenTags) | Etiquetas de selector de flota, de 0 a 16 etiquetas únicas exactas, cada una que coincide con la gramática de etiquetas de medios. En ScreenPatch el arreglo reemplaza todo el conjunto y un arreglo vacío lo borra; una etiqueta duplicada o malformada es invalid_request. Cambiar etiquetas aumenta la revisión de pantalla (If-Match la protege) y añade screen.updated con details.tags; nunca cambia la revisión del manifiesto. Las etiquetas nunca están en el manifiesto en tiempo de ejecución ni en la autorización. |
| audience (opcional, CampaignAudience) | Qué pantallas selecciona una campaña: exactamente uno de all (coinciden todas las reglas), any (coincide al menos una), tag (la pantalla lleva la etiqueta), screen_id (esa pantalla) o folder (las pantallas de esa carpeta de pantallas y de cada carpeta que contiene, GET /api/screen-folders; la carpeta debe existir). Las reglas se anidan hasta 3 niveles como máximo y una audiencia tiene como máximo 500 reglas. {"all": []} es cada pantalla del proyecto; en los demás casos all y any listan al menos una regla. |
| min_severity (opcional, NotificationSeverity) | La gravedad de un aviso, de la menos grave a la más grave. Un aviso abierto tiene la gravedad de su condición: error para screen_offline y warning para cualquier otra condición, salvo que la severity de la notificación indique otra cosa. Un aviso resuelto y una prueba son info. Permitidos: "info", "warning", "error" |
| severity (opcional, NotificationSeverityOverrides) | Condición a gravedad para esta notificación, como {"not_playing": "error"}. Cuenta para min_severity y es la gravedad que Teams y PagerDuty muestran para la condición. Una condición que no figura conserva su valor predeterminado. En un patch, un objeto vacío, como null, borra todas las anulaciones. |
| active_hours (opcional, NotificationActiveHours) | Cuándo se envían los avisos abiertos: las ventanas (screenrig.schedule/v1), leídas en timezone. Un aviso que vence mientras están cerradas espera a la siguiente apertura (outside hold, el valor predeterminado) y se envía entonces si su condición sigue vigente, de modo que una condición que se despeja antes no envía nada, o se omite (outside drop; last_error outside_hours). Un aviso resuelto de un aviso abierto que se envió siempre se envía, dentro del horario o no, y una prueba lo ignora. crashing se retiene o se descarta como cualquier otra condición. El horario juzga un aviso cuando sale por primera vez; uno fallido se reintenta según el calendario habitual, sea cual sea el horario. Añadir, cambiar o quitar el horario vuelve a juzgar de inmediato los avisos retenidos por el anterior. |
| reach_drop (optional, NotificationReachDrop) | La menor caída en el alcance de una campaña por la que se envía un aviso reach_dropped: screens es el menor número de pantallas perdidas (1 de forma predeterminada) y percent, si se define, la menor proporción de las pantallas que la campaña alcanzaba cuando se publicó; una caída debe cumplir ambos. Una caída menor no pone en cola ningún aviso, y un aviso en cola cuya caída se redujo por debajo del umbral cuando le toca enviarse se omite (condition_cleared). Solo con la condición reach_dropped; en una notificación sin ella, invalid_request. |
| hold_minutes (opcional, integer) | Cuánto tiempo debe durar una condición antes de notificar. crashing nunca se retiene. default: 10 minimum: 0 maximum: 1440 |
| recipients (opcional, NotificationRecipients) | Solo correo electrónico. owner (quien sea propietario del proyecto cuando se envía un aviso) o el user_id de una persona que es miembro del proyecto; un user_id que no corresponde a un miembro devuelve invalid_request. A cada uno se le envía un correo electrónico a su dirección verificada. Se omite a quien haya dejado el proyecto desde entonces o no tenga una dirección verificada. |
| url (opcional, cadena) | Solo webhook: URL https en un host público de Internet, puerto 443 (el predeterminado) u 8443. Sin userinfo ni fragmento. maxLength: 2048 format: "uri" |
| event_types (opcional, NotificationEventTypes) | Solo webhook. Eventos del proyecto que además se envían por POST a medida que ocurren, exactamente como los envía un webhook: tipos exactos, como screen.online, o prefijos que terminan en .*, como screen.*. notification.test nunca se distribuye. |
| destination (opcional, NotificationDestination) | Solo Slack, Teams, PagerDuty y Telegram; obligatorio para ellos. La credencial con la forma que emite el servicio: slack, la URL del webhook entrante (hooks.slack.com); teams, la URL del webhook de Workflows (logic.azure.com o powerplatform.com; las URL de conector de Office 365 están retiradas); pagerduty, la clave de enrutamiento de Events API v2 de 32 caracteres; telegram, el token del bot. Otra forma da notification_destination_rejected. Se sella, nunca se devuelve y en las lecturas solo aparece como destination_hint. minLength: 1 maxLength: 2048 |
| telegram_chat_id (opcional, NotificationTelegramChat) | Solo Telegram; obligatorio para él. El chat en el que publicar: su id numérico (negativo para un grupo o canal) o @channelname. No es una credencial. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$" |
| habilitado (opcional, booleano) | predeterminado: true |
| project_ids (opcional, en línea) | Los proyectos que cubre la notificación; null o ausente cubre todos los proyectos de la organización. |
Plantilla y respuestas de solicitud
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/notifications'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creada. El secreto de un webhook se muestra solo aquí y en rotate-secret. | Notification (application/json); encabezados: Cache-Control |
| 400 | invalid_request, webhook_url_rejected o notification_destination_rejected. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — como en POST /api/notifications, para el plan de la organización. | Problema (application/problem+json) |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 409 | notification_limit_reached o idempotency_mismatch. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener notificación de la organización
Una notificación de la organización, tal como la muestra GET /api/organizations/{org_id}/notifications.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Una notificación. | Notification (application/json); encabezados: ETag |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Actualizar notificación de la organización
Cambia los mismos miembros que PATCH /api/notifications/{id}, en la notificación y en cada proyecto cubierto, y project_ids: ausente deja los proyectos, null cubre todos los proyectos, una lista cubre exactamente esos. Un proyecto que gana la notificación empieza desde su evento actual (no se envía nada anterior); a uno que la pierde se le elimina la notificación.
Cada proyecto cubierto recibe notification.updated, y el cambio queda registrado en el registro de auditoría de la organización.
Un cambio que hace que la notificación cubra un proyecto que hoy no cubre se somete a la misma verificación que la creación de la notificación tal como quedará (su canal, reglas y condiciones de pantalla, según el plan de la organización); cubrir menos proyectos nunca se verifica, y pasar de una lista a todos los proyectos siempre cubre más. If-Match protege la revisión.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| id | ruta | requerido | |
| If-Match | encabezado | opcional | Revisión positiva opcional de recurso. Omitir para escribir el recurso actual; una revisión obsoleta suministrada es revision_conflict. |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| descripción (opcional, cadena) | Una cadena vacía borra la descripción. maxLength: 200 |
| conditions (opcional, NotificationConditions) | |
| screen_tags (opcional, ScreenTags) | Etiquetas de selector de flota, de 0 a 16 etiquetas únicas exactas, cada una que coincide con la gramática de etiquetas de medios. En ScreenPatch el arreglo reemplaza todo el conjunto y un arreglo vacío lo borra; una etiqueta duplicada o malformada es invalid_request. Cambiar etiquetas aumenta la revisión de pantalla (If-Match la protege) y añade screen.updated con details.tags; nunca cambia la revisión del manifiesto. Las etiquetas nunca están en el manifiesto en tiempo de ejecución ni en la autorización. |
| audience (opcional, en línea) | Como en NotificationPatch. |
| min_severity (opcional, en línea) | Como en NotificationPatch. |
| severity (opcional, en línea) | Reemplaza todas las anulaciones; null o un objeto vacío las borra. |
| active_hours (opcional, en línea) | Reemplaza el horario; null lo borra. |
| reach_drop (optional, inline) | Reemplaza el umbral; null lo borra. |
| hold_minutes (opcional, integer) | minimum: 0 maximum: 1440 |
| recipients (opcional, NotificationRecipients) | Solo correo electrónico. owner (quien sea propietario del proyecto cuando se envía un aviso) o el user_id de una persona que es miembro del proyecto; un user_id que no corresponde a un miembro devuelve invalid_request. A cada uno se le envía un correo electrónico a su dirección verificada. Se omite a quien haya dejado el proyecto desde entonces o no tenga una dirección verificada. |
| url (opcional, cadena) | maxLength: 2048 formato: "uri" |
| event_types (opcional, NotificationEventTypes) | Solo webhook. Eventos del proyecto que además se envían por POST a medida que ocurren, exactamente como los envía un webhook: tipos exactos, como screen.online, o prefijos que terminan en .*, como screen.*. notification.test nunca se distribuye. |
| destination (opcional, NotificationDestination) | Solo Slack, Teams, PagerDuty y Telegram; obligatorio para ellos. La credencial con la forma que emite el servicio: slack, la URL del webhook entrante (hooks.slack.com); teams, la URL del webhook de Workflows (logic.azure.com o powerplatform.com; las URL de conector de Office 365 están retiradas); pagerduty, la clave de enrutamiento de Events API v2 de 32 caracteres; telegram, el token del bot. Otra forma da notification_destination_rejected. Se sella, nunca se devuelve y en las lecturas solo aparece como destination_hint. minLength: 1 maxLength: 2048 |
| telegram_chat_id (opcional, NotificationTelegramChat) | Solo Telegram; obligatorio para él. El chat en el que publicar: su id numérico (negativo para un grupo o canal) o @channelname. No es una credencial. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$" |
| habilitado (opcional, booleano) | |
| snoozed_until (opcional, inline) | No se envía nada hasta este instante, que puede estar como máximo 30 días en el futuro; null finaliza la pausa. |
| project_ids (opcional, en línea) | Ausente deja los proyectos que cubre la notificación, null cubre todos los proyectos de la organización, una lista cubre exactamente esos proyectos. |
Plantilla y respuestas de solicitud
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Notificación actualizada. | Notification (application/json); encabezados: ETag |
| 400 | invalid_request, webhook_url_rejected o notification_destination_rejected. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — como en PATCH /api/notifications/{id}, para el plan de la organización. | Problema (application/problem+json) |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 412 | revision_conflict: If-Match está obsoleto; current_revision del error contiene la revisión actual. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Eliminar notificación de la organización
Elimina la notificación de todos los proyectos que cubre, con notification.deleted en cada uno, y la registra en el registro de auditoría de la organización. Los avisos pendientes se marcan como fallidos con webhook_deleted.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| id | ruta | requerido | |
| If-Match | encabezado | opcional | Revisión positiva opcional de recurso. Omitir para escribir el recurso actual; una revisión obsoleta suministrada es revision_conflict. |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Plantilla y respuestas de solicitud
curl --request DELETE --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 204 | Eliminado. | sin cuerpo; encabezados: Cache-Control |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 412 | revision_conflict: If-Match está obsoleto; current_revision del error contiene la revisión actual. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Rotar secreto de la notificación de la organización
Solo notificaciones de webhook (cualquier otro canal es invalid_request). Reemplaza el secreto de firma en todos los proyectos cubiertos a la vez, de modo que un receptor sigue verificando un solo secreto, y devuelve la notificación con el nuevo en secret.
Como en POST /api/notifications/{id}/rotate-secret, como máximo un intento por proyecto que ya está en vuelo todavía puede llegar firmado con el secreto anterior. Un reintento exacto con la misma Idempotency-Key devuelve el mismo secreto nuevo durante veinticuatro horas.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| id | ruta | requerido | |
| If-Match | encabezado | opcional | Revisión positiva opcional de recurso. Omitir para escribir el recurso actual; una revisión obsoleta suministrada es revision_conflict. |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Plantilla y respuestas de solicitud
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/rotate-secret'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | La notificación y su secreto nuevo. | Notification (application/json); encabezados: Cache-Control |
| 400 | invalid_request: la notificación no es un webhook. | Problema (application/problem+json) |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 412 | revision_conflict: If-Match está obsoleto; current_revision del error contiene la revisión actual. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Probar notificación de la organización
Envía un notification.test a través del primer proyecto que cubre la notificación (por id de proyecto), igual que POST /api/notifications/{id}/test lo envía a través de su proyecto: una entrega, cuyo resultado muestra la lista de entregas, intentada una sola vez.
Todos los proyectos cubiertos tienen el mismo receptor, destino y secreto, así que una prueba basta para comprobar el canal; el correo electrónico de una prueba va a los destinatarios de ese proyecto. Una notificación que no cubre ningún proyecto es invalid_request.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Plantilla y respuestas de solicitud
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/test'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 202 | La entrega de prueba en cola. | NotificationDelivery (application/json); encabezados: RateLimit-Policy, RateLimit |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar entregas de notificaciones de la organización
Los registros de entregas de todos los proyectos que cubre la notificación, en una sola lista, con las filas más recientes primero según cuándo se puso en cola cada una. Cada fila nombra su proyecto (project_id), y su id abre GET .../deliveries/{delivery_id}/attempts. Pase next_cursor de vuelta como antes para la página siguiente.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| id | ruta | requerido | |
| before | consulta | opcional | next_cursor de la página anterior de entregas. |
| límite | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/deliveries'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Una página de entregas. | NotificationDeliveryList (application/json) |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar intentos de entrega de notificaciones de la organización
Los intentos de una entrega, de los más recientes a los más antiguos, hasta los 20 más recientes. Una entrega que no es de esta notificación es not_found.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| id | ruta | requerido | |
| delivery_id | ruta | requerido | El id de una de las entregas del webhook. |
Plantilla y respuestas de solicitud
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/deliveries/DELIVERY_ID/attempts'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Los intentos mantenidos de la entrega. | NotificationDeliveryAttemptList (application/json) |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Volver a suscribir a una persona a una notificación de la organización
Vuelve a enviar los correos de una notificación por correo electrónico a una persona que los detuvo con el enlace para cancelar la suscripción de su correo, en todos los proyectos que cubre la notificación (el enlace la detiene en todos). Idempotente: una persona que no está detenida no cambia nada, y la respuesta es la notificación tal como es.
Un cambio incrementa la revisión y agrega notification.updated con los detalles change resubscribed, user_id y via api a cada proyecto cubierto.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| id | ruta | requerido | |
| user_id | ruta | requerido | El user_id de una persona de la lista unsubscribed de la notificación. |
Plantilla y respuestas de solicitud
curl --request DELETE --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/unsubscribed/USER_ID'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | La notificación, sin la persona en unsubscribed. | Notification (application/json); encabezados: ETag |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar los tipos de informe en un proyecto
Lista los tipos de informe que construye GET /api/reports/{kind}, con los filtros de cada uno, y los formatos en que se escribe un informe. Requiere la capacidad de informes.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/reports'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Los tipos de informe. | ReportCatalog (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar las suscripciones a informes en un proyecto
Lista los informes programados del proyecto, del más antiguo al más reciente (como máximo 50), cada uno con su próximo envío y el resultado del último. Requiere la capacidad del proyecto.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/report-subscriptions'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Las suscripciones a informes del proyecto. | ReportSubscriptionList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear suscripción a un informe en un proyecto
Programa el envío de un informe por correo, como adjunto PDF, XLSX o CSV, cada día, semana o mes a una hora en una zona horaria.
Cada envío cubre el periodo anterior, en días UTC: el día anterior, los siete días anteriores o el mes pasado. recipients son miembros del proyecto, indicados por user_id o por la dirección de correo del miembro; cualquier otra persona se rechaza, así que una suscripción nunca sirve para escribir a un extraño, y un miembro que se va deja de recibirla.
Una ejecución fallida se reintenta y aparece con last_status failed y last_error. Como máximo 50 por organización en todos sus proyectos (report_subscription_limit_reached).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (requerido, cadena) | minLength: 1 maxLength: 100 |
| kind (requerido, cadena) | Valores permitidos: "fleet_health", "uptime", "publishing", "alerts", "alert_log", "proof_of_play" |
| filters (opcional, objeto) | Los filtros del informe distintos de los días (GET /api/reports los lista). |
| schedule (requerido, ReportSchedule) | |
| format (requerido, cadena) | Valores permitidos: "pdf", "xlsx", "csv" |
| recipients (requerido, arreglo) | user_id o dirección de correo de miembros del proyecto. |
| habilitado (opcional, booleano) | predeterminado: true |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/report-subscriptions'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creado. | ReportSubscription (application/json); encabezados: ETag |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — Los informes forman parte de Plus. El problema nombra la función, el plan del proyecto y required_plan. | Problema (application/problem+json) |
| 409 | report_subscription_limit_reached. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar tarjetas en proyecto
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| proyecto | consulta | opcional | |
| después | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/cards'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Recurso de tarjeta | objeto (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear tarjeta de proyecto
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| tipo (requerido, cadena) | |
| mayor (opcional, entero) | mínimo: 1 |
| params (requerido, objeto) | |
| datos (opcional, objeto) |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/cards'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Recurso de tarjeta | Instancia de tarjeta (application/json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear un portal para una organización
Requiere un administrador designado de una organización activa, autenticación por cookie del mismo origen exacto y CSRF de JWT. El actor y la URL de retorno los controla el servidor. La respuesta es privada y no-store. También está abierto a una organización delegada en un revendedor, para su tarjeta y sus facturas pasadas.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/billing/portal-sessions'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Resultado de la gestión de facturación. | BillingPortalSession (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Establecer la recarga automática de una organización
Requiere un administrador designado de una organización activa, autenticación por cookie del mismo origen exacto y CSRF de JWT. El actor lo controla el servidor. Deshabilitar conserva los importes guardados y el gasto mensual; los campos de importe se ignoran cuando se deshabilita. La respuesta es privada y no-store. Cambiar la configuración levanta una pausa recuperable solo después de que se anule de forma segura cualquier factura por pagar fallida.
Activarlo para una organización delegada en un revendedor responde 409 billed_by_reseller; desactivarlo sigue disponible.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request PUT --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/billing/auto-top-up'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado de la gestión de facturación. | AutoTopUpView (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener los pagos de una organización
Vistas de pagos de una organización activa. Requiere la cookie de su administrador designado; la visibilidad del personal por sí sola no concede acceso a compras. Los pagos sin configurar devuelven available false. El regreso del navegador nunca concede créditos.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/payments'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Disponibilidad de pagos y compras recientes. | OrganizationPayments (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear un pago para una organización
Iniciar una compra prepagada para el administrador designado de una organización activa. Requiere autenticación mediante cookie del mismo origen y, para las sesiones JWT, un encabezado CSRF coincidente. El servidor controla la organización, el cliente, el actor y las URL de retorno. Los créditos se aplican solo cuando el servicio de facturación confirma el pago. Ante respuestas ambiguas, reintentar con la misma Idempotency-Key y el mismo importe.
Una organización delegada en un revendedor responde 409 billed_by_reseller.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| amount_cents (obligatorio, entero) | mínimo: 10000 máximo: 1000000 formato: "int64" |
Plantilla y respuestas de solicitud
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/billing/credit-checkouts'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Compra creada o repetida. La URL de pago se omite después de completarse. Las respuestas son privadas y no-store. | CreditPurchase (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener saldo de facturación de organización
La billetera de la organización. Requiere un administrador designado de la organización, un administrador del revendedor en el que está delegada la organización o una sesión de personal. No otorga membresía de proyecto.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/balance'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Saldo de facturación de organización. | Saldo de facturación (application/json); encabezados: Cache-Control |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener estado de cuenta de facturación de organización
Entradas de diario atribuidas a esta organización en el momento del cargo, con identidades de proyecto y pagador. Los movimientos no transfieren acceso histórico. Las entradas anteriores al contexto registrado de la organización permanecen en sus estados de cuenta del proyecto. Las leen las mismas personas que el saldo (getOrganizationBillingBalance).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| cursor | consulta | opcional | |
| límite | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/statement'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Estado de cuenta de facturación de organización. | Estado de cuenta de facturación (application/json); encabezados: Cache-Control |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener uso de facturación de organización
El fondo de uso de la organización y la participación de cada proyecto durante un mes UTC. Cubre el uso pagado por esta organización; los demás costos del pagador están en el estado de cuenta de la organización. Las leen las mismas personas que el saldo (getOrganizationBillingBalance).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido | |
| cursor | consulta | opcional | |
| límite | consulta | opcional | |
| periodo | consulta | opcional | Mes UTC en formato YYYY-MM; por defecto el mes actual. |
Plantilla y respuestas de solicitud
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/usage'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Uso de facturación de organización. | OrganizationBillingUsage (application/json); encabezados: Cache-Control |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Lista de organizaciones de agentes
Organizaciones visibles, incluidas las organizaciones vacías para sus administradores. Los nombres no son únicos.
Plantilla y respuestas de solicitud
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/organizations'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado de organización. | OrganizationList (application/json); encabezados: Cache-Control |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Renombrar organizaciones de agentes
Los administradores designados y agentes cuyo responsable verificado es un administrador pueden renombrar una organización. No se concede permiso ni membresía de proyecto.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| org_id | ruta | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (requerido, ProjectName) | Nombre de proyecto imprimible recortado. Rechaza controles, texto con apariencia de URL, @, www. y ://. minLength: 1 maxLength: 60 |
Plantilla y respuestas de solicitud
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/organizations/ORG_ID'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado de organización. | OrganizationView (application/json); encabezados: Cache-Control |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Establecer política de revisión del proyecto
Activa o desactiva Requerir revisión para cambios de agente. Mientras está activado, cada agente y cliente de servicio en el proyecto tiene acceso Proponer en cada solicitud, sin importar sus credenciales. Solo el propietario del proyecto o un administrador de la organización del proyecto pueden cambiarlo (prohibido para otros); las sesiones de sombra del personal no pueden modificarlo.
If-Match lleva review_policy_revision (0 permitido) y es obligatorio; un valor obsoleto es revision_conflict. Desactivarlo requiere prueba, la prueba de passkey fresca o password que usa la aprobación de conexión del agente; activarlo no. Las revisiones abiertas permanecen decidibles de cualquier modo. Añade project.review_policy_changed.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| If-Match | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| agent_changes_require_review (requerido, booleano) | |
| proof (opcional, DashboardProof) |
Plantilla y respuestas de solicitud
curl --request PUT --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project/review-policy'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | La política vigente. | ReviewPolicy (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Vista previa del agente de eliminación de proyecto en proyecto
Devuelve detalles actuales de confirmación, bloqueadores de eliminación y dispositivos archivados que serán desconectados. allowed es falso, con una razón, cuando el llamante no puede eliminar el proyecto (solo su propietario o un administrador de su organización puede; para un agente, su persona responsable) o queda un bloqueador.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| project_id | consulta | opcional | ID de proyecto esperado; se rechaza una selección cambiada. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/deletion-preview'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado del ciclo de vida del proyecto | ProjectDeletionPreview (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Transferir agente propietario del proyecto dentro del proyecto
El propietario transfiere la propiedad a un miembro existente y verificado del proyecto; esto no concede ninguna membresía nueva. La membresía del nuevo propietario deja cualquier screen_scope y upload_scope, así que el nuevo propietario accede a todo el proyecto.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| project_id (opcional, cadena) | ID de proyecto esperado. El servidor rechaza la acción si la credencial actual o la sesión de cookie apunta a otro proyecto; los clientes de navegador envían el ID del proyecto de la página. minLength: 1 maxLength: 200 |
| user_id (requerido, cadena) | minLength: 1 maxLength: 200 |
Plantilla y respuestas de solicitud
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/owner'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado del ciclo de vida del proyecto | ProjectContext (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Mover agente de proyecto en proyecto
El movimiento autorizado por el propietario transfiere la ocupación de la pantalla y el nuevo uso al pagador destino atómicamente; los cargos históricos mantienen su pagador.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| project_id (opcional, cadena) | ID de proyecto esperado. El servidor rechaza la acción si la credencial actual o la sesión de cookie apunta a otro proyecto; los clientes de navegador envían el ID del proyecto de la página. minLength: 1 maxLength: 200 |
| organization_id (requerida, cadena) | minLength: 1 maxLength: 200 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/move'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado del ciclo de vida del proyecto | ProjectContext (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Proyecto permitido mueve agente en proyecto
Lista destinos que el propietario administra o cuyo dominio verificado coincide con su correo electrónico verificado.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| project_id | consulta | opcional | ID de proyecto esperado; se rechaza una selección cambiada. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/moves'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado del ciclo de vida del proyecto | ProjectMoveDestinations (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar invitaciones en proyecto
Lista registros del ciclo de vida de invitaciones para el proyecto actual, excluyendo restablecimientos de inicio de sesión. Las direcciones de destinatarios son visibles para el proyecto propietario, que las suministró. Nunca se listan tokens ni URLs de credenciales.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| kind | consulta | opcional | |
| estado | consulta | opcional | |
| cursor | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/invitations'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Lista registros del ciclo de vida de invitaciones para el proyecto actual, excluyendo restablecimientos de inicio de sesión. | Lista de invitaciones |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear invitaciones en proyecto
Crea invitaciones para miembros o compradores de anuncios. La entrega por correo electrónico nunca devuelve una credencial. La entrega por enlace es solo para miembros y devuelve una URL, incluso en reintentos idempotentes exactos dentro de 24 horas. Las invitaciones por correo electrónico expiran tras siete días; los enlaces expiran tras 24 horas. Las invitaciones por correo electrónico pendientes del mismo tipo, dirección y proyecto se reutilizan.
Un miembro limitado a pantallas no invita a personas (outside_screen_scope).
Una invitación por correo electrónico project_member a una persona que sería un invitado externo de la organización del proyecto (no es su organización principal) está sujeta a la política de invitados de esa organización, y responde guest_not_allowed (403) cuando la política (allow, domains o none) no admite la dirección. Aceptar la invitación lo comprueba de nuevo.
El personal y los propios administradores de la organización están exentos. Un screen_scope en la invitación corresponde al alcance de pantallas, que incluye el plan Enterprise; un proyecto cuyo plan no lo incluye se rechaza con feature_not_in_plan (402).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| kind (requerido, cadena) | Permitido: "project_member", "ad_buyer" |
| entrega (opcional, cadena) | Permitido: "email", "link" predeterminado: "email" |
| correos electrónicos (opcional, arreglo) | |
| advertising (opcional, InvitationAdvertising) | Alcance propiedad del vendedor: al menos una pantalla o espacio publicitario. Se aceptan solo pantallas, solo espacios o ambos. |
| upload_scope (opcional, UploadScope) | Lo que un usuario de carga puede usar (docs/uploaders.md): las listas de reproducción cuyas páginas cambia y las carpetas de medios en las que sube. Las carpetas son exactamente las listadas, nunca sus subcarpetas. Un id que al escribirse no nombra ningún objeto activo del proyecto es invalid_request en su posición; una eliminación posterior deja un id muerto, que no concede nada. El alcance se lee en cada solicitud, así que un cambio se aplica a la siguiente. |
| screen_scope (opcional, ScreenScope) | Sobre qué puede actuar un miembro o agente con alcance (docs/screen-scope.md): las pantallas de las carpetas de pantallas listadas y de cada carpeta que hay dentro, y las pantallas listadas. Al menos un id en total. Un id que no nombra ninguna carpeta ni pantalla viva del proyecto cuando se escribe es invalid_request en su posición; una eliminación posterior deja un id muerto, que no concede nada. El alcance se lee en cada solicitud, así que un cambio se aplica a la siguiente. Las etiquetas nunca son alcance. |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/invitations'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Crea invitaciones para miembros o compradores de anuncios. | Invitación creada (application/json); encabezados: RateLimit-Policy, RateLimit |
| 402 | feature_not_in_plan — un alcance de pantallas necesita Enterprise, y un alcance de carga (un usuario de carga) necesita Plus; el problema nombra la función, el plan que tiene la cuenta y required_plan. Restringir un alcance de carga y quitar cualquiera de los dos alcances siempre están permitidos. | Problema (application/problem+json) |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
Obtener proyecto en proyecto
El proyecto que llama. No debita el medidor API de 1 crédito, por lo que un proyecto con saldo cero aún puede leer el saldo restante y recuperarse. Después de un principal de proyecto exitoso, las respuestas JSON autenticadas /api y de problemas incluyen ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset y ScreenRig-Credits-Included como créditos enteros.
SSE, runtime, contenido y respuestas no autenticadas los omiten.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Proyecto | Proyecto (application/json); encabezados: ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset, ScreenRig-Credits-Included, ScreenRig-Credits-Low |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Actualizar proyecto dentro del proyecto
Renombra el proyecto actual. Los nombres contienen de 1 a 60 caracteres imprimibles y no texto con apariencia de URL.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| project_id (opcional, cadena) | ID de proyecto esperado. El servidor rechaza la acción si la credencial actual o la sesión de cookie apunta a otro proyecto; los clientes de navegador envían el ID del proyecto de la página. minLength: 1 maxLength: 200 |
| nombre (requerido, ProjectName) | Nombre de proyecto imprimible recortado. Rechaza controles, texto con apariencia de URL, @, www. y ://. minLength: 1 maxLength: 60 |
Plantilla y respuestas de solicitud
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Renombra el proyecto actual. | Proyecto (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Eliminar agente de proyecto en proyecto
Solo el propietario del proyecto o un administrador de su organización puede eliminarlo; cualquier otro llamante es rechazado con forbidden. Una persona también debe ser miembro del proyecto.
Un agente necesita la capacidad de proyecto de membresía objetivo y elimina para su persona responsable, que debe ser el propietario o un administrador de la organización; un agente sin persona responsable no puede eliminar, excepto el agente que inscribió el proyecto mientras nadie ha aceptado su inscripción.
También requiere el nombre y la revisión actuales, cero pantallas no archivadas, sin crédito, reservas ni deuda en su propia billetera y sin publicidad en vivo. Un saldo negativo acumulado bajo términos gratuitos o de lanzamiento no bloquea; la eliminación lo cancela con una entrada de libro mayor project_delete_writeoff. Encola avisos para miembros y usa la lápida irreversible.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| project_id (opcional, cadena) | ID de proyecto esperado. El servidor rechaza la acción si la credencial actual o la sesión de cookie apunta a otro proyecto; los clientes de navegador envían el ID del proyecto de la página. minLength: 1 maxLength: 200 |
| empty_only (opcional, booleano) | Requiere un proyecto Screens vacío en la transacción de eliminación, incluyendo contenido, otros agentes o miembros, trabajo y correspondencia. La CLI además requiere su procedencia de inscripción guardada antes de usar esta protección de limpieza. La omisión mantiene la eliminación explícita de miembros. |
| nombre (requerido, ProjectName) | Nombre de proyecto imprimible recortado. Rechaza controles, texto con apariencia de URL, @, www. y ://. minLength: 1 maxLength: 60 |
| revisión (requerida, entero) | mínimo: 1 |
Plantilla y respuestas de solicitud
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado del ciclo de vida del proyecto | Proyecto eliminado (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar aplicaciones en proyecto
Lista aplicaciones, las más nuevas primero, máximo 500 por página. Los nombres son etiquetas y no necesitan ser únicos; diríjase a una aplicación por ID. next_cursor es la posición de la última fila devuelta mientras queden más filas; páselo como after, con los mismos filtros, para la siguiente página. next_cursor es nulo en la última página.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| después | consulta | opcional | next_cursor de la página anterior de la misma lista, con los mismos filtros. Omitido comienza en la fila más reciente. Un valor que no sea tal cursor es invalid_request. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/applications'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Aplicaciones | ApplicationList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Subir aplicación en proyecto
Transmite un tar.gz producido por CLI directamente a un almacenamiento duradero limitado. Los metadatos se llevan en los encabezados para que el archivo nunca se codifique en base64 ni se materialice como JSON por el servidor.
El proxy frente a la API termina una solicitud que no ha respondido en unos 100 s, por lo que un archivo grande en una subida lenta falla aquí; POST /api/applications/uploads envía el archivo directamente al almacén de objetos.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | requerido | |
| ScreenRig-Archive-SHA256 | encabezado | requerido | |
| ScreenRig-Expanded-Bytes | encabezado | requerido | |
| ScreenRig-File-Count | encabezado | requerido | |
| ScreenRig-SDK-Version | encabezado | opcional | |
| ScreenRig-Application-Name | encabezado | opcional | Nombre de aplicación ASCII; mutuamente exclusivo con ScreenRig-Application-Name*. Se recortan espacios en blanco al inicio y al final. Se rechazan valores de encabezado duplicados y de control. El nombre decodificado está limitado a 120 valores escalares Unicode. |
| ScreenRig-Application-Name* | encabezado | opcional | Nombre de aplicación Unicode codificado como RFC 8187 UTF-8'' seguido de bytes UTF-8 codificados en porcentaje (idioma vacío, conjunto de caracteres UTF-8 exacto). Mutuamente exclusivo con ScreenRig-Application-Name. Se rechazan escapes inválidos, UTF-8 inválido, controles y valores duplicados en encabezados. Se recortan los espacios en blanco al inicio y al final; el nombre decodificado está limitado a 120 valores escalares Unicode. Ningún encabezado de nombre puede renombrar una actualización de versión. Esto evita Unicode sin procesar en los valores de encabezado HTTP. |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'ScreenRig-Archive-SHA256: VALUE' --header 'ScreenRig-Expanded-Bytes: VALUE' --header 'ScreenRig-File-Count: VALUE' --header 'Content-Type: application/gzip' --data-binary '@request.bin' 'https://api.screenrig.ai/api/projects/PROJECT_ID/applications'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 202 | Archivo subido aceptado | Operación aceptada (application/json); encabezados: RateLimit-Policy, RateLimit |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear carga de aplicación en proyecto
Declara una carga directa de un tar.gz producido por la CLI que crea una nueva aplicación. La respuesta es una autorización firmada para exactamente un PUT de objeto del archivo, por lo que los bytes van directamente al almacén de objetos y nunca pasan por la API, cuyo proxy termina una solicitud que no ha respondido en unos 100 s.
Envíe el archivo con PUT a upload_url, luego confirme con POST /api/applications/uploads/{id}/commit y espere la operación. La aplicación, su versión y la operación receptora existen desde esta respuesta, como después de POST /api/applications. Una carga no confirmada en 24 horas falla, y una aplicación que nunca publicó una versión se elimina.
La misma Idempotency-Key y el mismo cuerpo devuelven la misma carga con una URL recién firmada. GET /api/capabilities establece features.application_direct_uploads donde se sirven estas rutas.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (opcional, cadena) | Nombre de una nueva aplicación, recortado; como máximo 120 caracteres Unicode y sin controles. Omitido o vacío selecciona un nombre generado. Una declaración de versión (POST /api/applications/{id}/uploads) no debe llevar uno. maxLength: 120 |
| sha256 (obligatorio, cadena) | SHA-256 de los bytes del archivo. pattern: "^[0-9a-f]{64}$" |
| compressed_bytes (requerido, entero) | Tamaño del archivo en bytes. mínimo: 1 máximo: 104857600 |
| expanded_bytes (requerido, entero) | mínimo: 1 máximo: 262144000 |
| file_count (requerido, entero) | mínimo: 1 máximo: 5000 |
| sdk_version (opcional, cadena) | maxLength: 64 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/applications/uploads'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Autorización firmada para exactamente un PUT de objeto del archivo. Envíe el método devuelto y cada encabezado devuelto textualmente; el PUT debe comenzar antes de expires_at, dos horas después de la declaración. | ApplicationUploadSession (application/json); encabezados: Cache-Control, RateLimit-Policy, RateLimit |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar playlists V2 en proyecto
Lista de listas de reproducción versionadas que puede exponer páginas de espacios publicitarios. La lista v1 rechaza una página que contiene un documento con anuncios con version_required en lugar de filtrarla.
Páginas como listPlaylists, las más nuevas primero, máximo 200 por página y menos una vez que una página contiene 8 MiB de listas de reproducción almacenadas. next_cursor es la posición de la última fila devuelta mientras quedan más filas; páselo como after, con los mismos filtros, para la siguiente página. next_cursor es null en la última página. library=true enumera en su lugar las listas de reproducción de la Biblioteca de la organización (solo lectura; prográmelas o cree otras a partir de sus plantillas).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| library | consulta | opcional | true enumera el proyecto Biblioteca de la organización en lugar de este proyecto: sus elementos son de solo lectura aquí y llevan library true. Una organización sin Biblioteca, o el propio proyecto Biblioteca, no enumera nada con true. |
| después | consulta | opcional | next_cursor de la página anterior de la misma lista, con los mismos filtros. Omitido comienza en la fila más reciente. Un valor que no sea tal cursor es invalid_request. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playlists'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Listas de reproducción con la unión de la página de espacio publicitario. | PlaylistV2List (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear lista de reproducción V2 en proyecto
Entrada de creación para la unión de páginas de espacio publicitario. Como máximo 16 páginas de espacio publicitario, al menos una página ordinaria sin visibilidad, y la reutilización de una definición de espacio en diferentes páginas siguen siendo verificaciones del servidor. La resolución de referencias y DNS siguen siendo verificaciones del servidor.
Una escritura que contiene una página iframe que el Player web no puede encuadrar se guarda de todos modos; la respuesta incluye advertencias (PlaylistWarning) y el registro del proyecto recibe un evento playlist.iframe_framing_refused por cada página.
Una escritura cuyo src de iframe, fallback_src o params de aplicación leen un token de pantalla ({screen.field.NAME} y los demás de los esquemas de primitivas) que le falta a una pantalla que muestra la lista de reproducción también responde con una advertencia screen_fact_missing que nombra las primeras 20 pantallas de ese tipo; los manifiestos de esas pantallas omiten esa primitiva.
Un src o fallback_src de iframe que sea un enlace de Google Slides, Docs o Sheets (compartir, Publicar en la web o insertar) o un enlace Embed de Microsoft 365 OneDrive o SharePoint se almacena reconstruido para la pantalla: Slides se repite y avanza según el delayms del enlace, limitado a la duración de la página, y Docs, Sheets, Word y Excel se recargan cada 5 minutos.
Un código de inserción <iframe> pegado en src o fallback_src se lee por su src. Un archivo que pide a los espectadores que inicien sesión se rechaza con document_not_shared (400), cuyo errors[0].field es ese src o fallback_src y cuyo detalle nombra el ajuste de uso compartido que hay que cambiar.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Screenrig-Review-Note | encabezado | opcional | Nota opcional del proponente en una escritura de clase revisión, enviada como UTF-8 codificado en porcentaje (lo que escribe encodeURIComponent de JavaScript). El servidor la decodifica en porcentaje (una escape inválido es 400 invalid_request); la nota decodificada es texto plano, máximo 280 caracteres tras recortar, sin caracteres de control (de lo contrario 400 invalid_request). Almacenado en la revisión cuando la escritura se convierte en una; ignorado cuando se aplica en vivo. |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playlists'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 202 | La escritura se convirtió en una revisión y espera la aprobación de una persona (docs/reviews.md), con acceso Proponer, o con cualquier nivel de acceso cuando alcanza una pantalla de una carpeta de pantallas protegida, donde la decide un segundo aprobador (docs/screen-scope.md). Una persona aprueba, rechaza o solicita cambios en el panel, en review.url. Una repetición de Idempotency-Key responde con el mismo cuerpo. | ReviewPending (application/json) |
| 201 | Lista de reproducción con sus páginas de espacios publicitarios. | PlaylistV2 (application/json) |
| 402 | feature_not_in_plan — Declarar campos, bloquear una primitiva o cambiar una lista de reproducción que declara campos corresponde a las plantillas de listas de reproducción, y el plan del proyecto no las incluye; required_plan nombra el plan que sí las incluye. Crear una lista de reproducción a partir de una plantilla siempre está permitido. Un formato de 2 o más monitores (un muro de video) forma parte de Plus; un formato de región y una lista de reproducción sin formato están en todos los planes. El problema nombra la función, el plan del proyecto y required_plan. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar pantallas en proyecto
La lista predeterminada devuelve pantallas pairing_pending y activas. Pase state=archived para listar solo pantallas archivadas. Pase tag para listar solo pantallas cuyos tags contengan exactamente esa etiqueta; las pantallas sin etiqueta se omiten cuando el filtro está presente.
Pase field, una vez por campo, como NAME:VALUE para listar solo las pantallas cuyos campos contienen todos los valores, y near como LAT,LON,KM para listar solo las pantallas ubicadas a KM kilómetros o menos del punto; se omiten las pantallas sin ubicación, y todos los filtros se combinan con state y tag.
Pase folder como un ID de carpeta de pantallas para listar solo las pantallas directamente dentro de ella (no las de sus subcarpetas), o root para las pantallas fuera de toda carpeta.
Las pantallas van de la más reciente a la más antigua, como máximo 500 por página. next_cursor es la posición de la última fila devuelta mientras quedan más filas; páselo de vuelta como after, con los mismos filtros, para la página siguiente. next_cursor es null en la última página. Un llamador limitado a pantallas (docs/screen-scope.md) lista solo las pantallas de su alcance.
Una solicitud que no nombra ningún proyecto omite cada proyecto donde el llamador está limitado a pantallas; nombre el proyecto para listarlo.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| estado | consulta | opcional | Omitir para pairing_pending y activo. Pase archived para listar solo pantallas archivadas. |
| etiqueta | consulta | opcional | Etiqueta exacta de pantalla. Las pantallas sin etiqueta se omiten cuando este filtro está presente. |
| field | consulta | opcional | NAME:VALUE, dividido en el primer signo de dos puntos: solo las pantallas cuyo campo NAME contiene exactamente VALUE. Repita el parámetro para varios campos; todos deben coincidir, y un nombre puede indicarse una sola vez. Uno con formato incorrecto o repetido devuelve invalid_request e indica field. |
| near | consulta | opcional | LAT,LON,KM en grados decimales y kilómetros, por ejemplo 47.6062,-122.3321,25: solo las pantallas cuya ubicación está a KM kilómetros o menos del punto. La latitud va de -90 a 90, la longitud de -180 a 180 y KM debe ser mayor que 0 y como máximo 20038. Se omiten las pantallas sin ubicación. Un valor con formato incorrecto devuelve invalid_request e indica near. |
| carpeta | consulta | opcional | Un ID de carpeta de pantallas mantiene solo las pantallas directamente dentro de esa carpeta, no las de sus subcarpetas; root mantiene solo las pantallas fuera de toda carpeta. Si se omite, lista todas las pantallas. |
| después | consulta | opcional | next_cursor de la página anterior de la misma lista, con los mismos filtros. Omitido comienza en la fila más reciente. Un valor que no sea tal cursor es invalid_request. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Pantallas | ScreenList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar carpetas de pantallas en proyecto
Lista todas las carpetas de pantallas del proyecto, como máximo 1000, ordenadas por nombre.
Las carpetas organizan las pantallas y las seleccionan: una hoja de audiencia de campaña {"folder": ID} coincide con las pantallas de esa carpeta y de cada carpeta que contiene, un selector de acción de flota by:folder actúa sobre las mismas pantallas, y el default_playlist_id de una carpeta es lo que muestran sus pantallas que no tienen una lista de reproducción propia. parent_id es null en la raíz del proyecto; construya el árbol a partir de parent_id. screens cuenta las pantallas en vivo directamente dentro de cada carpeta.
La carpeta de una pantalla es Screen.folder_id. Un llamador limitado a pantallas (docs/screen-scope.md) lista las carpetas dentro de su alcance y las carpetas que están encima, que son de solo lectura para que su árbol tenga raíz; las carpetas de arriba no llevan recuento de pantallas y las carpetas hermanas se ocultan. Una solicitud que no nombra ningún proyecto omite cada proyecto donde el llamador está limitado a pantallas.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screen-folders'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Carpetas de pantallas | ScreenFolderList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear carpeta de pantallas en proyecto
Crea una carpeta de pantallas en la raíz del proyecto (parent_id nulo o ausente) o dentro de parent_id. Los nombres se recortan, tienen de 1 a 100 caracteres Unicode sin controles, no son "." ni ".." y son únicos entre las carpetas del mismo nivel (resource_conflict).
Una organización tiene como máximo 1000 carpetas en todos sus proyectos (quota_exceeded) anidadas a lo sumo 10 niveles (invalid_request). default_playlist_id, cuando se establece, debe nombrar una lista de reproducción aprobada (playlist_not_approved). Emite screen.folder_created.
Un llamador limitado a pantallas (docs/screen-scope.md) crea una carpeta solo dentro de una carpeta de su alcance; la raíz del proyecto o cualquier otro padre es outside_screen_scope. Crear una carpeta dentro de una carpeta protegida es una revisión protected_change (202 pending_review) decidida por un segundo aprobador.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (requerido, cadena) | Recortado; de 1 a 100 caracteres Unicode, sin controles, distinto de . y .., único entre las carpetas del mismo nivel. minLength: 1 maxLength: 100 |
| parent_id (opcional, en línea) | La carpeta en la que crearla; null o ausente para la raíz del proyecto. |
| default_playlist_id (opcional, cadena) | Una lista de reproducción aprobada para las pantallas de la carpeta que no tienen una propia. minLength: 1 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screen-folders'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Carpeta creada. | ScreenFolder (application/json); encabezados: ETag |
| 202 | La escritura se convirtió en una revisión y espera la aprobación de una persona (docs/reviews.md), con acceso Proponer, o con cualquier nivel de acceso cuando alcanza una pantalla de una carpeta de pantallas protegida, donde la decide un segundo aprobador (docs/screen-scope.md). Una persona aprueba, rechaza o solicita cambios en el panel, en review.url. Una repetición de Idempotency-Key responde con el mismo cuerpo. | ReviewPending (application/json) |
| 403 | outside_screen_scope como en OutsideScreenScope, o approver_required - un miembro limitado a pantallas que no puede aprobar revisiones no cambia lo que reproduce una pantalla ni cuándo (docs/screen-scope.md). | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Mover pantallas en proyecto
Mueve pantallas (screen_ids) y carpetas (folder_ids) a una carpeta (folder_id), o a la raíz del proyecto cuando folder_id es null, en una sola solicitud de todo o nada de como máximo 1000 ids. Todos los ids deben existir (not_found). Una carpeta no puede moverse dentro de sí misma ni dentro de una carpeta contenida en ella, y el movimiento debe mantener todas las carpetas dentro de 10 niveles (invalid_request).
Los elementos que ya están en el destino se dejan tal cual; cada pantalla y carpeta movidas avanza su revisión. Las pantallas movidas vuelven a resolver su lista de reproducción en unos 15 segundos: levels nombra las campañas cuya audiencia de carpeta entran o dejan y las listas de reproducción predeterminadas de carpeta que ganan o pierden. Emite screen.moved.
Un llamador limitado a pantallas (docs/screen-scope.md) mueve pantallas y carpetas dentro de su alcance a una carpeta de su alcance; cualquier id o destino fuera de él, y la raíz del proyecto, rechazan todo el movimiento (outside_screen_scope), también cuando una pantalla sale del alcance entre la comprobación y la escritura.
Un movimiento hacia dentro o fuera de una carpeta protegida es una revisión protected_change decidida por un segundo aprobador (202 pending_review).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| folder_id (requerido, en línea) | Carpeta de destino; null para la raíz del proyecto. |
| screen_ids (opcional, array) | |
| folder_ids (opcional, arreglo) |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens/move'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Cuántas pantallas y carpetas se movieron, y los niveles que las pantallas movidas ganan o pierden. | ScreenMoveResult (application/json) |
| 202 | La escritura se convirtió en una revisión y espera la aprobación de una persona (docs/reviews.md), con acceso Proponer, o con cualquier nivel de acceso cuando alcanza una pantalla de una carpeta de pantallas protegida, donde la decide un segundo aprobador (docs/screen-scope.md). Una persona aprueba, rechaza o solicita cambios en el panel, en review.url. Una repetición de Idempotency-Key responde con el mismo cuerpo. | ReviewPending (application/json) |
| 403 | outside_screen_scope como en OutsideScreenScope, o approver_required - un miembro limitado a pantallas que no puede aprobar revisiones no cambia lo que reproduce una pantalla ni cuándo (docs/screen-scope.md). | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener calendario de horario en proyecto
Responde qué reproducen las pantallas de un sujeto durante [from, to) y por qué, para el calendario de Horario del panel: exactamente uno de screen_id, folder_id (las pantallas de la carpeta y de cada carpeta dentro de ella), tag o campaign_id (las pantallas de su audiencia).
Las pantallas cuyas pilas tienen entradas idénticas (los mismos niveles, predeterminado, zona horaria y número de pantallas) comparten un grupo con una línea de tiempo, de modo que un sujeto grande cuesta decenas de líneas de tiempo; un grupo lista hasta 500 de sus pantallas y una respuesta, como máximo 200 grupos (truncated).
Cada grupo lleva su pila, de mayor a menor (takeover, las campañas que alcanzan las pantallas, sus propias entradas de horario, luego la lista de reproducción predeterminada o la de la carpeta más cercana), los tramos de cada nivel (se reproduce en cada pantalla a la que apunta, parcial con las pantallas en las que se reproduce, superado, o condicional mientras espera una interacción o una condición de datos que solo un Player observa), lo que muestra cada pantalla (on_screen; la región principal de una página completa) y conflictos (dos campañas de una misma prioridad vigentes a la vez; un nivel que rige pero nunca se reproduce). from y to son instantes RFC 3339, con to posterior a from y como máximo 93 días de diferencia; se truncan al minuto.
Las reglas se leen en la zona horaria de cada grupo, igual que las leen el barrido y cada Player; todo nivel se juzga reproducible. Un llamador limitado a pantallas (docs/screen-scope.md) debe enviar un screen_id o un folder_id dentro de su alcance; una etiqueta, un campaign_id o ningún asunto es outside_screen_scope.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| desde | consulta | requerido | |
| a | consulta | requerido | |
| screen_id | consulta | opcional | |
| folder_id | consulta | opcional | |
| etiqueta | consulta | opcional | |
| campaign_id | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/calendar?from=FROM&to=TO'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | El calendario del sujeto. | ScheduleCalendar (application/json) |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener plantilla de importación de programación en proyecto
Responde con una hoja con las columnas que lee una importación de programación y tres filas de ejemplo (un código de pantalla, una carpeta de pantallas y una etiqueta), como CSV o, con format=xlsx, un libro XLSX.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| formato | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/imports/template'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | La hoja de plantilla. | cadena (text/csv), cadena (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Vista previa de importación de programación en proyecto
Lee una hoja de filas de programación contra el proyecto y responde qué haría confirmarla, sin escribir nada.
Cada fila indica un destino (una pantalla por id, por el valor de un campo de pantalla como un código de sala, o por nombre; folder:NAME; tag:NAME; varios separados por ; o |), el contenido (un nombre de archivo multimedia, o playlist:NAME o un id de lista de reproducción), un inicio y un fin (una fecha sola como fin cierra ese día) y, opcionalmente, timezone, days (Mon-Fri), una ventana diaria (daily_start, daily_end), priority de 0 a 100, un nombre y números de pantalla.
Las horas se leen en el reloj propio de cada pantalla; una columna timezone las convierte desde otra zona.
Cada fila se verifica e informa sus errores por columna: pantalla, carpeta o etiqueta desconocida o ambigua, archivo faltante o ambiguo, un archivo que no puede llenar una pantalla, horas inválidas o invertidas, un fin en el pasado, ninguna indicación de tiempo, una pantalla sin zona horaria o sin lista de reproducción predeterminada, dos filas vigentes a la vez en una pantalla con la misma prioridad, y más niveles de los que admite una pantalla (32), o más campañas de las que admite su organización en todos sus proyectos (100; cada nivel compartido cuenta como una).
Las filas que coinciden en contenido, horas, prioridad y nombre forman un nivel: una pantalla es una entrada de la programación propia de esa pantalla; varias pantallas, una carpeta o una etiqueta son un nivel compartido (una campaña), que prevalece sobre los niveles propios de una pantalla.
La respuesta lista los niveles con lo que hace una confirmación a cada uno (create, update, unchanged), los niveles que una ejecución anterior de la misma importación creó y que la hoja ya no tiene (removals), las pilas de las pantallas tal como quedarían (calendar) y una huella para enviar a la confirmación. La hoja son filas JSON, CSV o XLSX, de como máximo 5,000 filas.
No disponible para un llamador limitado a pantallas (outside_screen_scope). La importación de programación forma parte del plan Enterprise; un proyecto cuyo plan no lo incluye se rechaza con feature_not_in_plan (402). La plantilla está abierta en todos los planes.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| name | consulta | opcional | El nombre de la importación; importar de nuevo con el mismo nombre actualiza los niveles que creó (predeterminado import). Se envía con un cuerpo de archivo. |
| zona horaria | consulta | opcional | La zona IANA en la que se escriben las horas cuando una fila no tiene timezone. Sin una, las horas se leen en el reloj propio de cada pantalla. |
| origen | consulta | opcional | El nombre del archivo, registrado con la importación. |
| code_field | consulta | opcional | Leer un código de pantalla solo de este campo de pantalla (por ejemplo code o room_id); de lo contrario, un código coincide con cualquier campo. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (opcional, cadena) | Identifica la importación; el mismo nombre actualiza los niveles que creó (predeterminado import). minLength: 1 maxLength: 80 |
| source (opcional, cadena) | El archivo del que provienen las filas. maxLength: 200 |
| zona horaria (opcional, cadena) | La zona IANA en la que se escriben las horas cuando una fila no tiene timezone. |
| code_field (opcional, cadena) | Leer un código de pantalla solo de este campo de pantalla. |
| fingerprint (opcional, cadena) | La huella de la vista previa; la confirmación la requiere. |
| rows (obligatorio, arreglo) |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/imports/preview'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | La vista previa. valid es false mientras alguna fila tenga un error. | ScheduleImportPreview (application/json) |
| 402 | feature_not_in_plan — La importación de programación forma parte del plan Enterprise; el problema nombra la función, el plan que tiene la cuenta y required_plan. | Problema (application/problem+json) |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Confirmar importación de programación en proyecto
Confirma una importación con vista previa: la misma hoja y la huella que respondió su vista previa. Cada nivel se crea, se actualiza o se elimina, las programaciones de las pantallas y los niveles compartidos se escriben en una sola transacción, y se añade el evento de importación schedule.imported: todas las filas se aplican o ninguna.
Primero se crean las listas de reproducción de un solo archivo que necesitan los archivos de la hoja (no cambian nada en ninguna pantalla). Una hoja cuyas filas tienen errores se rechaza (schedule_import_invalid); un proyecto que cambió desde la vista previa, o filas que se leen de otra forma, se rechaza (schedule_import_stale), y el cliente previsualiza de nuevo.
Importar la misma hoja de nuevo con el mismo nombre no cambia nada; una fila modificada actualiza su nivel y una fila eliminada elimina su nivel. Requiere una persona que pueda aprobar en el dashboard y, para un agente, una credencial con acceso de escritura.
Una confirmación que actualizaría o eliminaría una campaña reservada responde reserved_item (403) y no escribe nada, a menos que la confirme una persona que puede aprobar.
Una confirmación que alcanza una pantalla protegida se rechaza por completo con protected_target, también cuando la importación no tiene niveles pero elimina entradas de importación de una pantalla protegida o elimina una campaña de importación cuya audiencia alcanza una.
En un proyecto con carpetas de pantallas protegidas, una confirmación cuya vista previa falla en un servicio, no en la hoja, responde dependency_unavailable y no escribe nada: envíe la misma solicitud de nuevo tras una breve espera. Un error de validación de hoja, campaña o pantalla responde como lo haría la confirmación (invalid_request y los demás problemas de arriba).
No disponible para un llamador limitado a pantallas. La importación de programación forma parte del plan Enterprise; un proyecto cuyo plan no lo incluye se rechaza con feature_not_in_plan (402). La plantilla está abierta en todos los planes.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
| fingerprint | consulta | opcional | La huella de la vista previa, para un cuerpo CSV o XLSX; un cuerpo JSON la lleva como miembro. |
| name | consulta | opcional | El nombre de la importación; importar de nuevo con el mismo nombre actualiza los niveles que creó (predeterminado import). Se envía con un cuerpo de archivo. |
| zona horaria | consulta | opcional | La zona IANA en la que se escriben las horas cuando una fila no tiene timezone. Sin una, las horas se leen en el reloj propio de cada pantalla. |
| origen | consulta | opcional | El nombre del archivo, registrado con la importación. |
| code_field | consulta | opcional | Leer un código de pantalla solo de este campo de pantalla (por ejemplo code o room_id); de lo contrario, un código coincide con cualquier campo. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (opcional, cadena) | Identifica la importación; el mismo nombre actualiza los niveles que creó (predeterminado import). minLength: 1 maxLength: 80 |
| source (opcional, cadena) | El archivo del que provienen las filas. maxLength: 200 |
| zona horaria (opcional, cadena) | La zona IANA en la que se escriben las horas cuando una fila no tiene timezone. |
| code_field (opcional, cadena) | Leer un código de pantalla solo de este campo de pantalla. |
| fingerprint (opcional, cadena) | La huella de la vista previa; la confirmación la requiere. |
| rows (obligatorio, arreglo) |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/imports'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Lo que aplicó la confirmación. | ScheduleImportCommitted (application/json) |
| 402 | feature_not_in_plan — La importación de programación forma parte del plan Enterprise; el problema nombra la función, el plan que tiene la cuenta y required_plan. | Problema (application/problem+json) |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| 409 | protected_target - el cambio alcanza una pantalla de una carpeta de pantallas protegida y no tiene una vía de revisión (docs/screen-scope.md). Quite la protección de la carpeta mediante una revisión, haga el cambio y proteja la carpeta de nuevo. | Problema (application/problem+json) |
| 500 | dependency_unavailable - no se pudo ejecutar la comprobación de carpetas de pantallas protegidas; envíe la misma solicitud de nuevo tras una breve espera. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Reclamar enlace del navegador en proyecto
Reclama un código de enlace de navegador para el proyecto autenticado y crea atómicamente exactamente una pantalla first pairing_pending más su concesión de aprovisionamiento de navegador existente. La inscripción sigue siendo solo para el proyecto. La respuesta es solo metadatos seguros y nunca contiene un token de aprovisionamiento, URL fragmentada, cookie o prueba.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| código (requerido, cadena) | patrón: "^[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{3}-?[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{3}$" |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/browser-links/claim'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Reclamación exacta de enlace de navegador sin fragmentos y segura para reproducción. | BrowserLinkClaim (application/json); encabezados: Cache-Control, RateLimit-Policy, RateLimit |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 403 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 409 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 410 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| 500 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Emparejar pantalla en proyecto
Reclama una sesión de emparejamiento de Player global para la flota con seis caracteres. Reintentos con la misma Idempotency-Key devuelven el resultado original duradero sin consumir cuota nuevamente.
La sesión del panel lo reclama en su proyecto actual con el mismo cuerpo, Idempotency-Key, presupuestos y problemas, salvo que su not_found para un código desconocido o ya reclamado no nombra ningún comando de la CLI; es un cambio de estado, así que sigue las reglas de mutación del panel, se rechaza una sesión sombra sin modo de escritura del personal, y los eventos que añade la reclamación nombran al usuario del panel. folder_id nombra la carpeta en la que queda la pantalla.
Un llamador limitado a pantallas (docs/screen-scope.md) debe enviar una carpeta dentro de su alcance y empareja solo como persona que puede aprobar (outside_screen_scope, approver_required).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| código (requerido, cadena) | patrón: "^[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{6}$" |
| etiqueta (opcional, cadena) | minLength: 1 maxLength: 120 |
| folder_id (opcional, cadena) | La carpeta de pantallas en la que queda la pantalla; si se omite, queda en la raíz del proyecto. Un llamador limitado a pantallas debe enviar una carpeta dentro de su alcance (de lo contrario outside_screen_scope). Una carpeta que el proyecto no contiene es invalid_request para un llamador de todo el proyecto. Parte de la solicitud idempotente: otro folder_id con la misma Idempotency-Key es idempotency_mismatch. minLength: 1 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens/pair'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Reclamo duradero de pantalla pairing_pending. | PairingClaim (application/json); encabezados: Cache-Control, RateLimit-Policy, RateLimit |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 401 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 409 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 413 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| 500 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope como en OutsideScreenScope, o approver_required - un miembro limitado a pantallas que no puede aprobar revisiones no cambia lo que reproduce una pantalla ni cuándo (docs/screen-scope.md). | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Provisionar pantalla en proyecto
Aprovisionamiento opcional de una pantalla nueva, solo en navegador. Siempre crea una pantalla nueva en pairing_pending; como máximo cinco esperan a vincularse a la vez (quota_exceeded). Los reintentos exactos vuelven a entregar el mismo token de fragmento durante diez minutos. El emparejamiento de seis caracteres sigue siendo el flujo predeterminado y el único de recuperación. folder_id nombra la carpeta en la que queda la pantalla.
Un llamador limitado a pantallas (docs/screen-scope.md) debe enviar una carpeta dentro de su alcance (de lo contrario outside_screen_scope).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| etiqueta (opcional, cadena) | minLength: 1 maxLength: 120 |
| folder_id (opcional, cadena) | La carpeta de pantallas en la que queda la pantalla, como en PairScreen. minLength: 1 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens/provision'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Nuevo enlace de aprovisionamiento para navegador. | ScreenProvisioning (application/json); encabezados: Cache-Control, RateLimit-Policy, RateLimit |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 401 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 409 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 410 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 413 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| 500 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope como en OutsideScreenScope, o approver_required - un miembro limitado a pantallas que no puede aprobar revisiones no cambia lo que reproduce una pantalla ni cuándo (docs/screen-scope.md). | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Aplicar acciones de pantalla en proyecto
Aplica una acción a una flota seleccionada sin límite de conteo de pantallas. Seleccione screen_ids únicos o una etiqueta que coincida con pantallas activas en orden de creación. La selección resuelta se fija antes de cualquier mutación, se almacena en fragmentos limitados y se mantiene durante veinticuatro horas bajo Idempotency-Key.
Cada paso utiliza su ruta de mutación de pantalla única, preservando revisiones, eventos, señales de tiempo de ejecución y límites por pantalla. Una respuesta contiene una página limitada de resultados; coincidentes, exitosos y fallidos describen esa página. HTTP 202 incluye total, offset y next_cursor. Continúe con el mismo selector, acción y Idempotency-Key, pasando next_cursor como after.
Respete Retry-After cuando esté presente, incluso una página con cero resultados. La respuesta refleja Idempotency-Key, incluyendo una clave generada cuando el llamante la omitió; conserve esta clave para continuaciones. HTTP 200 finaliza la selección. Las páginas respondidas se reproducen exactamente, incluyendo fallos por pantalla; los pasos interrumpidos se reproducen sin repetir sus efectos.
Las acciones grandes se regulan según los presupuestos existentes de 600 por minuto por organización para recarga, toast, toma de control, programación de listas de reproducción, reinicio, pantalla y programación de pantalla; el agotamiento del presupuesto de la organización pausa la acción en lugar de rechazar la flota. El agotamiento por pantalla falla solo esa pantalla.
Un paso assign, takeover o set_playlist_schedule que vincula una lista de reproducción con formato a una pantalla cuyo muro tiene otra forma falla solo para esa pantalla con 409 playlist_format_mismatch. Las asignaciones y los cambios de etiquetas no tienen presupuesto de mensajes.
Una asignación cuya lista de reproducción tiene un src de iframe o parámetros de aplicación que leen un token de pantalla que le falta a alguna pantalla de la página añade una advertencia screen_fact_missing a esa página (warnings, PlaylistWarning). El fallo parcial es un resultado normal. Todas las páginas y reintentos bajo una misma clave son una sola acción medida.
Las solicitudes usan una carga útil de bytes acotada; use una etiqueta para una selección mayor que la carga útil del transporte. Un selector o una acción mal formados se rechazan antes de tocar ninguna pantalla. El selector o la acción se rechazan antes de tocar ninguna pantalla.
Un llamador limitado a pantallas (docs/screen-scope.md) selecciona por screen_ids o por carpeta, cada pantalla dentro de su alcance; un selector de etiqueta, una pantalla fuera del alcance o una desconocida rechaza toda la acción (outside_screen_scope) antes de que se fije o se proponga nada.
Assign, takeover, takeover_clear, set_playlist_schedule y clear_playlist_schedule que alcanzan una pantalla protegida se convierte en una revisión que decide un segundo aprobador (202 pending_review) en todos los niveles de acceso; set_tags, add_tags y remove_tags en una pantalla protegida son protected_target (409).
Una acción set_playlist_schedule con una entrada pausada (un borrador) corresponde al control de cambios de la programación, que incluye el plan Enterprise; un proyecto cuyo plan no lo incluye se rechaza con feature_not_in_plan (402).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Screenrig-Review-Note | encabezado | opcional | Nota opcional del proponente en una escritura de clase revisión, enviada como UTF-8 codificado en porcentaje (lo que escribe encodeURIComponent de JavaScript). El servidor la decodifica en porcentaje (una escape inválido es 400 invalid_request); la nota decodificada es texto plano, máximo 280 caracteres tras recortar, sin caracteres de control (de lo contrario 400 invalid_request). Almacenado en la revisión cuando la escritura se convierte en una; ignorado cuando se aplica en vivo. |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
| después | consulta | opcional | next_cursor de la página de resultados anterior. Reutilice la Idempotency-Key original y el cuerpo de la solicitud. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| selector (requerido, ScreenActionSelector) | |
| acción (requerida, ScreenAction) | Una acción de flota, discriminada por tipo. Cada miembro lleva solo sus propios parámetros; un miembro de otro tipo es un campo desconocido e invalid_request. |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens/actions'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultados por pantalla. El éxito parcial es una respuesta normal. | ScreenActionResult (application/json); encabezados: Idempotency-Key, Cache-Control, RateLimit-Policy, RateLimit |
| 202 | Quedan más pantallas (continúe con next_cursor y la misma Idempotency-Key y el mismo cuerpo, respetando Retry-After), o, con estado pending_review, la acción se convirtió en una revisión con acceso Proponer (docs/reviews.md), o con cualquier nivel de acceso porque alcanza una pantalla de una carpeta de pantallas protegida (docs/screen-scope.md). Solo asignar, takeover, takeover_clear, set_playlist_schedule y clear_playlist_schedule se convierten en revisiones; cualquier otra acción es insufficient_access para Propose. | inline (application/json); encabezados: Idempotency-Key, Retry-After, Cache-Control, RateLimit-Policy, RateLimit |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 401 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — set_reboot_schedule con enabled true (reinicios programados) y set_playlist_schedule con un bloqueo de displays (muros de video) forman parte de Plus; las acciones de borrado y los comandos puntuales están abiertos. payment_required — el proyecto no tiene crédito restante. El problema nombra la función, el plan del proyecto y required_plan. | Problema (application/problem+json) |
| 403 | insufficient_access, outside_screen_scope cuando un llamador limitado a pantallas selecciona fuera de su alcance, o approver_required para un miembro limitado a pantallas que no puede aprobar. | Problema (application/problem+json) |
| 409 | playlist_format_mismatch y los demás conflictos de la acción, o protected_target cuando set_tags, add_tags, remove_tags, toast, display, display_clear, set_display_schedule o clear_display_schedule alcanza una pantalla de una carpeta de pantallas protegida. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Iniciar uso compartido de pestañas en proyecto
Muestra pestañas del navegador en pantallas del proyecto indicado; solicitud, respuesta, acceso y límites son los de POST /api/tab-shares.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| screen_ids (opcional, array) | Pantallas por id. Los duplicados se unifican. |
| folder_ids (opcional, arreglo) | Carpetas de pantallas; cada una incluye todas sus subcarpetas. |
| tags (opcional, array) | Una pantalla con cualquiera de las etiquetas. |
| tabs (requerido, array) | |
| cookies (opcional, array) | Cookies del remitente para las páginas, hasta 64 KiB codificados. Secretas; véase POST /api/tab-shares. |
| reload_s (opcional, integer) | 0 (nunca, por defecto) o de 60 a 86400: frecuencia de recarga del iframe de cada página. |
| until (opcional, string) | Estrictamente en el futuro y como máximo dentro de 24 horas; 24 horas desde ahora si se omite. Fin del control en cada destino y caducidad de la lista temporal. format: "date-time" |
| qr (opcional, boolean) | Cuando es true, cada página lleva un código QR de su dirección abajo a la derecha. Por defecto false. |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/tab-shares'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | El recurso compartido. Se tomó el control de al menos una pantalla. | TabShare (application/json); encabezados: RateLimit-Policy, RateLimit |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 401 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 409 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| 403 | outside_screen_scope como en OutsideScreenScope, o approver_required - un miembro limitado a pantallas que no puede aprobar revisiones no cambia lo que reproduce una pantalla ni cuándo (docs/screen-scope.md). | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar campañas en proyecto
Lista las campañas del proyecto en orden de precedencia (como máximo 100), el orden en que las lee la resolución. reserved está presente en cada campaña.
Un llamador limitado a pantallas (docs/screen-scope.md) ve todas las campañas, con editable true solo cuando toda la audiencia está dentro de su alcance (una hoja de etiqueta y la regla raíz de todas las pantallas nunca lo están; una regla all necesita un hijo contenido, una regla any todos los hijos) y el llamador puede cambiar lo que se reproduce.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/campaigns'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Las campañas del proyecto. | CampaignList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear campaña en proyecto
createCampaign para el proyecto nombrado en la ruta. reserved true reserva la campaña, y solo lo define una persona que puede aprobar (reserved_item para un agente, un cliente de servicio o cualquier otro), añadiendo campaign.reserved_changed.
Un llamador limitado a pantallas (docs/screen-scope.md) crea una campaña solo para una audiencia dentro de su alcance (hojas folder y screen_id; ni tag ni la regla de todas las pantallas), de lo contrario outside_screen_scope, y solo como persona que puede aprobar (approver_required).
Una campaña cuya audiencia alcanza una pantalla protegida es una revisión protected_change decidida por un segundo aprobador (202 pending_review) en todos los niveles de acceso. reserved true corresponde a las carpetas protegidas y paused true en una campaña nueva (un borrador) corresponde al control de cambios de la programación, y ambos forman parte del plan Enterprise; un proyecto cuyo plan no lo incluye se rechaza con feature_not_in_plan (402).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (requerido, cadena) | minLength: 1 maxLength: 120 |
| playlist_id (requerido, cadena) | minLength: 1 |
| audience (requerido, CampaignAudience) | Qué pantallas selecciona una campaña: exactamente uno de all (coinciden todas las reglas), any (coincide al menos una), tag (la pantalla lleva la etiqueta), screen_id (esa pantalla) o folder (las pantallas de esa carpeta de pantallas y de cada carpeta que contiene, GET /api/screen-folders; la carpeta debe existir). Las reglas se anidan hasta 3 niveles como máximo y una audiencia tiene como máximo 500 reglas. {"all": []} es cada pantalla del proyecto; en los demás casos all y any listan al menos una regla. |
| from (opcional, string) | patrón: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T([01][0-9]|2[0-3]):[0-5][0-9]$" |
| until (opcional, string) | Posterior a from. patrón: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T([01][0-9]|2[0-3]):[0-5][0-9]$" |
| windows (opcional, array) | |
| monthly (opcional, arreglo) | |
| dates (opcional, arreglo) | |
| except (opcional, arreglo) | Fechas civiles, almacenadas en orden ascendente y una sola vez cada una. Una excepción elimina todas las repeticiones que empiezan en su fecha, incluidas las colas nocturnas; cae entre from y until. |
| data (opcional, PageDataCondition) | Un predicado de datos de tarjeta, evaluado antes de la hora civil. Los datos faltantes o caducados nunca coinciden. La página también respeta sus límites de tiempo ordinarios. Requiere la capacidad host page.conditions; los hosts más antiguos reciben la página deshabilitada. |
| interaction (opcional, LevelInteraction) | El nivel rige mientras alguien usa la pantalla: desde un toque, clic o tecla hasta que pasan idle_s segundos sin entrada. Uso típico: una página interactiva sobre un bucle de atracción. idle_s se almacena y se devuelve (60 si se omite). |
| covers (opcional, cadena) | Dónde se reproduce el nivel: la página completa (default, se almacena ausente) o main, la propia página, para una lista de reproducción ordinaria; header, footer o side, una franja dibujada sobre la página, solo para una lista de reproducción de región de esa región (PlaylistRegionFormat). Una lista de reproducción de región se rechaza con full o main, y una franja necesita una lista de reproducción de región dispuesta en un monitor de destino. Permitido: "full", "main", "header", "footer", "side" |
| displays (opcional, arreglo) | Las salidas de un muro de video en las que se reproduce; si está ausente, se reproduce en todas las salidas. |
| start (opcional, cadena) | on_time cambia en el borde, interrumpiendo el elemento actual; next_item (predeterminado, se almacena ausente) espera a que termine. Permitido: "next_item", "on_time" |
| priority (opcional, integer) | predeterminado: 0 mínimo: 0 máximo: 100 |
| paused (opcional, boolean) | predeterminado: false |
| reserved (opcional, booleano) | Solo una persona que puede aprobar reserva una campaña (de lo contrario reserved_item). default: false |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/campaigns'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creado. | Campaign (application/json); encabezados: ETag |
| 202 | La escritura se convirtió en una revisión y espera la aprobación de una persona (docs/reviews.md), con acceso Proponer, o con cualquier nivel de acceso cuando alcanza una pantalla de una carpeta de pantallas protegida, donde la decide un segundo aprobador (docs/screen-scope.md). Una persona aprueba, rechaza o solicita cambios en el panel, en review.url. Una repetición de Idempotency-Key responde con el mismo cuerpo. | ReviewPending (application/json) |
| 402 | feature_not_in_plan — Las carpetas protegidas y el control de cambios de la programación forman parte del plan Enterprise; el problema nombra la función, el plan que tiene la cuenta y required_plan. Una campaña que bloquea una lista de reproducción en el monitor 2 o posteriores de un muro de video (displays) forma parte de Plus. El problema nombra la función, el plan del proyecto y required_plan. | Problema (application/problem+json) |
| 403 | outside_screen_scope o approver_required como en ScreenScopePlays, o reserved_item - una campaña reservada solo la cambia, pausa, elimina o deja de reservar una persona que puede aprobar revisiones, nunca un agente ni un cliente de servicio (docs/screen-scope.md). | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar conexiones de un proyecto
Lista las conexiones del proyecto, las más recientes primero, como máximo 200 por página; devuelva next_cursor como after para la siguiente. Un secreto, una clave o un token de actualización nunca se devuelve: secret indica si hay uno guardado y una pista que no es secreta. Una lectura nunca incluye un enlace de consentimiento.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| después | consulta | opcional | next_cursor de la página anterior de la misma lista, con los mismos filtros. Omitido comienza en la fila más reciente. Un valor que no sea tal cursor es invalid_request. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/connections'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Una página de conexiones. | ConnectionList (application/json); encabezados: Cache-Control |
| 400 | invalid_request, incluido un cursor mal formado. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear una conexión en un proyecto
Crea en este proyecto una conexión con Microsoft o Google: modo own_app con las credenciales propias del cliente, o modo screenrig_app, que responde consent_url, un enlace de un solo uso para la persona que lo completa (vea createConnection). Añade connection.created. Un reintento exacto con la misma Idempotency-Key devuelve la misma conexión.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| provider (requerido, cadena) | Permitido: "microsoft", "google" |
| mode (requerido, cadena) | Permitido: "own_app", "screenrig_app" |
| nombre (requerido, cadena) | minLength: 1 maxLength: 80 |
| config (opcional, ConnectionConfigWrite) | Microsoft, modo own_app: ambos miembros. No se acepta para una conexión de Google ni para el modo screenrig_app. |
| secret (opcional, cadena) | Modo own_app. Microsoft: el valor de uno de los secretos de cliente de la aplicación (no su ID; como máximo 1024 caracteres), con config.tenant_id y config.client_id. Google: el archivo de clave JSON de la cuenta de servicio, completo (como máximo 16384 bytes). Se sella al llegar y nunca se devuelve; la CLI lo lee de un archivo o de la entrada estándar, nunca de un argumento. No se acepta en modo screenrig_app. minLength: 1 maxLength: 16384 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/connections'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creada. Una conexión en modo screenrig_app lleva consent_url y consent_expires_at. | ConnectionConsent (application/json); encabezados: ETag, Location, Cache-Control |
| 400 | invalid_request, que nombra el campo no válido. | Problema (application/problem+json) |
| 409 | connection_app_not_configured, connection_limit_reached o idempotency_mismatch. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar conexiones BI en proyecto
Lista las conexiones BI del proyecto, de la más antigua a la más reciente, 200 por página; devuelva next_cursor como cursor para la siguiente. Un secreto nunca se devuelve: secret indica si está definido y sus últimos 4 caracteres.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| cursor | consulta | opcional | next_cursor de la página anterior. |
| límite | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-connections'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Una página de conexiones. | BIConnectionList (application/json); encabezados: Cache-Control |
| 400 | invalid_request, incluido un cursor mal formado. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear una conexión BI en proyecto
Agrega una conexión a un sistema BI del que el proyecto es propietario. Para Grafana: su dirección (http o https en un host público, con un prefijo de ruta opcional) y un token de cuenta de servicio con el rol Viewer. El token se sella y nunca se devuelve.
Grafana renders dashboards for screens through its Image Renderer plugin or remote rendering service, so the customer installs one; run POST /api/bi-connections/{id}/test to check. For Power BI (kind powerbi): config.tenant_id and config.client_id of a Microsoft Entra app registration and its client secret value as secret.
Un administrador de Power BI debe activar los ajustes de desarrollador Embed content in apps y Service principals can call Fabric public APIs para la aplicación (portal de administración, configuración del inquilino), la aplicación debe ser Miembro o Administrador de cada área de trabajo que muestre, y los informes necesitan una capacidad Embedded, Fabric o Premium en producción.
For Tableau (kind tableau): config.url (the https address of Tableau Server, or of your Tableau Cloud pod such as https://10ay.online.tableau.com), config.site (the site content URL, empty for the default site), config.client_id and config.secret_id of a connected app with direct trust, config.username (the Tableau user the screens views are shown as) and the secret value as secret.
Añada embed_origin de la respuesta a la lista de dominios permitidos de la aplicación conectada y habilite el secreto. Cualquiera que tenga un ticket de pantalla puede incrustar cualquier vista que ese usuario pueda ver, así que use un usuario que solo vea los paneles de las pantallas. Tableau Cloud, o Tableau Server 2023.3 o posterior.
Para una página web con inicio de sesión (kind web): la cuenta de servicio de un sitio que muestra su panel tras un inicio de sesión. config.login_mode es auto (config.login_url, config.username y la contraseña como secret: el renderizador abre la página de inicio de sesión y rellena el formulario), steps (config.login_url y config.steps, un script de pasos goto, fill, click, press, wait_for y wait_ms cuyos valores pueden contener {{username}}, {{password}} y {{otp}}) o none (sin inicio de sesión: la conexión muestra páginas con las cookies que usted le da). totp_secret es la clave base32, o la dirección otpauth://, de la aplicación de autenticación de la cuenta: el servidor calcula el código de un solo uso (RFC 6238) y envía al renderizador solo el código. cookies es un conjunto de cookies exportado de un navegador con la sesión iniciada, para un sitio cuyo inicio de sesión no se puede automatizar (inicio de sesión único que se aprueba en un teléfono, una comprobación de dispositivo); el servidor guarda el conjunto y lo renueva con las cookies que devuelve cada captura, así que un inicio de sesión es raro.
La contraseña, la semilla y las cookies se sellan y nunca se devuelven. Use una cuenta de servicio de solo lectura. La contraseña se escribe solo en config.login_url y en los pasos goto, así que moverlos a otro origen exige secret de nuevo. Tras cinco inicios de sesión rechazados seguidos, la conexión deja de iniciar sesión hasta que cambian sus credenciales.
Un servidor sin renderizador de páginas responde bi_web_unavailable. Añade bi_connection.created. Un reintento exacto con la misma Idempotency-Key devuelve esta misma respuesta.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (requerido, cadena) | minLength: 1 maxLength: 80 |
| kind (requerido, cadena) | Permitido: "grafana", "powerbi", "tableau", "web" |
| config (requerido, BIConnectionConfig) | |
| secret (opcional, cadena) | Obligatorio salvo para web, y para una conexión de Power BI que nombra connection_id. El token de la cuenta de servicio (Grafana), el valor del secreto de cliente de la aplicación (Power BI), el valor del secreto de la aplicación conectada (Tableau) o la contraseña de la cuenta de servicio (web: la exige login_mode auto, no la usa none). Se sella al llegar; la CLI lo lee de un archivo o de la entrada estándar, nunca de un argumento. minLength: 1 maxLength: 4096 |
| totp_secret (opcional, cadena) | Web: la clave base32 de la aplicación de autenticación de la cuenta (de 16 a 128 caracteres, con espacios permitidos), o su dirección otpauth://totp, que puede fijar el algoritmo (SHA1, SHA256, SHA512), los dígitos (6 a 8) y el periodo. Sellado; solo el código calculado sale del servidor. maxLength: 1024 |
| cookies (opcional, array) | Web: un conjunto de cookies exportado de un navegador con la sesión iniciada. Sellado; se renueva con cada captura. |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-connections'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creado. | BIConnection (application/json); encabezados: ETag, Cache-Control |
| 400 | invalid_request, incluida una dirección que no es un host público de Internet. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — el plan del proyecto no incluye paneles de BI; required_plan nombra el plan que sí los incluye. | Problema (application/problem+json) |
| 409 | idempotency_mismatch. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar vistas BI en proyecto
Lists the project's BI views, oldest first, 200 to a page; pass next_cursor back as cursor for the next. Each carries embed_url, the address an iframe primitive shows (content_fit fill); it is null where this server has no embed host.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| cursor | consulta | opcional | next_cursor de la página anterior. |
| límite | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-views'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Una página de vistas. | BIViewList (application/json); encabezados: Cache-Control |
| 400 | invalid_request, incluido un cursor mal formado. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear una vista BI en proyecto
Agrega una vista de un panel de Grafana de la conexión o de uno solo de sus paneles (url: una dirección /d/{uid}/... en el host de la conexión, o target), o de un enlace de panel público de Grafana (kind grafana y target.public_url, sin conexión).
Put the answer's embed_url in an iframe primitive: the server renders the dashboard as a PNG through Grafana's /render API, refreshed every refresh_s (30 to 86400, default 300) and shared by every screen of the same size; the screen never talks to Grafana. A public dashboard plays live from Grafana, which must allow embedding.
La página de inserción solo muestra un ticket que lleva el manifiesto de la pantalla, así que una vista solo se reproduce en las pantallas de su propio proyecto.
For Power BI (kind powerbi): a report of a workspace the connection's app is a member of (url: an app.powerbi.com /groups/{workspace}/reports/{report} address, or target with workspace_id and report_id), with pages to show and rotate_s to rotate through them (pages listing two or more, or rotate_all_pages, need rotate_s of 10 to 3600; one report page needs none), and refresh_s of 0 (no refresh) or 60 to 86400 (default 300).
The page asks the server for a short-lived view-only embed token (GenerateToken, App owns data) and renews it before it expires; the screen never holds the client secret. A Power BI Publish to web link is a view without a connection (kind powerbi, target.public_url https://app.powerbi.com/view?r=...), framed as it is.
For Tableau (kind tableau): a view of the connection site (url: an address copied from Tableau, such as https://HOST/t/SITE/views/WORKBOOK/VIEW or Tableau Cloud https://HOST/#/site/SITE/views/WORKBOOK/VIEW, or Workbook/View; or target.view), optionally with target.rotate_sheets and rotate_s of 10 to 3600 to turn the workbook published sheets (rotate_s and rotate_sheets go together; rotate_sheets may be given as the whole target beside url), and refresh_s of 0 (no refresh) or 60 to 86400 (default 300).
The page asks the server for a five minute JWT with only the embed scope, signed with the connected app secret, and builds the Embedding API v3 tableau-viz from the Tableau host; the screen never holds the secret.
Una visualización de Tableau Public es una vista sin conexión (kind tableau, target.public_url, reconstruida como https://public.tableau.com/views/WORKBOOK/VIEW) y también acepta rotate_sheets. Para una página web (kind web): una página del sitio de la conexión web (url: una dirección https en un host público, sin target).
El navegador en el borde la abre con la sesión iniciada, espera el elemento wait_for si está definido y wait_ms milisegundos (hasta 10000), y dibuja clip, un selector CSS, si está definido, o si no la página entera.
La imagen se redibuja cada refresh_s (60 a 86400, 300 por defecto) y la comparten todas las pantallas del mismo tamaño, y solo mientras una pantalla muestra la vista; cuando falla una captura, la última imagen sigue en pantalla. Defina wait_for con un elemento que solo exista cuando la página tiene la sesión iniciada, para que nunca se muestre una página de inicio de sesión. Añade bi_view.created.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| connection_id (opcional, cadena) | |
| kind (opcional, cadena) | Obligatorio sin connection_id; si no, debe coincidir con la conexión. Permitido: "grafana", "powerbi", "tableau", "web" |
| nombre (requerido, cadena) | minLength: 1 maxLength: 80 |
| url (opcional, cadena) | Una dirección de panel /d/{uid}/... en el host de la conexión. El servidor lee de ella orgId, viewPanel (N o panel-N) o panelId, from, to, var-* y theme. Tableau: una dirección de vista en el host de la conexión (/views/W/V, /t/SITE/views/W/V, #/site/SITE/views/W/V) o Workbook/View. Web: la dirección https de la página en un host público. maxLength: 2048 |
| target (opcional, BITarget) | Qué muestra una vista. Grafana con una conexión: dashboard_uid (y opcionalmente un panel). Power BI con una conexión: workspace_id y report_id, con pages o rotate_all_pages. Tableau con una conexión: view (Workbook/View), con rotate_sheets. Web con una conexión: url. Sin una conexión: solo public_url (y rotate_sheets para Tableau). |
| refresh_s (opcional, entero) | Grafana 30 a 86400; Power BI y Tableau 0 o 60 a 86400; web 60 a 86400. default: 300 minimum: 0 maximum: 86400 |
| rotate_s (opcional, entero) | Power BI y Tableau: 0 o de 10 a 3600; obligatorio para un destino que rota páginas u hojas. default: 0 minimum: 0 maximum: 3600 |
| fit (opcional, cadena) | Permitidos: "contain", "cover", "fill" por defecto: "contain" |
| wait_for (opcional, cadena) | Web: un selector CSS de un elemento que aparece cuando la página está lista, y solo cuando tiene la sesión iniciada. maxLength: 512 |
| wait_ms (opcional, entero) | Web: los milisegundos que se esperan después de que la página esté lista. minimum: 0 maximum: 10000 |
| clip (opcional, cadena) | Web: un selector CSS de la parte de la página que se dibuja. maxLength: 512 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-views'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creado. | BIView (application/json); encabezados: ETag, Cache-Control |
| 400 | invalid_request, incluida una url que no es una dirección de panel de la conexión. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — el plan del proyecto no incluye paneles de BI; required_plan nombra el plan que sí los incluye. | Problema (application/problem+json) |
| 404 | not_found: la conexión no está en este proyecto. | Problema (application/problem+json) |
| 409 | idempotency_mismatch. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar disparadores en proyecto
Enumera los disparadores de alerta CAP del proyecto, del más antiguo al más reciente (máximo 20), cada uno con su URL de ingestión, nombre de usuario y última alerta. La contraseña nunca se devuelve aquí.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/triggers'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Los triggers del proyecto. | Lista de disparadores (application/json); encabezados: Cache-Control |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear disparador en proyecto
Crea un disparador de alerta CAP: una URL entrante a la que un sistema de notificaciones de emergencia (Everbridge, Rave, Alertus, relés IPAWS y otros emisores CAP 1.2) envía alertas, con credenciales HTTP Basic.
La respuesta es el único lugar donde aparece la contraseña (con la respuesta de rotación): guárdela en el sistema de envío de inmediato. target es una etiqueta (todas las pantallas activas con ella cuando llega la alerta) o hasta 500 screen_ids.
Una alerta toma todas las pantallas objetivo con una lista de reproducción predeterminada hasta que la alerta <expires>, o para default_for_seconds (60 a 604800, por defecto 3600); vea POST /api/triggers/{id}/cap. Una organización tiene como máximo 20 disparadores en todos sus proyectos (trigger_limit_reached). Añade trigger.created.
Un reintento exacto con la misma Idempotency-Key devuelve esta misma respuesta, contraseña incluida, durante veinticuatro horas. Un activador cuyo selector alcanza una pantalla protegida es protected_target (409), y una lectura fallida de la protección de pantallas es dependency_unavailable (500, repita la misma solicitud); un activador no está disponible para un llamador limitado a pantallas.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| kind (opcional, cadena) | Permitidos: "cap", "overlay" predeterminado: "cap" |
| etiqueta (requerida, cadena) | minLength: 1 maxLength: 80 |
| objetivo (requerido, TriggerTarget) | Exactamente uno de tag y screen_ids. |
| default_for_seconds (opcional, entero) | Cuánto tiempo mantiene las pantallas una alerta sin <expires>: de 60 a 604800, por defecto 3600, en un activador CAP; cuánto tiempo mantiene su alerta un envío sin duration: de 10 a 604800, por defecto 600, en un activador de superposición. minimum: 10 maximum: 604800 |
| pull (opcional, CapPull) | CAP fuentes que la plataforma lee para el disparador, con dónde están las pantallas objetivo y qué alertas cuentan: los parámetros de una colocación de tarjeta de alerta cap (docs/feeds.md "Alertas CAP"). Cada URL fuente se consulta una vez por minuto para cada disparador y colocación que la nombre. Sin fuentes, se leen los feeds públicos de la plataforma que cubren la ubicación (NWS, Canada NAAD y MeteoAlarm para una ubicación con códigos de área). La alerta coincidente más severa toma el control de las pantallas objetivo exactamente como lo haría un mensaje enviado; cuando las fuentes no muestran ninguna (una cancelación o expiración), termina una alerta extraída. Una fuente obsoleta o fallida nunca termina una alerta. location es obligatorio a menos que se proporcionen fuentes. |
| overlay (opcional, TriggerOverlayWrite) |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/triggers'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creado, con su URL, nombre de usuario y contraseña. | TriggerWithPassword (application/json); encabezados: ETag, Cache-Control |
| 400 | invalid_request, incluyendo una etiqueta malformada o tanto etiqueta como screen_ids. | Problema (application/problem+json) |
| 409 | trigger_limit_reached, idempotency_mismatch, o protected_target cuando el selector alcanza una pantalla de una carpeta de pantallas protegida. | Problema (application/problem+json) |
| 500 | dependency_unavailable - no se pudo ejecutar la comprobación de carpetas de pantallas protegidas; envíe la misma solicitud de nuevo tras una breve espera. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar eventos en proyecto
Lista eventos duraderos del proyecto en orden ascendente por secuencia.
La paginación es contigua: pase el next_cursor devuelto como after para continuar exactamente donde la página se detuvo. next_cursor es el cursor del último evento devuelto mientras ya existen eventos más nuevos, y null al final del historial. limit por defecto es 50 y acepta 1-200; un valor fuera de ese rango se rechaza con invalid_request y un miembro errors[] nombrando limit.
No se admite paginación por desplazamiento. source=log lista el registro del Player en su lugar: los informes de condición que envían los Players (runtime.reported) en orden ascendente por hora de recepción, filtrados por screen_id y severidad en una ventana desde hasta (por defecto las últimas 24 horas, máximo 31 días).
Sus cursores son opacos: lg1_ o ev1_ según dónde el servidor guarda el registro del Player, así que devuelva el que una página retornó; un cursor del otro tipo se rechaza con invalid_request nombrando el campo. Los registros del Player no tienen secuencia, no están en GET /stream/project y no se entregan a webhooks.
Un registro se reconoce cuando la cola del log del Player lo acepta y se mantiene para la retención de eventos del proyecto. Una consulta con el último cursor y la ventana predeterminada sigue al log. Los registros del log del Player no están en la lista predeterminada (source=project). from y to se rechazan con invalid_request a menos que source sea log.
La lista de proyectos toma screen_id, playlist_id y application_id para leer los eventos de una pantalla, lista de reproducción o aplicación, todos con alcance al proyecto de la credencial (un id indica qué eventos leer, nunca de quién): screen_id mantiene los eventos cuyo recurso es esa pantalla; playlist_id los eventos cuyo recurso es esa lista de reproducción más los eventos que la nombran como details.playlist_id (una pantalla que la toma); application_id los eventos cuyo recurso es esa aplicación más los que llevan esa aplicación como application_id (sus versiones y entradas clave/valor).
Un valor que no es un id de su tipo se rechaza con invalid_request nombrando el campo; playlist_id y application_id se rechazan con source=log, cuyos registros pertenecen solo a una pantalla.
Ambas fuentes toman resource_id, tipo y severidad (como mínimo), combinados entre sí, con los filtros de id y con paginación; un registro de log de Player es un registro runtime.reported cuyo recurso es su pantalla, por lo que un resource_id que no sea esa pantalla o un tipo que excluya runtime.reported responde con una página vacía. Las páginas before (o order=desc) muestran primero las más nuevas: next_cursor es entonces el cursor del ítem más antiguo devuelto y se pasa de nuevo como before para continuar hacia ítems más antiguos.
Sin from, una página newest-first source=log alcanza más allá de las 24 horas predeterminadas hasta el registro más antiguo que la retención de eventos del proyecto conserva, como máximo 31 días por debajo del límite superior de la página por solicitud. Una página newest-first source=log puede contener menos registros que el límite, incluso ninguno, con un next_cursor; null aún la termina, al final del registro retenido.
Un llamador limitado a pantallas (docs/screen-scope.md) lee un feed filtrado: eventos de pantallas dentro de su alcance, de las carpetas de pantallas que puede ver (las suyas, las que están encima y las que están dentro; screen.moved solo cuando el destino está dentro de su alcance), de campañas, listas de reproducción, medios, aplicaciones y tarjetas, y revisiones playlist_change.
Se omite cualquier otro evento, así que una página puede contener menos eventos que limit, incluso ninguno, con un next_cursor; siga paginando con él. source=log necesita un screen_id dentro de su alcance. No se envían los eventos sobre el propio proyecto.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| después | consulta | opcional | Un cursor de una respuesta previa: ev1_ para eventos de proyecto (y los flujos de eventos). El registro del Player (source=log) pagina con cursores lg1_ o ev1_ según donde el servidor lo guarda; trátelos como opacos y devuelva el que una página retornó. Un cursor de otro tipo se rechaza con invalid_request. |
| before | consulta | opcional | Páginas más nuevas primero, estrictamente más antiguas que este cursor: un next_cursor de una página más nueva primero, o cualquier cursor de elemento (ev1_ para eventos de proyecto; para source=log el cursor opaco que llevan sus elementos). Vacío o ausente con order=desc comienza en el elemento más nuevo. |
| orden | consulta | opcional | asc páginas más antiguas primero con after; desc páginas más nuevas primero con before. before implica desc; order=asc con before es rechazado. |
| límite | consulta | opcional | Tamaño de página. Un valor fuera de 1-200 se rechaza con invalid_request y un miembro errors[] cuyo campo es limit. |
| origen | consulta | opcional | el proyecto lista los eventos secuenciados del proyecto. el registro lista el registro del Player: informes de condición del Player (runtime.reported), en orden ascendente por hora de recepción. |
| resource_id | consulta | opcional | Solo elementos cuyo resource.id es este id (una pantalla, lista de reproducción, multimedia, webhook, agente o id de aplicación). Con source=log es la pantalla del registro. |
| tipo | consulta | opcional | Un tipo de evento exacto como playlist.updated, o un prefijo de familia que termina en punto como playlist. para cada tipo playlist.*. |
| screen_id | consulta | opcional | Solo los eventos de esta pantalla: con source=project aquellos cuyo recurso es la pantalla, con source=log sus registros Player. Otro tipo de id es rechazado con invalid_request. |
| playlist_id | consulta | opcional | Con source=project, solo los eventos de esta lista de reproducción: aquellos cuyo recurso es la lista de reproducción y aquellos que la nombran como details.playlist_id. Rechazado con source=log. |
| application_id | consulta | opcional | Con source=project, solo los eventos de esta aplicación: aquellos cuyo recurso es la aplicación y aquellos cuyo recurso la lleva como application_id (sus lanzamientos y entradas clave/valor). Rechazado con source=log. |
| gravedad | consulta | opcional | Severidad mínima: info incluye todos los ítems, warning mantiene advertencias y errores, error mantiene errores. Ambas fuentes. |
| desde | consulta | opcional | Con source=log, el inicio de la ventana (inclusivo). Por defecto es 24 horas antes de to; una página newest-first sin from retrocede hasta la retención de eventos del proyecto. |
| a | consulta | opcional | Con source=log, el fin de la ventana (exclusivo). Por defecto es ahora. La ventana es como máximo de 31 días. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/events'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Eventos duraderos (source=project) o registros de log del Player (source=log) | EventList (application/json) |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener capacidades de proyecto en proyecto
El plan del proyecto que llama, indicadores independientes de anunciante/pantallas con su revisión, el conjunto de capacidades efectivas derivadas, las funciones del plan que tiene (plan_features) y sus límites (limits). Nunca refleja una reclamación del cliente; un plan desconocido falla cerrado como prohibido.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/capabilities'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Capacidades del proyecto. | ProjectCapabilities (application/json); headers: Cache-Control |
| 403 | prohibido: el plan del proyecto no está en el catálogo. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener saldo de facturación en proyecto
La instantánea del saldo consciente de la fuente del proyecto que llama. Todos los montos en milicréditos son cadenas decimales canónicas. Es una instantánea, no autoridad para pagar; rails_available es falso mientras la tarjeta, impuestos y canal de retiro no estén disponibles.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/billing/balance'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Instantánea de balance. | Saldo de facturación (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener estado de cuenta de facturación en proyecto
Paginación estable con cursor sobre entradas de diario inmutables publicadas para el proyecto que llama. Las retenciones no son entradas publicadas. Las correcciones enlazan al evento original en lugar de reescribirlo. No hay mutación arbitraria de concesión o pago en esta superficie.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| cursor | consulta | opcional | |
| límite | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/billing/statement'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Página de estado de cuenta. | Estado de cuenta de facturación (application/json) |
| 400 | invalid_request - el límite está fuera de rango. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener uso de facturación en proyecto
El uso del proyecto que llama durante un mes UTC, con los bytes servidos y recibidos (nunca se cobran), el almacenamiento cobrado por encima del almacenamiento gratuito del plan del pagador (allowance.storage_bytes), y las solicitudes de API, los eventos de flujo del proyecto facturados y los intentos de entrega de webhook contados frente a los 10,000 gratuitos al mes. Un proyecto que paga por sí mismo lee su propio fondo.
Un proyecto que otro pagador paga comparte el grupo de ese pagador con los otros proyectos del pagador; lee su propia parte, y payer nombra al pagador. El total del grupo del pagador permanece en las lecturas de facturación del pagador.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| periodo | consulta | opcional | Mes UTC en formato YYYY-MM; por defecto el mes actual. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/billing/usage'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Uso del proyecto. | ProjectBillingUsage (application/json); headers: Cache-Control |
| 400 | invalid_request - el período no es un mes UTC en formato YYYY-MM. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener red publicitaria en proyecto
La red única del vendedor que llama, incluyendo su tarifa resuelta de servicio de ScreenRig. Los vendedores no pueden cambiar esa tarifa.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/network'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Red. | AdvertisingNetwork (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear red publicitaria en proyecto
Crea la única red del vendedor que llama si no existe. Requiere screens=true. Idempotente; repetir devuelve la misma red.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (requerido, cadena) | maxLength: 120 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/network'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Red. | AdvertisingNetwork (application/json) |
| 403 | prohibido: el proyecto carece de capacidad para pantalla o tiene un plan desconocido. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Establecer tarifa predeterminada de publicidad en proyecto
Establece la tarifa predeterminada del proyecto del vendedor por cada 15 segundos de reproducción completada. Un cambio que altera la tarifa efectiva de una campaña aceptada pausa toda esa campaña con price_change_pending; un cambio enmascarado o sin efecto no. If-Match lleva la revisión de la red.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| If-Match | encabezado | opcional | Revisión positiva opcional de recurso. Omitir para escribir el recurso actual; una revisión obsoleta suministrada es revision_conflict. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| rate_mcr_per_15s (requerido, McrString) | Cantidad exacta de milicréditos enteros como cadena decimal canónica. 1 crédito es 1000 mcr. pattern: "^-?[0-9]+$" |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/network/rate'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Red actualizada. | AdvertisingNetwork (application/json) |
| 412 | revision_conflict: If-Match está obsoleto. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar inventario publicitario en proyecto
El inventario seleccionado por el vendedor que llama.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/inventory'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Inventario. | AdvertisingInventoryList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar espacios publicitarios en proyecto
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/slots'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Ranuras. | AdvertisingSlotList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear espacio publicitario en proyecto
Crea un espacio de vendedor reutilizable. Las imágenes duran de 5 a 30 segundos y los videos como máximo el límite de la plataforma de 120 segundos. Los anuncios siempre están silenciados.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (requerido, cadena) | minLength: 1 maxLength: 120 |
| habilitado (opcional, booleano) | |
| accepted_media (requerido, arreglo) | |
| max_image_duration_ms (requerido, entero) | mínimo: 5000 máximo: 30000 |
| max_video_duration_ms (requerido, entero) | mínimo: 1000 máximo: 120000 |
| rate_override_mcr_per_15s (opcional, en línea) | |
| vast_tag_url (opcional, en línea) | La propia etiqueta de anuncio VAST 2-4 del vendedor, probada cuando ninguna campaña invitada llena este espacio en las pantallas propias del vendedor. Solo HTTPS en puerto 443 o 8443 a un host público. El backend lo obtiene, sigue hasta cinco Wrappers, ingiere el MediaFile MP4 o WebM progresivo elegido en los medios del proyecto y dispara Impression, creativeView y start en un inicio aceptado, complete en una finalización aceptada y Error en fallo. No se disparan rastreadores de cuartiles. Se expanden las macros [CACHEBUSTING], [TIMESTAMP], [SCREENRIG_SCREEN_ID], [SCREENRIG_SLOT_ID] y [SCREENRIG_PAGE_ID]. La ranura debe aceptar video. Null, ausente o vacío limpia la etiqueta. Los compradores nunca la ven. |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/slots'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Ranuraslot. | AdvertisingSlot (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar membresías publicitarias en proyecto
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/memberships'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Membresías. | AdvertisingMembershipList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar redes publicitarias unidas en proyecto
Redes a las que pertenece actualmente el anunciante que llama, con el alcance y la política de revisión otorgados. El conteo de pantallas no garantiza impresiones.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/networks'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Redes unidas. | AdvertisingJoinedNetworkList (application/json) |
| 403 | prohibido: el proyecto carece de la bandera de anunciante. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar creatividades publicitarias en proyecto
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/creatives'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Creatividades. | AdvertisingCreativeList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear creatividad publicitaria en proyecto
Vincula una revisión de contenido multimedia lista y propia a una creativa inmutable. No copia bytes, no vuelve a subir ni recarga generación. Se rechaza contenido multimedia desconocido o no listo.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| media_id (requerido, cadena) | |
| copy (opcional, cadena) | maxLength: 500 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/creatives'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creatividad. | AdvertisingCreative (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar campañas publicitarias en proyecto
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/campaigns'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Campañas. | AdvertisingCampaignList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear campaña publicitaria en proyecto
Crea una campaña en borrador. Los borradores no contienen dinero, no reservan nada y no autorizan entregas. La activación requiere una cotización aceptada explícitamente.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (requerido, cadena) | minLength: 1 maxLength: 120 |
| category (opcional, AdvertisingCategory) | La categoría del anunciante. Dos anuncios de una misma categoría nunca se reproducen en la misma pausa publicitaria de una pantalla; un anuncio sin categoría nunca se separa. Permitido: "alcohol", "apparel", "automotive", "beauty", "cannabis", "consumer_electronics", "education", "entertainment", "financial_services", "food_and_beverage", "gambling", "government", "grocery", "health_and_pharma", "home_and_garden", "insurance", "jobs", "legal", "media", "political", "quick_service_restaurants", "real_estate", "restaurants", "retail", "sports_and_fitness", "technology", "telecom", "tobacco_and_vaping", "travel", "utilities" |
| daily_cap_mcr (requerido, McrString) | Cantidad exacta de milicréditos enteros como cadena decimal canónica. 1 crédito es 1000 mcr. pattern: "^-?[0-9]+$" |
| lifetime_cap_mcr (requerido, McrString) | Cantidad exacta de milicréditos enteros como cadena decimal canónica. 1 crédito es 1000 mcr. pattern: "^-?[0-9]+$" |
| image_duration_ms (opcional, entero) | Tiempo de permanencia de imagen en toda la campaña. Los videos mantienen su duración verificada por el servidor. predeterminado: 10000 mínimo: 5000 máximo: 30000 |
| max_play_price_mcr (opcional, en línea) | Precio máximo positivo por reproducción completada. Omitir para no tener límite adicional. |
| flight_start (requerido, cadena) | formato: "date-time" |
| flight_end (requerido, cadena) | formato: "date-time" |
| redes (requerido, arreglo) |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/campaigns'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Campaña en borrador. | AdvertisingCampaign (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar reseñas publicitarias en proyecto
Versiones creativas enviadas al vendedor que llama para revisión. Un vendedor ve solo la creatividad enviada exacta, nunca la biblioteca del comprador.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/reviews'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Revisiones. | AdvertisingReviewList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener gasto publicitario en proyecto
Gastos y conteos de entrega limitados al comprador para una campaña. Las cantidades son cadenas decimales mcr. Nunca expone ingresos del vendedor, estado bancario o uso del proyecto.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| formato | consulta | opcional | json (por defecto) devuelve el informe como JSON. csv, xlsx y pdf devuelven las mismas filas como archivo adjunto (cada página de un informe paginado, hasta 50000 filas). |
| campaign_id | consulta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/reports/spend?campaign_id=CAMPAIGN_ID'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Informe de gastos. | AdvertisingSpendReport (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener entrega publicitaria en proyecto
Bruto, tarifa de servicio y neto con alcance del vendedor para una ventana, con su propia evidencia de entrega. Nunca expone la cartera del comprador u otras redes. Solo la evidencia autorizada de reproducción completa establece la entrega facturable. La ventana es como máximo de 92 días; una ventana más amplia es invalid_request.
Cuando contiene más de 5000 liquidaciones, la respuesta establece truncado, totales y recuentos aún cubren todos ellos y filas lista solo los primeros 5000.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| formato | consulta | opcional | json (por defecto) devuelve el informe como JSON. csv, xlsx y pdf devuelven las mismas filas como archivo adjunto (cada página de un informe paginado, hasta 50000 filas). |
| desde | consulta | requerido | |
| a | consulta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/reports/delivery?from=FROM&to=TO'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Informe de entrega. | AdvertisingDeliveryReport (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar agregados de reproducción en proyecto
Agregados diarios de reproducción.
JSON devuelve a lo sumo 200 filas y no tiene límite de tasa. format=csv (o Accept text/csv sin application/json) transmite cada fila coincidente dentro de day_from a day_to (días UTC inclusivos; por defecto day_to hoy y day_from 30 días antes; máximo 366 días, sino invalid_request) como CSV con una fila fija de encabezado (PlaybackAggregateCsv); solo el formulario CSV consume los presupuestos playback-export-org (30 por minuto) y playback-export-ip (60 por minuto).
Cualquiera de las dos formas es una solicitud API medida. Las respuestas llevan Vary Accept. Un llamador limitado a pantallas (docs/screen-scope.md) debe enviar screen_id y debe ser una pantalla dentro de su alcance (de lo contrario outside_screen_scope); las formas CSV siguen la misma regla.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| screen_id | consulta | opcional | |
| media_id | consulta | opcional | |
| día | consulta | opcional | Día calendario UTC del agregado. |
| day_from | consulta | opcional | Primer día UTC, inclusive. Excluye day. Con day_to abarca como máximo 366 días. CSV lo establece por defecto a 30 días antes de day_to. |
| day_to | consulta | opcional | Último día UTC, inclusive. Excluye el día. CSV lo establece por defecto a hoy (UTC). |
| formato | consulta | opcional | json (por defecto), csv, xlsx o pdf. Si se omite, un encabezado Accept que nombra text/csv pero no application/json selecciona csv. xlsx y pdf escriben las primeras 50000 filas de la misma lista. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Agregados diarios de reproducción para el proyecto que realiza la llamada, tanto imágenes como videos. Una fila por pantalla, contenido multimedia y día UTC. Los días más recientes primero. Los identificadores filtran las filas propias del llamante y nunca son una búsqueda cruzada entre proyectos. | PlaybackAggregateList (application/json), PlaybackAggregateCsv (text/csv); encabezados: Vary, RateLimit-Policy, RateLimit |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar reproducciones de reproducción en proyecto
Registros por reproducción: una fila por cada playback.media_started aceptado (o playback.video_started heredado) y una fila por cada playback.application_started aceptado (release_id establecido, campos de medios vacíos) del proyecto que llama, el más antiguo primero por received_at, empates por inserción. desde (inclusive) y hasta (exclusivo) límite received_at; hasta por defecto ahora, desde hasta 24 horas antes de hasta, y el rango es como máximo 31 días (invalid_request de lo contrario).
Los últimos 5 segundos aún no se devuelven: el to efectivo es como máximo ahora menos 5 segundos (retraso de asentamiento), por lo que una cola en vivo nunca omite una fila que se compromete detrás de su cursor. Filtran screen_id, media_id, playlist_id (la lista de reproducción desde la que se mostró el inicio) y tag (una etiqueta de pantalla que la pantalla tenía cuando se recibió la reproducción).
Una página de playlist_id puede contener menos filas que el límite, incluso ninguna, con un next_cursor cuando se escaneó un largo tramo de reproducciones de otras listas; null aún termina el rango.
JSON es una página de a lo sumo limit filas (por defecto 200, máximo 1000) con next_cursor, null al final del rango; devuélvalo como cursor con los mismos filtros. order=desc (o before) pagina los más nuevos primero dentro del mismo rango: next_cursor es entonces el cursor de la fila más antigua devuelta, null al inicio del rango, y se devuelve como before (exclusivo) con los mismos filtros; order=asc con before se rechaza con invalid_request nombrando order, y cursor con una página newest-first nombrando cursor.
Una página con lo más nuevo primero puede contener menos filas que el límite, incluso ninguna, con un next_cursor; null aún termina la lista.
Una página posterior nunca omite una fila que existía cuando se leyó la página anterior y no repite una, excepto que un inicio que el Player reenvió tras un reporte no reconocido (el mismo play_id, recibido un momento después) puede aparecer de nuevo en una página posterior; el flujo CSV la lista una vez. format=csv (o Aceptar text/csv sin application/json) transmite cada reproducción desde el cursor hasta el final del rango como CSV (PlaybackPlayCsv), más recientes primero abajo antes con order=desc; se rechaza limit con CSV.
La medición es por solicitud: cada página JSON cuesta un crédito de solicitud API, mientras que un flujo CSV de todo el rango cuesta uno. Cada solicitud de reproducciones (página o flujo) consume los presupuestos playback-export-org (30 por minuto) y playback-export-ip (60 por minuto).
Un flujo delimita cada escritura (15 segundos) y termina cuando el cliente se desconecta; si falla después del encabezado 200, la conexión se aborta, por lo que una exportación que lee hasta un final limpio está completa. Las respuestas llevan Vary Accept. Las reproducciones se mantienen por la retención de eventos del plan (30 días es el mínimo entregado; la retención basada en el plan usa la ventana propia de 7 o 90 días del plan).
Un llamador limitado a pantallas (docs/screen-scope.md) debe enviar screen_id y debe ser una pantalla dentro de su alcance (de lo contrario outside_screen_scope); las formas CSV siguen la misma regla.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| desde | consulta | opcional | Límite inferior inclusivo en received_at. Por defecto, 24 horas antes de to. |
| a | consulta | opcional | Límite superior exclusivo en received_at. Por defecto es ahora. to - from es máximo 31 días. |
| screen_id | consulta | opcional | |
| media_id | consulta | opcional | |
| playlist_id | consulta | opcional | Solo reproducciones mostradas de esta lista de reproducción. |
| etiqueta | consulta | opcional | Una etiqueta de pantalla que la pantalla llevaba cuando se recibió la reproducción. |
| cursor | consulta | opcional | next_cursor de la página anterior, con los mismos filtros. Opaco. |
| orden | consulta | opcional | asc páginas más antiguas primero con cursor; desc páginas más nuevas primero con before. before implica desc; order=asc con before es rechazado. |
| before | consulta | opcional | Páginas más nuevas primero, estrictamente más antiguas que esta posición: el next_cursor de una página más nueva primero, con los mismos filtros. Opaco. |
| límite | consulta | opcional | Tamaño de página JSON. Rechazado con CSV. |
| formato | consulta | opcional | json (por defecto), csv, xlsx o pdf. Si se omite, un encabezado Accept que nombra text/csv pero no application/json selecciona csv. xlsx y pdf escriben las primeras 50000 filas de la misma lista. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback/plays'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Una página de reproducciones, o el flujo CSV. | PlaybackPlayList (application/json), PlaybackPlayCsv (text/csv); encabezados: Cache-Control, Vary, RateLimit-Policy, RateLimit |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 401 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener totales de reproducción en proyecto
Totales de reproducción del proyecto que llama durante días UTC inclusivos, leídos de los resúmenes diarios: by=day devuelve una fila por día con reproducciones (screen_id o media_id lo limita a una pantalla o medio), by=screen y by=media clasifican las pantallas o medios más activos (top, máximo 100), y by=screen_day devuelve la serie diaria de las pantallas principales (top máximo 10). day_to por defecto es hoy (UTC) y day_from 29 días antes.
Una serie de días abarca como máximo 366 días (92 cuando se limita a una pantalla o medio); un ranking como máximo 92. Los conteos incluyen cada inicio que el proyecto ha registrado, incluidos los almacenados antes de que existieran los rollups de reproducción.
Los rollups siguen la ingestión hasta aproximadamente 21 minutos. truncated es verdadero cuando un ranking se construyó a partir de fragmentos de una ventana demasiado grande para una lectura: cubre las mejores claves de cada fragmento. No tiene límite de tasa. Una solicitud de API medida.
Un llamador limitado a pantallas (docs/screen-scope.md) debe enviar screen_id y debe ser una pantalla dentro de su alcance (de lo contrario outside_screen_scope); las formas CSV siguen la misma regla.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| formato | consulta | opcional | json (por defecto) devuelve el informe como JSON. csv, xlsx y pdf devuelven las mismas filas como archivo adjunto (cada página de un informe paginado, hasta 50000 filas). |
| por | consulta | opcional | día: reproducciones por día; pantalla, multimedia: las claves más activas; screen_day: la serie diaria de las pantallas principales. |
| day_from | consulta | opcional | Primer día UTC, inclusive. Por defecto 29 días antes de day_to. Una serie de días abarca como máximo 366 días (92 cuando se limita a una pantalla o contenido multimedia), un ranking como máximo 92. |
| day_to | consulta | opcional | Último día UTC, inclusive. Por defecto hoy (UTC). |
| screen_id | consulta | opcional | |
| media_id | consulta | opcional | |
| superior | consulta | opcional | Cuántas pantallas o contenidos multimedia devuelve un ranking (máximo 10 para by=screen_day). Rechazado con by=day. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback/totals'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Totales del agrupamiento solicitado. | PlaybackTotals (application/json); encabezados: Cache-Control |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 401 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener completitud de la reproducción en el proyecto
Cuántas de las reproducciones que realizaron las pantallas llegaron al backend y dónde estaban las que no llegaron. Los Players numeran los inicios de sus elementos multimedia, así que un inicio que nunca llegó deja un hueco en la numeración, por ejemplo cuando una pantalla permanece sin conexión más allá de su cola de informes de 24 horas o la cola descarta informes.
En los días UTC inclusivos de day_from a day_to (day_to es por defecto hoy, en UTC, y day_from 29 días antes; la ventana abarca como máximo 92 días), la respuesta contiene measured_plays, las reproducciones numeradas que llegaron; missing_plays, los números que los Players omitieron; completeness, measured_plays dividido entre su suma, null cuando ambos son 0; days, las mismas tres cifras de cada día que tenga alguna reproducción medida o faltante, del más antiguo al más reciente, con un hueco contado en el día UTC de la reproducción que le sigue; y gaps, los huecos del más reciente al más antiguo, cada uno con su screen_id, su day, from y to (las horas de inicio de las reproducciones a cada lado del hueco) y missing_plays. screen_id limita days y gaps a una pantalla; limit (100 por defecto, máximo 500) establece el máximo de gaps, y truncated es true cuando hay más.
Una pantalla apagada no realiza reproducciones ni deja huecos. Las reproducciones sin número (Players antiguos, inicios almacenados antes de los números de reproducción) no se miden: están en play_count de GET /api/playback/totals y en ninguna de estas cifras. Sin límite de frecuencia. Una solicitud de API medida.
Un llamador limitado a pantallas (docs/screen-scope.md) debe enviar screen_id y debe ser una pantalla dentro de su alcance (de lo contrario outside_screen_scope); las formas CSV siguen la misma regla.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| formato | consulta | opcional | json (por defecto) devuelve el informe como JSON. csv, xlsx y pdf devuelven las mismas filas como archivo adjunto (cada página de un informe paginado, hasta 50000 filas). |
| day_from | consulta | opcional | Primer día UTC, inclusive. El valor predeterminado es 29 días antes de day_to. Con day_to, el intervalo abarca como máximo 92 días. |
| day_to | consulta | opcional | Último día UTC, inclusive. Por defecto hoy (UTC). |
| screen_id | consulta | opcional | |
| límite | consulta | opcional | Cantidad máxima de huecos que se listan, del más reciente al más antiguo. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback/completeness'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | La completitud de la ventana y sus huecos. | PlaybackCompleteness (application/json); encabezados: Cache-Control |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 401 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener Health Trend en proyecto
La salud de la flota del proyecto por hora UTC: cuántas pantallas reportaron, y cuántas de ellas estaban calientes (a 80 °C o más), tenían un monitor desconectado o estaban fallando (3 o más fallos en 24 horas). from (inclusive) y to (exclusive) por defecto son las últimas 24 horas, máximo 93 días; una página contiene a lo sumo limit filas (por defecto 100, máximo 500) con next_cursor, nulo al final.
Las horas van por detrás de los informes hasta unos 5 minutos. Se rechaza a un llamador limitado a pantallas (outside_screen_scope); GET /api/screens/{id}/health/history es la forma por pantalla.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| formato | consulta | opcional | json (por defecto) devuelve el informe como JSON. csv, xlsx y pdf devuelven las mismas filas como archivo adjunto (cada página de un informe paginado, hasta 50000 filas). |
| desde | consulta | opcional | Límite inferior inclusivo en el tiempo del informe. Por defecto, 24 horas antes de to. |
| a | consulta | opcional | Límite superior exclusivo en el tiempo del informe. Por defecto es ahora. |
| límite | consulta | opcional | Tamaño de página. |
| cursor | consulta | opcional | next_cursor de la página anterior, con los mismos filtros. Opaco. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/health/trend'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Una página de estado de salud de la flota por hora. | HealthTrend (application/json); encabezados: Cache-Control |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 401 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Obtener tiempo activo de proyecto en proyecto
Disponibilidad diaria de las pantallas del proyecto durante días UTC inclusivos (por defecto y rango como GET /api/screens/{id}/uptime). Cada fila suma los segundos online y offline de las pantallas con estado registrado ese día; la cobertura es la proporción del día de esas pantallas con estado registrado.
Los intervalos se cuentan cuando terminan, así que la fila de hoy abarca los intervalos que han terminado hasta ahora; el recuento en línea en vivo está en el resumen del panel. Se rechaza a un llamador limitado a pantallas (outside_screen_scope); GET /api/screens/{id}/uptime es la forma por pantalla.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| formato | consulta | opcional | json (por defecto) devuelve el informe como JSON. csv, xlsx y pdf devuelven las mismas filas como archivo adjunto (cada página de un informe paginado, hasta 50000 filas). |
| day_from | consulta | opcional | Primer día UTC, inclusive. Por defecto 29 días antes de day_to. Con day_to abarca como máximo 366 días. |
| day_to | consulta | opcional | Último día UTC, inclusive. Por defecto hoy (UTC). |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/uptime/daily'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Filas diarias de tiempo activo, las más antiguas primero. | ProjectUptime (application/json); headers: Cache-Control |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 401 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar tipos de tarjetas en proyecto
Descubra tarjetas integradas del catálogo publicado de este entorno, combinado con el inventario del proveedor. La actualización y verificación del esquema se realizan en segundo plano; esta ruta nunca llama al bucket edge. Cada entrada lista su copia actual, su nivel y los diseños permitidos para ese nivel, y cada versión principal servida.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-types'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Catálogo de tarjetas integrado, ordenado por id | Catálogo de tarjetas (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar datos de tarjetas en proyecto
Enumera los documentos de datos de tarjeta del proyecto, como máximo 200 en orden ascendente por clave. next_cursor es la última clave devuelta; pásela como after para la siguiente página, null cuando no haya más. Los documentos de datos de tarjeta contienen las propiedades dinámicas de las ubicaciones de tarjetas (secciones de menú, elementos de ticker, mosaicos KPI); la clave de datos de la ubicación nombra una.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| después | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Documentos de datos de tarjeta | Lista de datos de tarjeta (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar multimedia en proyecto
Lista multimedia listo, las más nuevas primero, máximo 1000 por página. folder mantiene solo los archivos directamente dentro de una carpeta multimedia (su ID), o con root solo los de la raíz de la biblioteca; un ID de carpeta bien formado que no nombra ninguna carpeta no lista nada. next_cursor es la posición de la última fila devuelta mientras queden más filas; páselo como after, con los mismos filtros, para la siguiente página. next_cursor es nulo en la última página.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| etiqueta | consulta | opcional | Etiqueta multimedia exacta. Los objetos sin etiqueta se omiten cuando este filtro está presente. |
| primitiva | consulta | opcional | |
| carpeta | consulta | opcional | Un ID de carpeta multimedia mantiene solo los archivos directamente dentro de esa carpeta, no los de sus subcarpetas; root mantiene solo los archivos en la raíz de la biblioteca. Omitir lista todos los archivos. |
| ids | consulta | opcional | IDs de medios separados por comas, como máximo 200 distintos; si son más, es invalid_request en ids. Conserva solo esos archivos: un id que no nombra ningún archivo listo está ausente, y los demás filtros y la paginación se siguen aplicando. Un valor vacío no lista nada. |
| library | consulta | opcional | true enumera el proyecto Biblioteca de la organización en lugar de este proyecto: sus elementos son de solo lectura aquí y llevan library true. Una organización sin Biblioteca, o el propio proyecto Biblioteca, no enumera nada con true. |
| después | consulta | opcional | next_cursor de la página anterior de la misma lista, con los mismos filtros. Omitido comienza en la fila más reciente. Un valor que no sea tal cursor es invalid_request. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Multimedia | MediaList (application/json) |
Crear generación de medios en proyecto
Generar una imagen fija a partir de un prompt, almacenarla como medio privado listo del proyecto y facturar su uso. El POST responde 202 de inmediato con Operation, con o sin Prefer: respond-async, porque un proxy situado delante de la API descarta una solicitud que no envía ningún byte durante 100 s y una imagen fija de alta calidad puede tardar más.
Consulte GET /api/operations/{id} hasta que Operation sea succeeded, cuando su result es {media_id, usage: {quality, credits, usd}} (MediaGenerationUsage), o failed, cuando su error es el problema. Un rechazo decidido antes de cualquier trabajo del proveedor (payment_required, reseller_generation_limit, rate_limited, not_ready, invalid_request) aún responde al POST.
Nunca incluye bytes de imagen, b64_json, claves de objeto, URLs firmadas, URLs del proveedor, costo del proveedor, tokens del proveedor ni el nombre del modelo de despliegue. El prompt son bytes del cliente y no se repite.
Antes de que la indicación llegue al proveedor de imágenes, el servidor añade requisitos fijos de encuadre: la obra debe llenar el marco de borde a borde, y no se puede mostrar ningún televisor, monitor, pantalla, panel, marco, borde, montaje, soporte, pared, habitación, maqueta de dispositivo, sombra o fotografía de un letrero instalado, y cualquier texto en la indicación del llamante que describa dónde colgará el letrero o qué dispositivo lo mostrará se trata como metadatos de ubicación y no como tema.
Las reglas decorativas y los bordes dentro del propio diseño permanecen disponibles. El prompt del llamador nunca se reescribe ni se elimina y se almacena sin cambios. Idempotency-Key reproduce la misma Operation, nunca un segundo intento facturado. Los clientes no hacen PUT ni confirman los bytes generados.
La versión almacenada es WebP con pérdida (calidad 90) en el tamaño exacto de aspecto con un borde corto de 1080 px (16:9 es 1920x1080, 9:16 1080x1920, 1:1 1080x1080, 4:3 1440x1080, 3:4 1080x1440, 3:2 1620x1080, 2:3 1080x1620); el lienzo del proveedor se recorta y remuestrea centrado a ese tamaño.
El nombre de archivo es distintivo por generación, generado-16x9-1a2b3c4d.webp, con el sufijo tomado del id del medio. Obtenga los bytes con GET /api/media/{id}/content. Own-gen-then-upload sigue siendo válido.
En Standard, el saldo restante que no puede cubrir el doble del costo del proveedor de la imagen fija, redondeado a créditos enteros, después del piso de introducción (negativo 1,000,000 créditos hasta 2027-01-01, luego cero) devuelve payment_required, excepto SCREENRIG__ENVIRONMENT=development, y la admisión antes de la llamada al proveedor requiere un saldo por encima de ese piso por el mínimo por calidad: 200 créditos para baja, 800 para media, 2000 para alta.
Los demás planes nunca se rechazan por su saldo.
Una organización facturada a través de un revendedor es rechazada con reseller_generation_limit (402) en cuanto a los clientes delegados de su revendedor se les ha facturado el límite mensual de generación de imágenes ($100 a precio de lista mientras el revendedor espera revisión, $1,000 después, contado por mes UTC), salvo que el crédito propio de la organización cubra la imagen; una generación ya admitida termina.
Una configuración vacía del proveedor seleccionado devuelve not_ready. Solo con token de proyecto. Una sola generación en curso por organización; más paralelismo es rate_limited.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | requerido | |
| Prefer | encabezado | opcional | Opcional. La ruta responde 202 de inmediato con Operation, con o sin este encabezado; consulte Operation. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| prompt (requerido, cadena) | minLength: 1 maxLength: 4000 |
| aspect_ratio (opcional, cadena) | Permitido: "1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3" predeterminado: "16:9" |
| calidad (opcional, cadena) | Permitido: "low", "medium", "high" por defecto: "medium" |
| etiqueta (opcional, cadena) | patrón: "^[A-Za-z0-9]{1,32}$" |
| referencias (opcional, arreglo) |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media/generations'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 202 | La generación fue aceptada y continúa; consulte GET /api/operations/{id} hasta que Operation sea succeeded (result media_id y usage) o failed (error). El mismo Idempotency-Key responde con la misma Operation. | Operación (application/json); encabezados: Preference-Applied, RateLimit-Policy, RateLimit |
| 402 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 500 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar carpetas de medios en proyecto
Lista todas las carpetas multimedia en el proyecto, máximo 1000, ordenadas por nombre. Las carpetas organizan la biblioteca multimedia, y un selector de playlist por:folder reproduce los archivos directamente dentro de una carpeta. El parent_id de una carpeta es nulo en la raíz de la biblioteca.
Construya el árbol desde parent_id; la carpeta de un archivo es Media.folder_id. library=true enumera en su lugar las carpetas de la Biblioteca de la organización (solo lectura; un selector by:folder puede nombrar una).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| library | consulta | opcional | true enumera el proyecto Biblioteca de la organización en lugar de este proyecto: sus elementos son de solo lectura aquí y llevan library true. Una organización sin Biblioteca, o el propio proyecto Biblioteca, no enumera nada con true. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-folders'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Carpetas multimedia | MediaFolderList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear carpeta de medios en proyecto
Crea una carpeta de medios en la raíz de la biblioteca (parent_id nulo o ausente) o dentro de parent_id. Los nombres se recortan, tienen de 1 a 100 caracteres Unicode sin controles, no son "." ni "..", y pueden repetirse. Una organización tiene como máximo 1000 carpetas en todos sus proyectos (quota_exceeded) anidadas a lo sumo 10 niveles (invalid_request). Emite media.folder_created.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre (requerido, cadena) | Recortado; 1 a 100 caracteres Unicode, sin controles, no . ni .. minLength: 1 maxLength: 100 |
| parent_id (opcional, en línea) | La carpeta donde crearla; nulo o ausente para la raíz de la biblioteca. |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-folders'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Carpeta creada. | MediaFolder (application/json); encabezados: ETag |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Mover multimedia en proyecto
Mueve archivos (media_ids) y carpetas (folder_ids) a una carpeta (folder_id), o a la raíz de la biblioteca cuando folder_id es nulo, en una sola solicitud todo o nada de hasta 1000 IDs. Cada ID debe existir (not_found). Una carpeta no puede moverse dentro de sí misma ni dentro de una carpeta contenida en ella, y el movimiento debe mantener cada carpeta dentro de 10 niveles (invalid_request).
Los elementos ya en el destino se dejan tal cual; cada archivo y carpeta movidos avanza su revisión. Mover archivos cambia lo que los selectores by:folder de sus carpetas vieja y nueva reproducen, desde la resolución del siguiente selector de cada pantalla; mover una carpeta no cambia los archivos propios de ninguna carpeta. Emite media.moved.
El movimiento de una credencial Propose hace que cada archivo movido quede pendiente y pone en cola su revisión de medios, y los selectores de listas de reproducción aprobadas lo resuelven por la carpeta con la que fue aprobado hasta que una persona aprueba el cambio (docs/reviews.md).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| folder_id (requerido, en línea) | Carpeta de destino; nulo para la raíz de la biblioteca. |
| media_ids (opcional, arreglo) | |
| folder_ids (opcional, arreglo) |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media/move'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Cuántos archivos y carpetas se movieron. | MediaMoveResult (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear carga de medios en proyecto
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | requerido | |
| project_id | consulta | opcional | Requerido con dashboardSession: el proyecto donde se puso en cola el archivo. Debe coincidir con el proyecto seleccionado en la sesión, de lo contrario resource_conflict. Esto vincula la admisión de carga entre pestañas. El id de carga devuelto permanece con alcance de proyecto para carga y compromiso de bytes. Omitido con un portador de proyecto. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| nombre de archivo (requerido, cadena) | Nombre de los bytes que se están subiendo, tal como se enviarán: solo un nombre de archivo de 255 bytes UTF-8 como máximo, sin directorio, barra invertida ni caracteres de control. minLength: 1 maxLength: 255 |
| source_filename (opcional, cadena) | Nombre original del archivo del llamante antes de cualquier transcodificación del lado del cliente. Solo el nombre del archivo, de 255 bytes UTF-8 como máximo. Guardado tal cual en el medio listo como source_filename y usado para derivar filename. minLength: 1 maxLength: 255 |
| content_type (obligatorio, cadena) | Permitido: "image/png", "image/jpeg", "image/webp", "image/gif", "video/mp4", "video/webm", "audio/mpeg" |
| bytes (requerido, entero) | mínimo: 1 máximo: 1073741824 |
| sha256 (obligatorio, cadena) | patrón: "^[a-f0-9]{64}$" |
| etiqueta (opcional, cadena) | patrón: "^[A-Za-z0-9]{1,32}$" |
| folder_id (opcional, cadena) | La carpeta de medios en la que cae el medio listo; si se omite, cae en la raíz de la biblioteca. La carpeta debe existir cuando se declara la carga (de lo contrario, invalid_request en folder_id) y cuando se confirma (la operación falla con invalid_request: declárela de nuevo). Un usuario de carga (docs/uploaders.md) debe enviar una de sus carpetas (de lo contrario, outside_upload_scope). |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media/uploads'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Autorización firmada de corta duración para exactamente un PUT de objeto privado. Envíe el método devuelto y cada encabezado devuelto textualmente. Así también carga el dashboard. Su navegador envía los bytes con PUT directamente al almacén de objetos, nunca a través de la API, porque un proxy situado delante de la API rechaza un cuerpo de solicitud de más de 100 MB. Un navegador establece Content-Length por sí mismo a partir del cuerpo, por lo que envía cada encabezado devuelto excepto ese. | MediaUploadSession (application/json); encabezados: Cache-Control, RateLimit-Policy, RateLimit |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Selector de vista previa en proyecto
Vista previa solo lectura de coincidencias actuales de imagen o video propiedad del proyecto. Devuelve orden de archivo y política normalizada; la reproducción aleatoria se baraja en cada nuevo ciclo en el Player. No avanza cursores, concede contenido ni altera manifiestos. Más de 1024 coincidencias devuelve invalid_request.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| zona horaria (opcional, cadena) | Zona IANA en la que se lee la disponibilidad del medio; UTC por defecto. |
| rect (opcional, objeto) | El tamaño rect de la primitiva; obligatorio con selector.fit aspect. |
| primitiva (requerido, cadena) | Permitido: "image", "video" |
| selector (requerido, en línea) |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/selectors/preview'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Coincidencias del selector actual. | SelectorPreview (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar reportes de errores en proyecto
Devuelve los informes de errores propios del proyecto que llama, los más recientes primero, hasta cien. Nunca se devuelven envíos de otro proyecto. Lea un hilo propio por su ID de retroalimentación. No hay cursor de paginación en v1. Cada envío lleva su estado y las respuestas del personal/agente, las más antiguas primero.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/bugs'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Informes de errores propiedad del proyecto que llama. | FeedbackList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Reportar error en proyecto
Registra un informe de error contra el proyecto que llama. Los campos propios de una presentación no pueden actualizarse ni eliminarse; agregue una corrección o más información con una respuesta en el mismo hilo de retroalimentación.
Un reintento exacto con la misma Idempotency-Key devuelve la presentación original por veinticuatro horas en lugar de crear un duplicado, y un cuerpo diferente bajo esa clave devuelve idempotency_mismatch. Cada presentación se examina antes de almacenarse.
Un cuerpo con menos de 12 caracteres o 3 palabras devuelve submission_too_short; texto que no describe problema o solicitud (caracteres aleatorios, pulsaciones de teclado) devuelve submission_unclear; spam, texto con muchos enlaces, inyección de prompt y texto malicioso devuelven submission_rejected.
Una presentación rechazada no se almacena, su detalle de problema nunca repite el texto enviado, y un reintento exacto bajo la misma Idempotency-Key devuelve el mismo rechazo.
Nunca coloque credenciales, cookies, encabezados Authorization, nonces de finalización, URLs firmadas o claves de objetos en título, cuerpo o contexto; el texto con forma de credencial (tokens ScreenRig, JWTs, tokens bearer, claves cloud y API, claves privadas) se reemplaza con [redactado] antes de almacenar la presentación, y la respuesta lleva el texto redactado.
Cuando el modelo de revisión está brevemente no disponible, la presentación se acepta y se mantiene para una nueva revisión en segundo plano; después de varias aceptaciones así en una hora, el proyecto recibe submission_screening_unavailable (500, Retry-After) y reintenta la misma solicitud más tarde.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| título (requerido, cadena) | Resumen de una línea. Se recortan los espacios en blanco al inicio y al final, y se rechazan los caracteres de control. minLength: 1 maxLength: 120 |
| body (requerido, cadena) | Descripción completa. Solo se aceptan caracteres de control salto de línea y tabulación. minLength: 1 maxLength: 4000 |
| context (opcional, FeedbackContext) | Sobre cerrado de diagnóstico. Cada miembro es un escalar opcional restringido, el anidamiento es estructuralmente imposible, y un miembro desconocido se rechaza con invalid_request. La forma existe para que un cliente no pueda persistir valores de argumentos, credenciales o datos de entorno de forma libre a través de ella. |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/bugs'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Informe de error almacenado. Un reintento idempotente exacto devuelve esta misma presentación. | FeedbackSubmission (application/json); encabezados: RateLimit-Policy, RateLimit |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 409 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 422 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar solicitudes de funciones en proyecto
Devuelve las solicitudes de funciones propias del proyecto que llama, las más recientes primero, hasta cien. Nunca se devuelven envíos de otro proyecto. Lea un hilo propio por su ID de retroalimentación. No hay cursor de paginación en v1. Cada envío lleva su estado y las respuestas del personal/agente, las más antiguas primero.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/features'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Solicitudes de funciones propiedad del proyecto que llama. | FeedbackList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Solicitar función en proyecto
Registra una solicitud de función contra el proyecto que llama. Los campos propios de una presentación no pueden actualizarse ni eliminarse; agregue una corrección o más información con una respuesta en el mismo hilo de retroalimentación.
Un reintento exacto con la misma Idempotency-Key devuelve la presentación original por veinticuatro horas en lugar de crear un duplicado, y un cuerpo diferente bajo esa clave devuelve idempotency_mismatch. Cada presentación se examina antes de almacenarse.
Un cuerpo con menos de 12 caracteres o 3 palabras devuelve submission_too_short; texto que no describe problema o solicitud (caracteres aleatorios, pulsaciones de teclado) devuelve submission_unclear; spam, texto con muchos enlaces, inyección de prompt y texto malicioso devuelven submission_rejected.
Una presentación rechazada no se almacena, su detalle de problema nunca repite el texto enviado, y un reintento exacto bajo la misma Idempotency-Key devuelve el mismo rechazo.
Nunca coloque credenciales, cookies, encabezados Authorization, nonces de finalización, URLs firmadas o claves de objetos en título, cuerpo o contexto; el texto con forma de credencial (tokens ScreenRig, JWTs, tokens bearer, claves cloud y API, claves privadas) se reemplaza con [redactado] antes de almacenar la presentación, y la respuesta lleva el texto redactado.
Cuando el modelo de revisión está brevemente no disponible, la presentación se acepta y se mantiene para una nueva revisión en segundo plano; después de varias aceptaciones así en una hora, el proyecto recibe submission_screening_unavailable (500, Retry-After) y reintenta la misma solicitud más tarde.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| título (requerido, cadena) | Resumen de una línea. Se recortan los espacios en blanco al inicio y al final, y se rechazan los caracteres de control. minLength: 1 maxLength: 120 |
| body (requerido, cadena) | Descripción completa. Solo se aceptan caracteres de control salto de línea y tabulación. minLength: 1 maxLength: 4000 |
| context (opcional, FeedbackContext) | Sobre cerrado de diagnóstico. Cada miembro es un escalar opcional restringido, el anidamiento es estructuralmente imposible, y un miembro desconocido se rechaza con invalid_request. La forma existe para que un cliente no pueda persistir valores de argumentos, credenciales o datos de entorno de forma libre a través de ella. |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/features'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Solicitud de función almacenada. Un reintento idempotente exacto devuelve esta misma presentación. | FeedbackSubmission (application/json); encabezados: RateLimit-Policy, RateLimit |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 409 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 422 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar clientes de servicio en proyecto
Los clientes de servicio del proyecto (especificación: un servidor, script o trabajo CI de un cliente propiedad del proyecto), los más nuevos primero, activos y revocados, con sus claves públicas, ids secretos y uso; nunca un secreto o su resumen. Necesita la capacidad del proyecto.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/service-clients'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | El cliente de servicio. | ServiceClientList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear cliente de servicio en proyecto
Crea un cliente de servicio propiedad del proyecto con un nombre, capacidades (omitido significa las seis; cada una debe ser poseída por el administrador, de lo contrario 403), acceso (lectura, por defecto, o gestión), y una clave pública JWK (OKP Ed25519, EC P-256 o RSA de al menos 2048 bits) y/o secreto verdadero. El secreto se devuelve una vez, solo aquí. Máximo 50 clientes activos por organización.
Los agentes necesitan alcance de identidad, identidad activa Gestionar, su propia concesión Gestionar con la capacidad del proyecto en el proyecto, y un rol activo de administrador de organización; una persona usa la sesión del panel con project_id y una prueba fresca (tipo service_client_change, sujeto el id del cliente, o el id del proyecto al crear) en el cuerpo. Un token de servicio es rechazado con 403.
Un miembro limitado a pantallas no conecta agentes, no emite credenciales ni administra a las personas del proyecto: outside_screen_scope (pida al propietario del proyecto).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| project_id (opcional, cadena) | Solo sesión del panel. |
| proof (opcional, DashboardProof) | |
| nombre (opcional, cadena) | minLength: 1 maxLength: 80 |
| capacidades (opcional, arreglo) | |
| acceso (opcional, cadena) | Administrar requiere una persona que pueda aprobar revisiones (403 approver_required). Permitido: "leer", "proponer", "administrar" |
| key (opcional, objeto) | Una JWK pública: OKP Ed25519, EC P-256 o RSA de al menos 2048 bits. |
| secreto (opcional, booleano) | Generar un secreto (solo creación). |
| upload_scope (opcional, UploadScope) | Lo que un usuario de carga puede usar (docs/uploaders.md): las listas de reproducción cuyas páginas cambia y las carpetas de medios en las que sube. Las carpetas son exactamente las listadas, nunca sus subcarpetas. Un id que al escribirse no nombra ningún objeto activo del proyecto es invalid_request en su posición; una eliminación posterior deja un id muerto, que no concede nada. El alcance se lee en cada solicitud, así que un cambio se aplica a la siguiente. |
Plantilla y respuestas de solicitud
curl --request POST --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/service-clients'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | El cliente de servicio. | ServiceClientResult (application/json) |
| 402 | feature_not_in_plan — un alcance de carga crea un usuario de carga, y el plan del proyecto no incluye usuarios de carga; required_plan nombra el plan que sí los incluye. Restringir un alcance y quitarlo siempre están permitidos. | Problema (application/problem+json) |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar cuentas de sincronización de medios en proyecto
Lists the project's media sync accounts, newest first (200 per page; next_cursor continues). Each shows its tenant and client id, its state and its last test; the client secret is never returned, only whether one is set and its last four characters.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| cursor | consulta | opcional | El next_cursor de la página anterior. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-sync-accounts'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Las cuentas del proyecto. | MediaSyncAccountList (application/json); encabezados: Cache-Control |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear una cuenta de sincronización de medios en proyecto
Añade una cuenta que sincroniza leyendo. kind microsoft365 almacena las credenciales de la propia aplicación de Microsoft Entra del proyecto, para que las sincronizaciones puedan leer una carpeta de SharePoint o de OneDrive para la empresa: config.tenant_id es el ID de directorio o el dominio principal del tenant (common, organizations y consumers se rechazan), config.client_id el ID de aplicación de la aplicación, y secret el valor de uno de los secretos de cliente de la aplicación; la aplicación necesita el permiso de aplicación de Microsoft Graph Sites.Selected (concedido en cada sitio) o Files.Read.All, con consentimiento del administrador.
En lugar de esos tres, config.connection_id nombra una conexión de Microsoft del proyecto (createConnection), en cualquiera de los dos modos, que inicia sesión y guarda el secreto. kind canva solo toma un nombre: la cuenta queda en pending_consent y la respuesta lleva authorize_url, un enlace de un solo uso (válido hasta authorize_expires_at) que abre la persona titular de la cuenta de Canva, con la sesión iniciada en Canva, para conectarla mediante la integración de Canva de screenRIG.
La concesión pertenece al proyecto, así que sus sincronizaciones sobreviven a la persona que la conectó.
Un servidor sin la integración de Canva responde 409 canva_not_configured. kind dropbox funciona como canva: la cuenta queda en pending_consent y authorize_url es un enlace de un solo uso que abre la persona titular de la cuenta de Dropbox, con la sesión iniciada en Dropbox, para permitir el acceso de solo lectura (files.metadata.read, files.content.read, account_info.read, sharing.read).
Se hace a través de la aplicación de Dropbox de screenRIG o, cuando config.app_key la nombra, a través de la propia aplicación de Dropbox del cliente (PKCE, así que no hay secreto de la aplicación; la aplicación debe incluir https://API_ORIGIN/api/dropbox/callback como URI de redirección).
Un servidor sin la aplicación de Dropbox de screenRIG responde 409 dropbox_not_configured a una cuenta dropbox sin app_key. kind google_drive queda en ready de inmediato y lee las carpetas compartidas con config.service_account_email: la cuenta de servicio de screenRIG, o la del propio cliente cuando secret es la clave JSON de esa cuenta de servicio.
Una carpeta compartida con la cuenta de servicio de screenRIG solo se sincroniza cuando un miembro del proyecto con un correo electrónico verificado la compartió o es su propietario. Un servidor sin la cuenta de servicio de screenRIG responde 409 google_drive_not_configured a una cuenta google_drive sin clave. Un secreto se sella en reposo y nunca se devuelve ni se registra. Añade media_sync_account.created.
Un reintento exacto con la misma Idempotency-Key devuelve la misma cuenta (un reintento de Canva o de Dropbox recibe un enlace nuevo).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| kind (requerido, cadena) | Permitidos: "microsoft365", "canva", "dropbox", "google_drive" |
| nombre (requerido, cadena) | minLength: 1 maxLength: 80 |
| config (opcional, object) | Para microsoft365, o bien tenant_id y client_id (ambos) con secret, o bien connection_id solo: el id de una conexión de Microsoft de este proyecto. Para dropbox, app_key nombra opcionalmente la aplicación de Dropbox propia del cliente. No se acepta para canva ni google_drive. |
| secret (opcional, cadena) | Obligatorio para microsoft365 con tenant_id y client_id: el valor de uno de los secretos de cliente de la aplicación (no su id), como máximo 1024 caracteres. Para google_drive, opcional: la clave JSON de la propia cuenta de servicio de Google Cloud del cliente (type service_account), cuyo client_email pasa a ser el service_account_email de la cuenta; sin ella, la cuenta lee a través de la cuenta de servicio de screenRIG. No se acepta con connection_id, ni para canva ni para dropbox. minLength: 1 maxLength: 8192 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-sync-accounts'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creada, con su secreto enmascarado; una cuenta de Canva o de Dropbox también lleva authorize_url. | MediaSyncAccountConnect (application/json); encabezados: ETag, Cache-Control |
| 400 | invalid_request. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — el plan del proyecto no incluye la sincronización de medios; required_plan nombra el plan que sí la incluye. | Problema (application/problem+json) |
| 409 | canva_not_configured (este servidor no tiene la integración de Canva; solo para kind canva), dropbox_not_configured (no hay aplicación de Dropbox de screenRIG ni config.app_key; solo para kind dropbox), google_drive_not_configured (no hay cuenta de servicio de screenRIG ni clave; solo para kind google_drive), resource_conflict o idempotency_mismatch. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar sincronizaciones de medios en proyecto
Lists the project's media syncs, newest first (200 per page; next_cursor continues), optionally of one account_id or state. Each shows its source folder, the media folder it fills, its cadence, state, next run and the summary of its last run.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| cursor | consulta | opcional | El next_cursor de la página anterior. |
| account_id | consulta | opcional | Lista solo las sincronizaciones que leen a través de esta cuenta. |
| estado | consulta | opcional | Lista solo las sincronizaciones en este estado. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-syncs'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Las sincronizaciones del proyecto. | MediaSyncList (application/json); encabezados: Cache-Control |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear una sincronización de medios en proyecto
provider canva: lee el diseño (design es su id o su dirección canva.com/design/ID/...) a través de una cuenta de Canva conectada y guarda la sincronización, que vence ahora.
Each run asks Canva for the design's last change and, when it moved, exports the pages (pages, default all; format png gives one image per page and mp4 one video) and imports them into the media folder, replacing the bytes of a page already imported under the same media id so the playlists that use it update; a page the design no longer has leaves play like a removed SharePoint file.
Un diseño que Canva ya no muestra detiene la sincronización en el estado error (error de ejecución design_unavailable) y conserva los medios.
Un diseño o una página que la cuenta no puede ver da 409 media_sync_source_refused. provider dropbox: url es la dirección de la carpeta en Dropbox (https://www.dropbox.com/home/...), un enlace de carpeta compartida que la cuenta conectada ha agregado a su Dropbox, o una ruta que empieza con /; se lee una vez a través de una cuenta de Dropbox conectada y se guarda la sincronización, que vence ahora.
Las carpetas de un espacio de equipo se leen desde la raíz del equipo. Cada ejecución continúa desde la posición guardada de Dropbox en la carpeta, de modo que solo se leen los cambios.
Una carpeta que la cuenta no puede abrir da 409 media_sync_source_refused; una cuenta cuya conexión Dropbox ya no acepta da 409 dropbox_reconnect_required. provider google_drive: url es la dirección de la carpeta en Google Drive (https://drive.google.com/drive/folders/ID) o su id, compartida (basta con el rol Lector) con el service_account_email de la cuenta.
Cada ejecución lista la carpeta y compara la suma de verificación de cada archivo. Los archivos de Google Docs, Sheets y Slides se omiten como unsupported_type. Una carpeta que la dirección no puede abrir da 409 media_sync_source_refused.
Con la cuenta de servicio de screenRIG, la carpeta debe haber sido compartida por un miembro del proyecto con un correo electrónico verificado o ser de su propiedad (403 media_sync_sharer_not_member), y cada ejecución lo comprueba de nuevo (el error de ejecución sharer_not_member detiene la sincronización en el estado error). provider sharepoint: lee la dirección de la carpeta a través de la cuenta (una dirección de sitio de SharePoint como https://TENANT.sharepoint.com/sites/SITE/LIBRARY/FOLDER, o un enlace para compartir; la aplicación debe poder verla: Sites.Selected necesita una concesión en el sitio, un enlace para compartir necesita Files.Read.All) y guarda la sincronización, que vence ahora. folder_id es la carpeta de medios en la que se guardan los archivos; sin él, la sincronización crea una con el nombre de la carpeta de origen.
Each run imports the images (png, jpeg, webp, gif), videos (mp4, webm) and audio (mp3) directly in the source folder, replaces the bytes of a file that changed under the same media id so playlists that use it update, and takes a file removed at the source out of play: its media is deleted, or, while screens still hold it, moved to a Removed subfolder and deleted later.
Subfolders are ignored; other files are listed as skipped with the reason. every is the seconds between runs, 300 to 86400, default 900. A folder the provider refuses is 409 media_sync_source_refused and one it cannot reach is 500 media_sync_source_unavailable; nothing is stored. Appends media_sync.created.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| provider (requerido, cadena) | Permitidos: "sharepoint", "canva", "dropbox", "google_drive" |
| account_id (requerido, cadena) | Una cuenta del tipo que corresponde al proveedor: microsoft365 para sharepoint, canva, dropbox o google_drive. |
| url (opcional, cadena) | sharepoint (obligatorio): la dirección de SharePoint de la carpeta o un enlace para compartir, que se lee una vez para encontrar la carpeta y no se guarda. dropbox (obligatorio): la dirección de la carpeta en Dropbox, un enlace de carpeta compartida que la cuenta ha agregado, o una ruta que empieza con /. google_drive (obligatorio): la dirección de la carpeta en Google Drive o su id. maxLength: 4096 |
| design (opcional, cadena) | canva (obligatorio): el id del diseño o su dirección canva.com/design/ID/... maxLength: 2048 |
| pages (opcional, arreglo) | canva: las páginas que sincronizar; omítalo para todas. Un diseño que más tarde tenga menos páginas retira de la reproducción las que faltan. |
| format (opcional, cadena) | canva: png da una imagen por página; mp4 un vídeo de las páginas. Allowed: "png", "mp4" default: "png" |
| folder_id (opcional, cadena) | La carpeta de medios donde caen los archivos. Omítala para crear una con el nombre de la carpeta de origen. |
| every (opcional, entero) | Segundos entre ejecuciones; 900 por defecto. minimum: 300 maximum: 86400 |
| nombre (opcional, cadena) | Por defecto, el nombre de la carpeta de origen. minLength: 1 maxLength: 80 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-syncs'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creada, vence ahora. | MediaSync (application/json); encabezados: ETag, Cache-Control |
| 400 | invalid_request. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — el plan del proyecto no incluye la sincronización de medios; required_plan nombra el plan que sí la incluye. | Problema (application/problem+json) |
| 403 | media_sync_sharer_not_member — una carpeta de Google Drive leída a través de la cuenta de servicio de screenRIG no fue compartida por un miembro del proyecto con un correo electrónico verificado ni era de su propiedad. | Problema (application/problem+json) |
| 409 | media_sync_source_refused (el proveedor rechazó la aplicación, su permiso o la carpeta), dropbox_reconnect_required (hay que volver a conectar la cuenta de Dropbox), dropbox_not_configured, google_drive_not_configured, resource_conflict (la misma fuente ya está sincronizada en esa carpeta de medios) o idempotency_mismatch. | Problema (application/problem+json) |
| 500 | media_sync_source_unavailable: no se pudo contactar con el proveedor o respondió con un fallo. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar enlaces de flota en proyecto
Enumera los enlaces de flota del proyecto, del más antiguo al más reciente (máximo 50). Debajo de Manage efectivo cada URL está vacía y url_redacted es true, ya que la URL crea pantallas.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/fleet-links'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Los enlaces de flota del proyecto. | FleetLinkList (application/json); encabezados: Cache-Control |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear enlace de flota en proyecto
Crea un enlace de flota: una URL de Player (https://play.<domain>/player/#fleet=<secret>) que convierte cada dispositivo que la abre en su propia pantalla en este proyecto, sin código de vinculación. Colóquelo en un administrador de dispositivos, como una app quiosco de Google Admin console.
Cada nueva pantalla recibe las etiquetas, los campos y la lista de reproducción del enlace, y una etiqueta del dispositivo (su ID de activo de administrador, luego la ubicación), de lo contrario la siguiente etiqueta predeterminada. Un reproductor que ya tiene una pantalla nunca crea otra: su clave mantiene la identidad de la pantalla a través de recargas y reinicios.
Después de un restablecimiento de fábrica o reinstalación, un dispositivo que reporte el número de serie o DUID de una pantalla creada por un enlace de flota de este proyecto recupera esa pantalla (screen.recovered) en lugar de crear una nueva, una vez que la clave antigua ha estado inactiva durante diez minutos.
El secreto viaja en el fragmento de la URL, que los navegadores nunca envían a un servidor. max_screens limita las pantallas que crea el enlace y expires_at termina el enlace en ese momento, igual que desactivarlo. Una organización tiene como máximo 50 enlaces de flota en todos sus proyectos (fleet_link_limit_reached). Agrega fleet_link.created.
Un reintento exacto con la misma Idempotency-Key devuelve esta misma respuesta por veinticuatro horas.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| etiqueta (requerida, cadena) | minLength: 1 maxLength: 80 |
| habilitado (opcional, booleano) | Por defecto es verdadero. |
| etiquetas (opcional, ScreenTags) | Etiquetas de selector de flota, de 0 a 16 etiquetas únicas exactas, cada una que coincide con la gramática de etiquetas de medios. En ScreenPatch el arreglo reemplaza todo el conjunto y un arreglo vacío lo borra; una etiqueta duplicada o malformada es invalid_request. Cambiar etiquetas aumenta la revisión de pantalla (If-Match la protege) y añade screen.updated con details.tags; nunca cambia la revisión del manifiesto. Las etiquetas nunca están en el manifiesto en tiempo de ejecución ni en la autorización. |
| fields (opcional, objeto) | Campos con los que empieza cada pantalla que crea el enlace; las ubicaciones de tarjetas los leen mediante {screen.field.NAME}. |
| playlist_id (opcional, cadena) | |
| max_screens (opcional, entero) | mínimo: 1 máximo: 10000 |
| expires_at (opcional, cadena) | Cuándo vence el enlace (RFC 3339); una vez vencido, un enlace no crea ni recupera pantallas. Si se omite, nunca vence. Un instante que ya pasó se acepta y el enlace vence de inmediato. format: "date-time" |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/fleet-links'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creado, con su URL. | FleetLink (application/json); encabezados: Cache-Control |
| 400 | invalid_request, incluyendo un playlist_id desconocido o una etiqueta o un campo malformados. | Problema (application/problem+json) |
| 409 | fleet_link_limit_reached o idempotency_mismatch. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar webhooks en proyecto
Lista las notificaciones de webhook del proyecto con la estructura de webhook, de la más antigua a la más reciente (máximo 50); GET /api/notifications lista todos los canales. El secreto de firma nunca se devuelve aquí. Requiere la capacidad de proyecto; una credencial solo de informes se rechaza con 403 forbidden, porque la respuesta incluye las URL de los receptores.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/webhooks'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Los webhooks del proyecto. | WebhookList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear webhook en proyecto
Crea un webhook que recibe los eventos duraderos propios del proyecto como POSTs HTTPS firmados. La URL debe ser https en un host público de Internet: un literal IP o todas las respuestas DNS actuales del nombre deben ser públicas (privadas, loopback, link-local, CGNAT, IPv6 fuera de 2000::/3, documentación y otros rangos reservados se rechazan con webhook_url_rejected).
El puerto debe ser 443 (el predeterminado) o 8443, de lo contrario webhook_url_rejected. El host se resuelve y verifica nuevamente antes de cada entrega y la conexión se establece exactamente a la dirección verificada, por lo que una respuesta DNS que cambie después no puede redirigir las entregas. event_types lista tipos exactos de eventos (screen.online) o prefijos terminados en .* (screen.*).
Una organización tiene como máximo 50 notificaciones entre todos los canales (webhook_limit_reached). El servidor genera el secreto de firma y lo devuelve solo en esta respuesta y en rotate-secret; guárdelo. Un reintento exacto con la misma Idempotency-Key devuelve esta misma respuesta, secreto incluido, durante veinticuatro horas.
La entrega empieza con el primer evento posterior a notification.created.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| url (requerida, cadena) | URL HTTPS en un host público de Internet, puerto 443 (el predeterminado) o 8443. Sin información de usuario ni fragmento. maxLength: 2048 formato: "uri" |
| event_types (requerido, WebhookEventTypes) | Tipos de evento exactos, como screen.online, o prefijos que terminan en .*, como screen.* (todos los tipos que empiezan con screen.). notification.test nunca se distribuye mediante una suscripción; solo lo envía POST /api/webhooks/{id}/test. |
| habilitado (opcional, booleano) | predeterminado: true |
| descripción (opcional, cadena) | maxLength: 200 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/webhooks'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creado. El secreto se muestra solo aquí y en rotar-secreto. | Webhook con secreto (application/json); encabezados: Cache-Control |
| 400 | invalid_request o webhook_url_rejected. | Problema (application/problem+json) |
| 409 | webhook_limit_reached, idempotency_mismatch o resource_conflict cuando el proyecto no pertenece a ninguna organización. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar alertas en el proyecto
Lista las alertas de pantalla del proyecto: una por pantalla y condición mientras dura (open), y las que terminaron dentro de la retención de eventos del plan (resolved).
Una alerta se abre cuando llega el evento de su condición (screen.offline, un cambio de salud display_disconnected, temperature_high u on_battery, screen.storage_shortfall, un screen.manifest_upgrade atascado, un screen.status_changed de nivel error, un screen.glass_changed con veredicto detenido, en blanco o congelado) y se resuelve con el evento que pone fin a su condición; crashing es un aviso, no una alerta. counts.attention cuenta las alertas abiertas que no están reconocidas, pospuestas ni silenciadas, el número que muestra el panel.
Una pantalla que se reinicia por un reinicio que envió el backend no abre ninguna alerta screen_offline o display_disconnected hasta que el reinicio termina o pasan diez minutos desde que se envió; una condición que sigue vigente entonces abre su alerta en ese momento. Las alertas abiertas van primero, las más nuevas primero; pase next_cursor de vuelta como antes para la página siguiente.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| formato | consulta | opcional | json (por defecto) devuelve el informe como JSON. csv, xlsx y pdf devuelven las mismas filas como archivo adjunto (cada página de un informe paginado, hasta 50000 filas). |
| estado | consulta | opcional | |
| screen_id | consulta | opcional | |
| before | consulta | opcional | next_cursor de la página anterior. |
| límite | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/alerts'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Una página de alertas. | AlertList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar silenciamientos de alertas en el proyecto
Lista los silenciamientos del proyecto que no han terminado, primero el que termina antes (como máximo 50).
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/alert-mutes'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Los silenciamientos vigentes del proyecto. | AlertMuteList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear silenciamiento de alertas en el proyecto
Silencia pantallas por mantenimiento hasta un instante que esté como máximo 30 días en el futuro: las pantallas nombradas en screen_ids y toda pantalla que lleve alguna de las etiquetas de tags en el momento en que corresponde enviar un aviso. Sus alertas siguen abriéndose y resolviéndose, marcadas como muted, pero nunca necesitan atención; se omiten los avisos de todas las notificaciones sobre ellas (muted).
Una organización tiene como máximo 50 silenciamientos vigentes en todos sus proyectos (alert_mute_limit_reached). Agrega alert_mute.created.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| screen_ids (opcional, array) | |
| etiquetas (opcional, ScreenTags) | Etiquetas de selector de flota, de 0 a 16 etiquetas únicas exactas, cada una que coincide con la gramática de etiquetas de medios. En ScreenPatch el arreglo reemplaza todo el conjunto y un arreglo vacío lo borra; una etiqueta duplicada o malformada es invalid_request. Cambiar etiquetas aumenta la revisión de pantalla (If-Match la protege) y añade screen.updated con details.tags; nunca cambia la revisión del manifiesto. Las etiquetas nunca están en el manifiesto en tiempo de ejecución ni en la autorización. |
| until (obligatorio, string) | Como máximo 30 días en el futuro. format: "date-time" |
| note (opcional, string) | maxLength: 200 |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/alert-mutes'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creado. | AlertMute (application/json) |
| 409 | alert_mute_limit_reached o idempotency_mismatch. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar notificaciones en el proyecto
Lista las notificaciones de la organización que cubren el proyecto, de todos los canales, de la más antigua a la más reciente (máximo 50). status, failing_since, last_success_at y last_failure_at son los de este proyecto. El secreto de firma de un webhook nunca se devuelve aquí.
Requiere la capacidad de proyecto; una credencial solo de informes se rechaza con 403 forbidden, porque la respuesta incluye las URL de los receptores y los destinatarios.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notifications'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Las notificaciones del proyecto. | NotificationList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear notificación en el proyecto
Crea una notificación. channel email envía a recipients (owner, o user_ids de los miembros del proyecto); channel webhook hace POST, firmado, a url, que sigue las reglas de URL de webhook (https en un host de Internet público, puerto 443 u 8443, de lo contrario webhook_url_rejected). conditions lista los cambios de estado de pantalla en los que se activa; una notificación por correo necesita al menos uno, un webhook necesita conditions o event_types. screen_tags limita conditions a las pantallas que llevan cualquiera de esas etiquetas; vacío significa todas las pantallas, o audience indica qué pantallas con las reglas de una audiencia de campaña. min_severity y severity filtran y califican los avisos, y active_hours los retiene o descarta fuera de sus ventanas.
Una condición solo notifica después de haber durado hold_minutes (10 por defecto), y sigue un aviso de resolución cuando se resuelve después de haberse enviado un aviso. La notificación cubre solo este proyecto; una organización tiene como máximo 50 notificaciones, sin contar las predeterminadas que crea el sistema (notification_limit_reached).
El servidor genera el secreto de firma de un webhook y lo devuelve solo en esta respuesta y en rotate-secret; guárdelo. Un reintento exacto con la misma Idempotency-Key devuelve esta misma respuesta, secreto incluido, durante veinticuatro horas. Los avisos empiezan con el primer evento posterior a notification.created.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| channel (obligatorio, string) | Permitidos: "email", "webhook", "slack", "teams", "pagerduty", "telegram" |
| descripción (opcional, cadena) | Un nombre para personas. maxLength: 200 |
| conditions (opcional, NotificationConditions) | |
| screen_tags (opcional, ScreenTags) | Etiquetas de selector de flota, de 0 a 16 etiquetas únicas exactas, cada una que coincide con la gramática de etiquetas de medios. En ScreenPatch el arreglo reemplaza todo el conjunto y un arreglo vacío lo borra; una etiqueta duplicada o malformada es invalid_request. Cambiar etiquetas aumenta la revisión de pantalla (If-Match la protege) y añade screen.updated con details.tags; nunca cambia la revisión del manifiesto. Las etiquetas nunca están en el manifiesto en tiempo de ejecución ni en la autorización. |
| audience (opcional, CampaignAudience) | Qué pantallas selecciona una campaña: exactamente uno de all (coinciden todas las reglas), any (coincide al menos una), tag (la pantalla lleva la etiqueta), screen_id (esa pantalla) o folder (las pantallas de esa carpeta de pantallas y de cada carpeta que contiene, GET /api/screen-folders; la carpeta debe existir). Las reglas se anidan hasta 3 niveles como máximo y una audiencia tiene como máximo 500 reglas. {"all": []} es cada pantalla del proyecto; en los demás casos all y any listan al menos una regla. |
| min_severity (opcional, NotificationSeverity) | La gravedad de un aviso, de la menos grave a la más grave. Un aviso abierto tiene la gravedad de su condición: error para screen_offline y warning para cualquier otra condición, salvo que la severity de la notificación indique otra cosa. Un aviso resuelto y una prueba son info. Permitidos: "info", "warning", "error" |
| severity (opcional, NotificationSeverityOverrides) | Condición a gravedad para esta notificación, como {"not_playing": "error"}. Cuenta para min_severity y es la gravedad que Teams y PagerDuty muestran para la condición. Una condición que no figura conserva su valor predeterminado. En un patch, un objeto vacío, como null, borra todas las anulaciones. |
| active_hours (opcional, NotificationActiveHours) | Cuándo se envían los avisos abiertos: las ventanas (screenrig.schedule/v1), leídas en timezone. Un aviso que vence mientras están cerradas espera a la siguiente apertura (outside hold, el valor predeterminado) y se envía entonces si su condición sigue vigente, de modo que una condición que se despeja antes no envía nada, o se omite (outside drop; last_error outside_hours). Un aviso resuelto de un aviso abierto que se envió siempre se envía, dentro del horario o no, y una prueba lo ignora. crashing se retiene o se descarta como cualquier otra condición. El horario juzga un aviso cuando sale por primera vez; uno fallido se reintenta según el calendario habitual, sea cual sea el horario. Añadir, cambiar o quitar el horario vuelve a juzgar de inmediato los avisos retenidos por el anterior. |
| reach_drop (optional, NotificationReachDrop) | La menor caída en el alcance de una campaña por la que se envía un aviso reach_dropped: screens es el menor número de pantallas perdidas (1 de forma predeterminada) y percent, si se define, la menor proporción de las pantallas que la campaña alcanzaba cuando se publicó; una caída debe cumplir ambos. Una caída menor no pone en cola ningún aviso, y un aviso en cola cuya caída se redujo por debajo del umbral cuando le toca enviarse se omite (condition_cleared). Solo con la condición reach_dropped; en una notificación sin ella, invalid_request. |
| hold_minutes (opcional, integer) | Cuánto tiempo debe durar una condición antes de notificar. crashing nunca se retiene. default: 10 minimum: 0 maximum: 1440 |
| recipients (opcional, NotificationRecipients) | Solo correo electrónico. owner (quien sea propietario del proyecto cuando se envía un aviso) o el user_id de una persona que es miembro del proyecto; un user_id que no corresponde a un miembro devuelve invalid_request. A cada uno se le envía un correo electrónico a su dirección verificada. Se omite a quien haya dejado el proyecto desde entonces o no tenga una dirección verificada. |
| url (opcional, cadena) | Solo webhook: URL https en un host público de Internet, puerto 443 (el predeterminado) u 8443. Sin userinfo ni fragmento. maxLength: 2048 format: "uri" |
| event_types (opcional, NotificationEventTypes) | Solo webhook. Eventos del proyecto que además se envían por POST a medida que ocurren, exactamente como los envía un webhook: tipos exactos, como screen.online, o prefijos que terminan en .*, como screen.*. notification.test nunca se distribuye. |
| destination (opcional, NotificationDestination) | Solo Slack, Teams, PagerDuty y Telegram; obligatorio para ellos. La credencial con la forma que emite el servicio: slack, la URL del webhook entrante (hooks.slack.com); teams, la URL del webhook de Workflows (logic.azure.com o powerplatform.com; las URL de conector de Office 365 están retiradas); pagerduty, la clave de enrutamiento de Events API v2 de 32 caracteres; telegram, el token del bot. Otra forma da notification_destination_rejected. Se sella, nunca se devuelve y en las lecturas solo aparece como destination_hint. minLength: 1 maxLength: 2048 |
| telegram_chat_id (opcional, NotificationTelegramChat) | Solo Telegram; obligatorio para él. El chat en el que publicar: su id numérico (negativo para un grupo o canal) o @channelname. No es una credencial. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$" |
| habilitado (opcional, booleano) | predeterminado: true |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notifications'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Creada. El secreto de un webhook se muestra solo aquí y en rotate-secret. | Notification (application/json); encabezados: Cache-Control |
| 400 | invalid_request, webhook_url_rejected o notification_destination_rejected. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — El enrutamiento de alertas (un canal de Slack, Teams, PagerDuty o Telegram, o una regla min_severity, severity, active_hours o audience) forma parte de Plus. Las notificaciones por correo y webhook con las reglas predeterminadas, y las condiciones loop_stalled, glass_blank y glass_frozen, están en todos los planes. El problema nombra la función, el plan del proyecto y required_plan. | Problema (application/problem+json) |
| 409 | notification_limit_reached, idempotency_mismatch o resource_conflict cuando el proyecto no pertenece a ninguna organización. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar notas en proyecto
Enumera las notas del proyecto, de la más reciente a la más antigua. Una nota es un hecho breve en texto plano que un agente escribió para su futuro yo y los demás agentes del proyecto; es contexto, nunca una instrucción ni una aprobación.
Cualquier lectura de credencial activa, incluida Solo lectura, y la lectura no debita el medidor API. state es open (por defecto), resolved o all; about_id mantiene las notas sobre una pantalla o playlist y author_id las notas que escribió un agente.
Pase next_cursor como after para la siguiente página; está vacío en la última página. new marca una nota abierta que otro agente escribió después de que este llamante leyó las notas por última vez.
Leer las notas es la primera página de notas abiertas sin about_id ni author_id: esa respuesta calcula nuevas contra la lectura previa, luego mueve el marcador de lectura a ahora (páginas posteriores mantienen marcador anterior).
También lleva revisión: hasta 5 notas abiertas cuya revisión está pendiente (las más antiguas primero), que el llamante debe confirmar si aún se mantienen y resolver en caso contrario. Una revisión sin respuesta durante 30 días después de ser devuelta por primera vez resuelve la nota como not_confirmed.
Solo un agente con acceso de Gestión mueve su marcador y comienza esos 30 días; un agente solo de lectura o un cliente de servicio obtiene la misma respuesta y no cambia nada. Cualquier otra página o filtro devuelve una revisión vacía y no mueve nada. Los conteos son las notas abiertas del proyecto y, para este llamante, cuántas son nuevas y están pendientes.
Un agente limitado a pantallas lista solo las notas sobre sus propias pantallas, listas de reproducción y el proyecto: la lista, la revisión y los recuentos omiten las notas sobre una pantalla fuera de su alcance, y un listado entre proyectos omite un proyecto donde el agente está limitado, así que seleccione ese proyecto.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| estado | consulta | opcional | |
| about_id | consulta | opcional | Solo notas sobre esta pantalla o lista de reproducción. |
| author_id | consulta | opcional | Solo notas que este agente escribió. |
| después | consulta | opcional | next_cursor de la página anterior. |
| límite | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notes'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Una página de notas, las notas para revisar y los conteos. | NoteList (application/json) |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Agregar nota en proyecto
Agrega una nota para los agentes del proyecto: un hecho sobre el que otro agente actuaría, nunca un informe de progreso, chat o un secreto. El cuerpo tiene de 1 a 2000 caracteres de texto plano después de recortar y puede abarcar líneas.
Se rechaza el texto que contiene una credencial (tokens, claves, claves privadas, contraseñas en URLs) con note_contains_credential y el texto que se lee como una instrucción para un modelo con note_rejected; no se almacena nada y el detalle nunca repite el texto. sobre nombres una pantalla (incluida archivada) o lista de reproducción del proyecto, si no not_found. ttl_seconds (3600 a 31536000) crea una nota temporal que se resuelve como expirada; una nota sin este valor se revisa 90 días después de añadida o confirmada por última vez. reemplaza nombres una nota abierta que esta reemplaza: se resuelve como reemplazada en la misma transacción (note_not_open cuando ya está resuelta).
Un cuerpo cuyo texto normalizado (recortado, con los espacios colapsados y en minúsculas) y cuyo campo about coinciden con una nota abierta confirma esa nota y la devuelve con 200 en lugar de añadir una; no se añade ningún evento note.added. Una organización mantiene como máximo 200 notas abiertas en todos sus proyectos; la 201.ª es note_limit_reached, cuyo detalle nombra hasta 5 notas que resolver primero.
Agrega note.added (y note.resolved para una nota reemplazada) sin el texto. Un reintento exacto con la misma Idempotency-Key devuelve la primera respuesta durante veinticuatro horas.
Para un agente limitado a pantallas (docs/screen-scope.md), un about que es una pantalla fuera de su alcance o desconocida para el proyecto, o un replaces que nombra una nota sobre una pantalla fuera de su alcance, es outside_screen_scope (403) y no se guarda nada.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| body (requerido, cadena) | Texto plano, de 1 a 2000 caracteres después de recortar; se conservan los saltos de línea. minLength: 1 maxLength: 2000 |
| acerca de (opcional, en línea) | |
| ttl_seconds (opcional, entero) | Expira la nota este tiempo después de ser añadida. Sin esto, la nota se revisa después de 90 días. mínimo: 3600 máximo: 31536000 |
| replaces (opcional, cadena) | Una nota abierta que esta reemplaza; se resuelve como reemplazada. patrón: "^(?:(?:stage|qa|development)_)?nte_[A-Za-z0-9_-]{16,24}$" |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notes'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Agregado. | Nota (application/json) |
| 200 | El texto coincidió con una nota abierta, que se confirma y se devuelve. | Nota (application/json) |
| 400 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota. | Problema (application/problem+json) |
| 404 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 409 | note_not_open, note_limit_reached o idempotency_mismatch. | Problema (application/problem+json) |
| 422 | note_contains_credential o note_rejected. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Estado de soporte en proyecto
Disponibilidad y horarios para cualquier proyecto activo. chat_allowed es verdadero para cada proyecto activo, incluido Standard. human_available es verdadero cuando una persona puede unirse al chat si se solicita (Education, Premium y Enterprise); Standard y Plus tienen documentación y soporte por IA. staffed indica si el personal está en su horario ahora. Luna responde de inmediato en todos los planes.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/support/status'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado de soporte. | SupportStatus (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar conversaciones de soporte en proyecto
Conversaciones del proyecto, las más recientes primero, máximo 100. Los conteos de no leídos del personal son por persona o agente autenticado.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| before | consulta | opcional | ID de conversación del cursor siguiente de la página anterior. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/support/conversations'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Resultado de soporte. | SupportConversationList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Crear conversación de soporte en proyecto
Disponible en todos los planes; Luna responde primero, de inmediato. Donde una persona puede unirse (human_available en el estado del soporte), solicitarla pausa a Luna para el personal; en Standard y Plus se ignora y Luna responde. Se revisa antes del almacenamiento o Slack.
Un mensaje inicial con menos de 8 caracteres o 3 palabras devuelve submission_too_short; uno que no sea pregunta o problema devuelve submission_unclear; spam, texto con muchos enlaces, inyección de indicaciones y texto inseguro devuelven submission_rejected. El texto rechazado no se conserva ni se envía a Luna, y el detalle del problema nunca lo repite.
El texto con forma de credencial distinto a las credenciales de ScreenRig (tokens bearer, claves cloud y API, claves privadas) se reemplaza por [redactado] antes de almacenarlo; el material de credenciales de ScreenRig devuelve invalid_request. Una nueva conversación inicia un hilo en Slack; los seguimientos permanecen en él. Las solicitudes con la misma clave se repiten durante 24 horas, incluida una negativa.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| Idempotency-Key | encabezado | requerido |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| body (requerido, cadena) | minLength: 1 maxLength: 4000 |
| human_requested (opcional, booleano) | Pedir una persona, lo que pausa a Luna y espera al personal. Solo cuenta donde una persona puede unirse (human_available: Education, Premium y Enterprise); en Standard y Plus se ignora y Luna responde. predeterminado: falso |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/support/conversations'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 201 | Resultado de soporte. | SupportSubmission (application/json) |
| 422 | El mensaje fue rechazado por filtrado: submission_too_short o submission_unclear (solo el mensaje inicial) o submission_rejected. El detalle nunca repite el texto. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Listar reseñas en proyecto
Las revisiones del proyecto (docs/reviews.md): cambios de lista de reproducción y pantalla propuestos bajo acceso Proponer, y para una red publicitaria las creatividades que los compradores enviaron (tipo ad_creative).
Las más nuevas primero, como máximo límite (por defecto 50, máximo 100) por página; pase next_cursor como cursor con los mismos filtros. state pendiente (el predeterminado), decidido (cualquier otro estado) o todo; kind limita a un tipo.
Una sesión del panel lee todos los tipos; un portador lee los tipos que cubren sus capacidades (listas de reproducción para playlist_change, pantallas para screen_change, publicidad para ad_creative), y un tipo que no puede leer es una página vacía. pending_count cuenta las revisiones pendientes de todos los tipos que el llamador ve.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| estado | consulta | opcional | |
| kind | consulta | opcional | |
| límite | consulta | opcional | |
| cursor | consulta | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/reviews'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Una página de revisiones. | ReviewList (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Proyecto Scoped_get Card Data
Devuelve el documento y su revisión. ETag es la revisión, para If-Match en la siguiente escritura.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
| key | ruta | requerido | Clave de datos de tarjeta. No puede comenzar con feed:. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data/KEY'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Documento de datos de tarjeta | Entrada de datos de tarjeta (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Proyecto Scoped_put Card Data
Crea o reemplaza un documento de datos de tarjeta. Cuando las ubicaciones de tarjetas en las playlists del proyecto vinculan la clave, el documento debe contener solo las propiedades dinámicas de cada tarjeta vinculada y validar contra ellas; de lo contrario, la escritura se rechaza con card_data_invalid nombrando la tarjeta y la ruta de la propiedad, y no cambia nada. Una clave sin ubicaciones vinculadas acepta cualquier objeto JSON.
Cada cadena que comienza con media: es una referencia de medios, media:<id>, para que una tarjeta dibuje (una foto); en cualquier clave debe nombrar una imagen lista y aprobada en este proyecto, como máximo 256 medios distintos por documento, o la escritura se rechaza con card_media_invalid nombrando la ruta de propiedad y media_id.
Las pantallas cuyo contenido lee la clave pueden luego obtener esos medios desde GET /media/{media_id}. Las pantallas que muestran una ubicación que lee la clave reciben screen.card_data_changed y la vuelven a obtener en su lugar; el registro del proyecto registra kv.updated con un recurso card_data_entry, que nunca llega a un Player.
Los límites, cuotas, mediciones, revisiones y la idempotencia son responsabilidad de la tienda K/V de la aplicación.
Las escrituras de agentes y webhooks también tienen límite de frecuencia, por organización según el plan (Standard y Plus 60 por minuto, Education y Premium 600, Enterprise 3,000) y 60 por minuto por clave en todos los planes; una escritura que supera un límite se rechaza con rate_limited y Retry-After, y no se mide.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
| key | ruta | requerido | Clave de datos de tarjeta. No puede comenzar con feed:. |
| If-Match | encabezado | opcional | Revisión positiva opcional de recurso. Omitir para crear o sobrescribir una clave; una revisión obsoleta suministrada es revision_conflict. |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| documento (requerido, objeto) | El documento de datos de la tarjeta: un objeto JSON de máximo 1 MiB. Cuando una ubicación de tarjeta vincula la clave, solo contiene las propiedades dinámicas de esa tarjeta. Una cadena que comienza con media: es una referencia multimedia, media:<id>, que nombra una imagen lista y aprobada en este proyecto. |
| expires_at (opcional, cadena) | Expiración absoluta; los datos omitidos nunca expiran. formato: "date-time" |
| ttl_seconds (opcional, entero) | TTL desde la primera escritura confirmada. Mutuamente excluyente con expires_at. Un reintento conserva la caducidad original. Omitir ambos borra la caducidad. Ajústelo al calendario de quien escribe: cuando el documento de una tarjeta caduca sin ninguna escritura que lo renueve mientras una pantalla muestra la tarjeta, la tarjeta queda en blanco y la condición de notificación card_data_stale avisa al proyecto, así que un trabajo que se detuvo se nota. minimum: 1 maximum: 31536000 |
Plantilla y respuestas de solicitud
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data/KEY'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Documento de datos de tarjeta | Entrada de datos de tarjeta (application/json) |
| 429 | Problema estable rate_limited. Reintente solo después del intervalo Retry-After autorizado. Las denegaciones de ventana fija también incluyen la política RateLimit-Policy y los miembros RateLimit aplicables; las denegaciones por concurrencia y presupuesto de bytes omiten esas divulgaciones opcionales. | Problema (application/problem+json); encabezados: Retry-After, RateLimit-Policy, RateLimit |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Proyecto Scoped_delete Card Data
Elimina un documento de datos de tarjeta. Una tarjeta vinculada a la clave se oculta en pantalla hasta que se escriba un documento nuevamente.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
| key | ruta | requerido | Clave de datos de tarjeta. No puede comenzar con feed:. |
| If-Match | encabezado | opcional | Revisión positiva opcional de recurso. Omitir para escribir el recurso actual; una revisión obsoleta suministrada es revision_conflict. |
| Idempotency-Key | encabezado | opcional | Omitir para una operación nueva. Proporcione y reutilice una clave para deduplicar reintentos; el CLI gestiona las claves automáticamente. |
Plantilla y respuestas de solicitud
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data/KEY'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 204 | Eliminado | sin cuerpo |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Proyecto Scoped_get Feed
Lee un documento compartido de feed de terceros: el mismo documento que una tarjeta incorporada con los mismos parámetros lee (docs/feeds.md).
Los parámetros de consulta se normalizan en la clave de feed de la tarjeta, nombrada por el encabezado ScreenRig-Feed-Key: weather, airquality y alerts toman lat y lon (redondeados a una celda de 0,25 grados); earthquakes lat, lon, radius_km (10 a 20000, 500 por defecto), min_magnitude (0 a 9, 2,5 por defecto) y hours (1 a 168, 24 por defecto); cyclones basins (separados por comas at, ep, cp, wp; todos por defecto) y opcionalmente lat, lon y radius_km (las tormentas cercanas a ese lugar); tides station (un ID de estación de predicción de mareas de NOAA, como 9414290) o lat y lon (la estación más cercana en un radio de 100 km, o si no invalid_request); launches ningún parámetro (los próximos lanzamientos en todo el mundo); rates base (una moneda de referencia del BCE, EUR por defecto); crypto symbols (ID de CoinGecko o símbolos, separados por comas, como máximo 20) y currency (usd por defecto); headlines url (una URL RSS o Atom http o https); drugalerts (screenrig.drugalerts/v1) los informes de retiradas recientes de un país: country (us, ca o gb, obligatorio) y category (drug, por defecto, o food); respiratory (screenrig.respiratory/v1) la actividad semanal de gripe, COVID-19 y VRS de un lugar: country (us o gb, obligatorio) y region (un estado, territorio o DC de EE. UU. por nombre o código postal, o Inglaterra o una región de la UKHSA; el país si está vacío).
La solicitud nunca llama al proveedor. 200 es el documento (esquema, fetchedAt, atribución y los campos de la familia, como define el contrato de tarjetas); su ETag es el sha256 de los bytes y If-None-Match responde 304; Cache-Control max-age corre hasta la próxima búsqueda programada. 202 significa que aún no hay documento: se registró la demanda de lectura y el trabajador de alimentación obtiene la clave en aproximadamente un minuto (Retry-After).
Una lectura de API mantiene una clave obtenida durante 24 horas. Una organización registra como máximo 50 claves nuevas al día en todos sus proyectos (rate_limited después de eso). Una familia sin fuente en esta implementación responde not_found.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
| familia | ruta | requerido | La familia de feeds. |
| lat | consulta | opcional | |
| lon | consulta | opcional | |
| radius_km | consulta | opcional | |
| min_magnitude | consulta | opcional | terremotos: la magnitud mínima. |
| horas | consulta | opcional | terremotos: la ventana en horas. |
| cuencas | consulta | opcional | ciclones: separados por comas at, ep, cp, wp. |
| station | consulta | opcional | tides: un ID de estación de predicción de mareas de NOAA, como 9414290. Sin él, lat y lon eligen la estación más cercana en un radio de 100 km. |
| base | consulta | opcional | |
| símbolos | consulta | opcional | |
| moneda | consulta | opcional | |
| url | consulta | opcional | |
| country | consulta | opcional | drugalerts: us, ca o gb. respiratory: us o gb. Ambos lo exigen. |
| category | consulta | opcional | drugalerts: drug (por defecto) o food. |
| region | consulta | opcional | respiratory: un estado, territorio o DC de EE. UU. por nombre o código postal, o Inglaterra o una región de la UKHSA; el país si está vacío. |
| If-None-Match | encabezado | opcional |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feeds/FAMILY'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Documento de feed | FeedDocument (application/json); encabezados: ETag, ScreenRig-Feed-Key |
| 202 | Aún no hay documento; el trabajador de alimentación obtiene la clave en su próxima pasada. | FeedPending (application/json); encabezados: Retry-After, ScreenRig-Feed-Key |
| 304 | El documento coincide con If-None-Match. | sin cuerpo |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Proyecto Scoped_list Advertising Joined Inventory
Inventario seleccionado y espacios reutilizables dentro de la membresía del llamante. Nunca expone capturas de pantalla, listas de reproducción o datos de proyecto del vendedor.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
| seller_project_id | ruta | requerido |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/projects/PROJECT_ID/advertising/networks/SELLER_PROJECT_ID/inventory'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Inventario y espacios permitidos. | AdvertisingJoinedInventory (application/json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Proyecto Scoped_get Current Agent
Devuelve la instalación del agente vinculada al portador del proyecto que llama más connection_ready. Un proyecto está listo cuando al menos un miembro tiene una passkey o contraseña. El estado de identidad es diagnóstico y no descuenta del medidor de la API.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
Plantilla y respuestas de solicitud
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/agents/self'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 200 | Estado actual de conexión del agente y proyecto. | AgentSelfStatus (application/json); encabezados: Cache-Control |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
Proyecto Scoped_disconnect Current Agent
Revoca solo la membresía del proyecto que llama y su token de proyecto, preservando la identidad global, otras membresías, proyecto y contenido. Repetir con el mismo portador revocado y criptográficamente válido es una operación sin efecto con éxito. Desconectar al último agente activo devuelve agent_lockout_risk a menos que allow_last_agent sea explícito. No descuenta del medidor de API.
Un JWT de acceso de agente, incluido Solo lectura, desconecta al agente del proyecto de su token; la membresía termina, el consentimiento del proyecto deja los permisos del agente y ese par identidad/proyecto se corta para tokens de acceso antiguos. Otros proyectos en el token siguen funcionando. Un reintento con el mismo JWT después de la desconexión es un éxito sin operación.
Parámetros
| Nombre | Enviar | ¿Requerido? | Descripción |
|---|---|---|---|
| project_id | ruta | requerido | |
| ScreenRig-Project | encabezado | opcional | Obsoleto por una versión. Debe ser consistente con las concesiones de proyectos JWT; añade encabezados Deprecation y Warning. Sin intercambio de token. |
Campos del cuerpo de la solicitud
| Campo | Descripción |
|---|---|
| allow_last_agent (opcional, booleano) | Acepta explícitamente la pérdida del último portador activo del agente. Un passkey registrado en el dashboard sigue siendo autoridad administrativa independiente. por defecto: false |
Plantilla y respuestas de solicitud
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/agents/self/disconnect'Respuestas
| Estado | Significado | Cuerpo y encabezados |
|---|---|---|
| 204 | Agente desconectado. | sin cuerpo; encabezados: Cache-Control |
| 401 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| 409 | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |
| predeterminado | Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico. | Problema (application/problem+json) |