OpenAPI YAMLOpenAPI JSONproblemas YAMLVisão geral da API
Este grupo tem 147 operações, geradas a partir de api/openapi.yaml. Filtre por caminho, ação ou autenticação. Cada endpoint lista suas entradas; expanda-o para ver um modelo de solicitação e os códigos de resposta. Os modelos precisam de seus próprios valores e de um corpo válido conforme o esquema.
Substitua os espaços reservados em maiúsculas pelos seus valores. Para uma solicitação JSON, salve um corpo que corresponda ao esquema em request.json. Exemplos de cookies usam um jar local de cookies de uma sessão autenticada.
Projetos, convites e login
Visualizar agente de exclusão de projeto
Retorna detalhes atuais de confirmação, bloqueadores de exclusão e dispositivos arquivados que serão desconectados. allowed é falso, com um motivo, quando o solicitante não pode excluir o projeto (apenas seu proprietário ou um administrador da organização pode; para um agente, sua pessoa responsável) ou um bloqueador permanece.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
| project_id | consulta | opcional | ID de projeto esperado; uma seleção alterada é recusada. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project/deletion-preview'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do ciclo de vida do projeto | ProjectDeletionPreview (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Transferir agente proprietário do projeto
O proprietário transfere a propriedade para um membro existente verificado do projeto; isso não concede nenhuma nova associação. A associação do novo proprietário deixa de ter qualquer screen_scope e upload_scope, então o novo proprietário alcança o projeto inteiro.
Uma sessão do dashboard de um administrador da organização do projeto que é membro transfere a propriedade da mesma forma, de quem for o proprietário do projeto; um administrador da organização que não é membro usa PUT /api/organizations/{org_id}/projects/{project_id}/owner.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| project_id (opcional, string) | ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200 |
| user_id (obrigatório, string) | minLength: 1 maxLength: 200 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do ciclo de vida do projeto | ProjectContext (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Mover agente do projeto
Movimentação autorizada pelo proprietário transfere a ocupação da tela e o novo uso para o pagador de destino atomicamente; cobranças históricas mantêm seu pagador. Um destino que já tem tantos projetos ativos quanto o plano permite é project_limit_reached, cujo required_plan nomeia o plano com espaço, ausente em Enterprise.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| project_id (opcional, string) | ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200 |
| organization_id (obrigatório, string) | minLength: 1 maxLength: 200 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do ciclo de vida do projeto | ProjectContext (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Projeto permitido move agente
Lista destinos que o proprietário administra ou cujo domínio verificado corresponde ao seu e-mail verificado.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
| project_id | consulta | opcional | ID de projeto esperado; uma seleção alterada é recusada. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project/moves'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do ciclo de vida do projeto | ProjectMoveDestinations (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar projetos de agentes
Lista todas as associações ativas da identidade, com contexto de organização e proprietário, incluindo associações omitidas deste token ou do consentimento da concessão. Cada entrada marca in_token; a descoberta não adiciona autoridade e não tem limite de 64 projetos.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
Modelo e respostas da solicitação
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/projects'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do ciclo de vida do projeto | ProjectContextList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar projeto de agente
Cria um projeto nomeado pertencente à pessoa responsável verificada. Sem uma organização nomeada, vai para a organização do domínio verificado da pessoa, senão para a organização do projeto atual, senão para a organização que a pessoa usou mais recentemente entre as que administra ou possui como gratuita, senão uma nova organização.
Um nome de organização seleciona exatamente uma correspondência visível, caso contrário cria uma nova organização. Uma pessoa possui uma organização Standard gratuita; uma nova organização além disso é free_organization_limit, nomeando a que ela possui.
Uma organização tem no máximo tantos projetos ativos quanto o plano permite (Standard 1, Plus 3, Premium 10, Education 50, Enterprise 100, ampliado por seus featuresets); um a mais é project_limit_reached, cujo required_plan nomeia o plano com espaço, ausente em Enterprise (fale com o suporte).
Uma repetição idempotente exata reenvia sua credencial de associação selada por dez minutos. O registro está isento do limite.
Sob um JWT de acesso de agente (escopo de identidade, acesso:gerenciar, uma concessão com acesso de identidade Gerenciar) nenhum token de projeto é entregue; o projeto se junta à concessão com Gerenciar e todas as capacidades, e uma atualização com seu project_id retorna um token para ele.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (obrigatório, ProjectName) | Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60 |
| organization_id (opcional, string) | minLength: 1 maxLength: 200 |
| organization_name (opcional, ProjectName) | Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Resultado do ciclo de vida do projeto | ProjetoCriado (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar convites
Lista registros do ciclo de vida do convite para o projeto atual, excluindo reinicializações de login. Endereços dos destinatários são visíveis para o projeto proprietário, que os forneceu. Tokens e URLs de credenciais nunca são listados.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
| kind | consulta | opcional | |
| status | consulta | opcional | |
| cursor | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/invitations'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Lista registros do ciclo de vida do convite para o projeto atual, excluindo reinicializações de login. | InvitationList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar convites
Cria convites para membros ou compradores de anúncios. Entrega por e-mail nunca retorna uma credencial. Entrega por link é apenas para membros e retorna uma URL, inclusive em replays idempotentes exatos dentro de 24 horas. Convites por e-mail expiram após sete dias; links expiram após 24 horas. Convites por e-mail pendentes do mesmo tipo, endereço e projeto são reutilizados.
Um membro limitado a telas não convida pessoas (outside_screen_scope).
Um convite por e-mail project_member a uma pessoa que seria um convidado externo da organização do projeto (essa não é a organização principal dela) está sujeito à política de convidados dessa organização, e guest_not_allowed (403) responde quando a política (allow, domains ou none) não admite o endereço. Aceitar o convite verifica novamente.
A equipe e os próprios administradores da organização estão isentos. Um screen_scope no convite é o recurso de escopo de telas, que o plano Enterprise inclui; um projeto cujo plano não o inclui é recusado com feature_not_in_plan (402).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| kind (obrigatório, string) | Permitido: "project_member", "ad_buyer" |
| entrega (opcional, string) | Permitido: "email", "link" padrão: "email" |
| e-mails (opcional, array) | |
| advertising (opcional, InvitationAdvertising) | Escopo de propriedade do vendedor: pelo menos uma tela ou slot. Aceita apenas telas, apenas slots ou ambos. |
| upload_scope (opcional, UploadScope) | O que um uploader pode usar (docs/uploaders.md): as playlists cujas páginas ele altera e as pastas de mídia para as quais envia. As pastas são exatamente as listadas, nunca suas subpastas. Um id que, ao ser gravado, não nomeia nenhum objeto ativo do projeto é invalid_request em sua posição; uma exclusão posterior deixa um id morto, que não concede nada. O escopo é lido a cada requisição, então uma mudança vale para a próxima. |
| screen_scope (opcional, ScreenScope) | Sobre o que um membro ou agente com escopo pode agir (docs/screen-scope.md): as telas nas pastas de telas listadas e em todas as pastas dentro delas, e as telas listadas. Pelo menos um id no total. Um id que não nomeia nenhuma pasta ou tela existente do projeto quando gravado é invalid_request na sua posição; uma exclusão posterior deixa um id morto, que não concede nada. O escopo é lido a cada requisição, então uma alteração vale já na próxima. Tags nunca são escopo. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Cria convites para membros ou compradores de anúncios. | InvitationCreated (application/json); headers: RateLimit-Policy, RateLimit |
| 402 | feature_not_in_plan — um escopo de telas exige Enterprise, e um escopo de upload (um uploader) exige Plus; o problema nomeia o recurso, o plano em que a conta está e required_plan. Restringir um escopo de upload e remover qualquer um dos escopos são sempre permitidos. | Problema (application/problem+json) |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
Revogar convite
Revoga um convite pendente. Um convite aceito retorna invitation_consumed. Um membro limitado a telas não revoga convites (outside_screen_scope).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
| id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/invitations/RESOURCE_ID/revoke'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 204 | Revoga um convite pendente. | sem corpo |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Solicitar redefinição de login
Aceita uma solicitação de reset de login sem revelar se uma pessoa possui o endereço.
Uma pessoa cujo endereço não foi verificado, como um cadastro de autoatendimento, também é encontrada, e concluir esse reset, que seu titular deve confirmar com replace_unverified_account, dá ao titular da caixa de entrada uma nova conta (uma nova pessoa com a credencial do reset, uma nova organização e um novo projeto) e exclui a pessoa não verificada, sem que ninguém tivesse demonstrado que o endereço lhe pertencia.
Um link de redefinição expira uma hora depois da última solicitação. Enquanto o link de uma pessoa estiver ativo e tiver menos de um dia, outra solicitação reenvia esse mesmo link (no máximo uma vez a cada dez minutos) e adia a expiração para uma hora após a solicitação, de modo que uma solicitação nunca invalida o link que já está na caixa de entrada; caso contrário, um novo link o substitui. Não há limite por endereço.
Concluir uma redefinição remove as outras chaves de acesso da pessoa (todas as chaves de acesso em uma redefinição de senha), remove a senha quando a nova credencial é uma chave de acesso, descarta uma alteração de e-mail pendente e encerra todas as sessões. Com ou sem pessoa, a solicitação também reenvia no máximo dez convites endereçados ao e-mail, e cada convite no máximo uma vez por hora.
Dos dez projetos não excluídos mais recentes com endereço de contato correspondente, cada projeto ativo com um plano do catálogo e cuja titularidade ainda esteja pendente desde o cadastro recebe novamente seu convite de cadastro, mesmo que ele tenha expirado ou que o destinatário já tenha entrado como membro comum.
Aceitar esse convite de cadastro com o acesso existente conclui a reivindicação de titularidade; somente solicitar a recuperação não altera a titularidade nem as credenciais. Convites por email pendentes para membros e compradores de anúncios de projetos ativos com um plano do catálogo, e convites pendentes para administradores de organizações ativas, ocupam as vagas restantes, dos mais recentes para os mais antigos.
Um convite reenviado mantém seu ID e recebe um novo link e uma nova validade; o link antigo deixa de funcionar e o número de convites pendentes do projeto não muda. Um convite de cadastro expirado volta como um novo convite e ocupa novamente uma vaga, aumentando o contador em um; ele é ignorado se o projeto estiver cheio.
Outros convites expirados, revogados, aceitos ou compartilhados por link não são reenviados.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| email (obrigatório, string) | minLength: 3 maxLength: 254 formato: "email" |
Modelo e respostas da solicitação
curl --request POST --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/sign-in-resets'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 202 | Aceita uma solicitação de reset de login sem revelar se uma pessoa possui o endereço. | SignInResetAccepted (application/json); cabeçalhos: RateLimit-Policy, RateLimit |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
Registrar CLI
Cria um novo projeto e seu primeiro agente por meio de inscrição explícita via CLI agrupada, mesmo quando o endereço de contato já pertence a uma pessoa ou projeto. O e-mail de contato permanece não verificado e não concede autoridade; endereços malformados retornam invalid_request.
Enfileira um convite de inscrição na mesma transação. project_name é opcional; a omissão usa um nome legível de duas palavras. A repetição idempotente exata precede os limites de taxa. Persista a credencial permanente antes de relatar sucesso; seu envelope de repetição expira em issuance_expires_at e tentativas posteriores retornam credential_issuance_expired.
O registro de idempotência dura 24 horas.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| credential_format (opcional, string) | Deve ser oauth, que responde ao par JWT do agente (CLIEnrollmentOAuth). legacy, ou omitir, responde 410 client_update_required, porque os portadores permanentes legados foram aposentados. Um servidor que não emite JWTs de agente responde not_ready. Permitidos: "oauth", "legacy" |
| intent (opcional, string) | Propósito opcional de inscrição. Omitir ou signage mantém screens=true, advertiser=false. advertising define advertiser=true, screens=false e nunca altera a atribuição do plano de cobrança. Permitidos: "signage", "advertising" |
| client_id (obrigatório, string) | Identidade anônima estável de instalação gerada a partir de 32 bytes CSPRNG e persistida antes da primeira requisição. É material para limite de taxa, não credencial de projeto. padrão: "^cli_[A-Za-z0-9_-]{43}$" |
| email (opcional, string) | Endereço de contato do projeto não verificado. Exatamente um entre email ou agentid_claim é obrigatório. A inscrição sempre cria um novo projeto e enfileira seu convite; um endereço sozinho não concede autoridade. minLength: 3 maxLength: 254 formato: "email" |
| agentid_claim (opcional, string) | Código de reivindicação AgentID de uso único da página de login AgentID. Exatamente um de email ou agentid_claim é obrigatório. O endereço do proprietário AgentID verificado torna-se o contato do projeto e destinatário do convite. padrão: "^agid_[A-Za-z0-9_-]{43}$" |
| beta_key (opcional, string) | Obrigatório quando o servidor tem uma chave beta de inscrição configurada. Omitir quando o servidor não restringe a inscrição. |
| nome (opcional, string) | padrão: "Agente" minLength: 1 maxLength: 80 |
| agent_type (opcional, string) | padrão: "cli" padrão: "^[A-Za-z0-9][A-Za-z0-9._-]{0,31}$" |
| plataforma (opcional, string) | maxLength: 80 |
| version (opcional, string) | maxLength: 40 |
| install_source (opcional, string) | Opcional. De onde a integração foi instalada: o host e, depois de uma barra, o marketplace (claude/screenrig, codex/screenrig, grok/screenrig), ou apenas um host como npm. Quem informa é o software, não uma pessoa, então um valor ausente ou com formato incorreto é ignorado e nunca faz a inscrição falhar. Apenas conta de onde vieram as instalações e não concede nada. padrão: "^[a-z][a-z0-9-]{0,31}(/[a-z0-9][a-z0-9._-]{0,63})?$" |
| project_name (opcional, ProjectName) | Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60 |
| setup_code (opcional, string) | Código de configuração opcional que a pessoa copiou do site com o prompt de configuração (dois grupos de quatro letras e dígitos, maiúsculas e hífen ignorados). Vincula o novo projeto a essa visita ao site; um código desconhecido ou expirado é ignorado e nunca faz a inscrição falhar. Não concede nada. pattern: "^[0-9A-Za-z]{4}-?[0-9A-Za-z]{4}$" |
| organização (opcional, ProjectName) | Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60 |
Modelo e respostas da solicitação
curl --request POST --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/enrollments'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Novo projeto e credencial bearer permanente. O projeto carrega o endereço de contato não verificado em sua forma fornecida e aparada. Persista e verifique o token antes de relatar sucesso na inscrição. A credencial não tem expiração programada, mas seu envelope de entrega de retry exato criptografado existe apenas até issuance_expires_at. | CLIEnrollmentOAuth (application/json); cabeçalhos: Cache-Control, RateLimit-Policy, RateLimit |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 409 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 410 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| 500 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Iniciar ID de agente Entrar
Inicia um login no navegador AgentID (OIDC) no host da API derivado da origem pública em tempo de execução (https://play.<domain> -> https://api.<domain>). Define um cookie de vínculo de uso único e redireciona para o endpoint de autorização AgentID com PKCE S256. Responde apenas no host da API.
Enquanto a parte confiável não tem id e segredo de cliente, a rota exibe uma página simples indisponível com 503.
Modelo e respostas da solicitação
curl --request GET 'https://api.screenrig.ai/agentid/start'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 302 | Redirecionar para o endpoint de autorização AgentID. | sem corpo |
| 503 | Login AgentID indisponível. | string (text/html) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Concluir login Agent ID
Conclui um login AgentID no navegador no host da API. Requer iss igual ao emissor configurado, cookie de vinculação e uma transação de uso único não expirada.
Troca o código com client_secret_basic e PKCE, verifica o id_token ES256 (iss, aud, exp com desvio de 60 s, nonce) contra o JWKS em cache, chama userinfo e aplica as regras do proprietário, então renderiza uma página de código de reivindicação de uso único. Um sujeito já vinculado a um agente renderiza a página já inscrita.
Esta rota nunca cria um projeto, identidade ou convite.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| código | consulta | opcional | |
| estado | consulta | opcional | |
| iss | consulta | opcional | |
| erro | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET 'https://api.screenrig.ai/agentid/callback'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Página de código de reivindicação AgentID de uso único com etapas de instalação do plugin. | string (text/html) |
| 409 | O sujeito AgentID já está registrado. | string (text/html) |
| 503 | Login AgentID indisponível. | string (text/html) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter projeto
O projeto chamador. Não debita o medidor de API de 1 crédito, então um projeto com saldo zero ainda pode ler o restante e se recuperar. Após um principal de projeto bem-sucedido, respostas JSON autenticadas /api e de problema incluem ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset e ScreenRig-Credits-Included como créditos inteiros.
SSE, runtime, conteúdo e respostas não autenticadas os omitem.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Projeto | Projeto (application/json); cabeçalhos: ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset, ScreenRig-Credits-Included, ScreenRig-Credits-Low |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Atualizar projeto
Renomeia o projeto atual. Os nomes contêm de 1 a 60 caracteres imprimíveis e nenhum texto com aparência de URL.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| project_id (opcional, string) | ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200 |
| nome (obrigatório, ProjectName) | Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Renomeia o projeto atual. | Projeto (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Excluir agente do projeto
Só o proprietário do projeto ou um administrador de sua organização pode excluí-lo; qualquer outro chamador é recusado com forbidden. Uma pessoa também deve ser membro do projeto.
Um agente precisa da capacidade de projeto de associação alvo e exclui para sua pessoa responsável, que deve ser o proprietário ou um administrador da organização; um agente sem pessoa responsável não pode excluir, exceto o agente que inscreveu o projeto enquanto nenhuma pessoa aceitou sua inscrição.
Também requer o nome e revisão atuais, zero telas não arquivadas, sem crédito, reservas ou dívida em sua própria carteira e sem publicidade ao vivo. Um saldo negativo acumulado sob termos gratuitos ou de lançamento não bloqueia; a exclusão o compensa com uma entrada de razão project_delete_writeoff. Enfileira avisos para membros e usa a lápide irreversível.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| project_id (opcional, string) | ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200 |
| empty_only (opcional, boolean) | Exigir um projeto Screens vazio na transação de exclusão, incluindo conteúdo, outros agentes ou membros, trabalho e correspondência. O CLI também exige sua proveniência de inscrição salva antes de usar esta proteção de limpeza. A omissão mantém a exclusão explícita de membros. |
| nome (obrigatório, ProjectName) | Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60 |
| revisão (obrigatório, inteiro) | mínimo: 1 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do ciclo de vida do projeto | ProjetoExcluído (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter capacidades do projeto
O plano do projeto chamador, flags independentes de anunciante/telas com sua revisão, o conjunto derivado de capacidades efetivas, os recursos do plano que ele tem (plan_features) e seus limites (limits). Nunca reflete uma reivindicação do cliente; um plano desconhecido falha fechado como proibido.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project/capabilities'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Capacidades do projeto. | ProjectCapabilities (application/json); cabeçalhos: Cache-Control |
| 403 | proibido - o plano do projeto não está no catálogo. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar a auditoria da organização
O registro de auditoria próprio da organização: alterações em seus administradores, domínios e configurações de cobrança, com as mesmas entradas, filtros e formatos de GET /api/audit. Exige um administrador da organização. Faz parte do registro de auditoria, que o plano Enterprise inclui; uma organização cujo plano não o inclui é recusada com feature_not_in_plan (402).
Todo plano registra as suas alterações.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| ator | consulta | opcional | |
| actor_kind | consulta | opcional | |
| origem | consulta | opcional | |
| ação | consulta | opcional | |
| desde | consulta | opcional | |
| até | consulta | opcional | |
| cursor | consulta | opcional | |
| limite | consulta | opcional | |
| formato | consulta | opcional | json (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas). |
Modelo e respostas da solicitação
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/audit'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uma página de entradas ou o registro filtrado como arquivo. | AuditList (application/json), string (text/csv), string (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet), string (application/pdf) |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — O registro de auditoria faz parte do plano Enterprise; o problema nomeia o recurso, o plano em que a conta está e required_plan. | Problema (application/problem+json) |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar notificações da organização
As notificações da organização, de todos os canais, mais antigas primeiro (no máximo 50).
Uma notificação pertence à organização e cobre todos os projetos dela, inclusive os adicionados depois (project_ids ausente), ou os projetos escolhidos (project_ids); ela age sobre as telas, fontes, campanhas e cartões desses projetos exatamente como uma notificação de projeto. status é failing enquanto as entregas de qualquer projeto coberto estiverem, e failing_since, last_success_at e last_failure_at reúnem as dos projetos cobertos (o início de falha mais antigo, o último sucesso e a última falha).
O segredo de assinatura de um webhook nunca é retornado aqui. Exige um administrador da organização; qualquer outra pessoa recebe not_found.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | As notificações da organização. | OrganizationNotificationList (application/json) |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar notificação da organização
Cria uma notificação da organização, com os campos de POST /api/notifications e os projetos que ela cobre: project_ids ausente ou null cobre todos os projetos da organização (os que ela tem e os que vier a ter), uma lista cobre exatamente esses, cada um um projeto ativo desta organização (invalid_request caso contrário).
Os destinatários de uma notificação por e-mail são owner (o proprietário de cada projeto coberto) ou user_ids de pessoas da organização (seus administradores e membros da organização) ou membros de um projeto coberto; cada projeto ainda envia e-mail apenas às pessoas que são membros dele.
Uma organização tem no máximo 50 notificações, sem contar as padrão que o sistema cria (notification_limit_reached). Os mesmos recursos do plano restringem os canais, regras e condições como nas rotas de projeto, avaliados no plano da organização. Cada projeto coberto recebe notification.created, e a mudança é registrada no registro de auditoria da organização.
O segredo de assinatura de um webhook é retornado apenas nesta resposta e em rotate-secret; um único segredo assina as entregas de todos os projetos cobertos. Repetir a requisição exatamente igual, com o mesmo Idempotency-Key, retorna esta mesma resposta, com o segredo, por vinte e quatro horas.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| channel (obrigatório, string) | Permitidos: "email", "webhook", "slack", "teams", "pagerduty", "telegram" |
| descrição (opcional, string) | Um nome para pessoas. maxLength: 200 |
| conditions (opcional, NotificationConditions) | |
| screen_tags (opcional, ScreenTags) | Tags do seletor de frota, de 0 a 16 tags únicas exatas, cada uma correspondendo à gramática de tags de mídia. No ScreenPatch o array substitui o conjunto inteiro e um array vazio o limpa; uma tag duplicada ou malformada é invalid_request. Alterar tags aumenta a revisão da tela (If-Match a protege) e anexa screen.updated com details.tags; nunca altera a revisão do manifesto. Tags nunca estão no manifesto de tempo de execução e nunca na autorização. |
| audience (opcional, CampaignAudience) | Quais telas uma campanha segmenta: exatamente um entre all (toda regra corresponde), any (ao menos uma corresponde), tag (a tela tem a tag), screen_id (essa tela) ou folder (as telas dessa pasta de telas e de toda pasta dentro dela, GET /api/screen-folders; a pasta deve existir). As regras se aninham em no máximo 3 níveis e um público-alvo tem no máximo 500 regras. {"all": []} é toda tela do projeto; nos demais casos, all e any listam ao menos uma regra. |
| min_severity (opcional, NotificationSeverity) | A severidade de um aviso, da menos severa para a mais severa. Um aviso aberto tem a severidade de sua condição: error para screen_offline e warning para toda outra condição, a menos que a severidade da notificação diga o contrário. Um aviso de resolvido e um teste são info. Permitidos: "info", "warning", "error" |
| severity (opcional, NotificationSeverityOverrides) | Condição para severidade nesta notificação, como {"not_playing": "error"}. Conta para min_severity e é a severidade que Teams e PagerDuty mostram para a condição. Uma condição não listada mantém seu padrão. Em um patch, um objeto vazio, como null, limpa todas as sobrescritas. |
| active_hours (opcional, NotificationActiveHours) | Quando os avisos abertos são enviados: as janelas (screenrig.schedule/v1), lidas em timezone. Um aviso que vence enquanto elas estão fechadas espera a próxima abertura (outside hold, o padrão) e é enviado então se sua condição ainda se mantiver, de modo que uma condição que termina antes não envia nada, ou é ignorado (outside drop; last_error outside_hours). Um aviso de resolvido para um aviso aberto que foi enviado sempre é enviado, dentro do horário ou não, e um teste o ignora. crashing é retido ou descartado como qualquer outra condição. O horário julga um aviso quando ele sai pela primeira vez; um que falhou é repetido no cronograma habitual, qualquer que seja o horário. Adicionar, alterar ou remover o horário faz com que os avisos retidos pelo antigo sejam julgados de novo na hora. |
| reach_drop (opcional, NotificationReachDrop) | A menor queda no alcance de uma campanha para a qual um aviso reach_dropped é enviado: screens é o menor número de telas perdidas (padrão 1) e percent, quando definido, a menor parcela das telas que a campanha alcançava quando foi publicada; uma queda precisa atender aos dois. Uma queda menor não enfileira aviso, e um aviso enfileirado cuja queda diminuiu abaixo do limite até a hora do envio é ignorado (condition_cleared). Somente com a condição reach_dropped; em uma notificação sem ela, invalid_request. |
| hold_minutes (opcional, integer) | Por quanto tempo uma condição precisa durar antes de notificar. crashing nunca é retido. default: 10 minimum: 0 maximum: 1440 |
| recipients (opcional, NotificationRecipients) | Somente para e-mail. owner (quem for o proprietário do projeto no momento em que um aviso é enviado) ou o user_id de uma pessoa que seja membro do projeto; um user_id que não seja de um membro retorna invalid_request. Cada um recebe o e-mail no endereço verificado. Quem já saiu do projeto ou não tem endereço verificado é ignorado. |
| url (opcional, string) | Somente webhook: URL https em um host público da internet, porta 443 (o padrão) ou 8443. Sem userinfo nem fragmento. maxLength: 2048 format: "uri" |
| event_types (opcional, NotificationEventTypes) | Somente webhook. Eventos do projeto também enviados por POST à medida que acontecem, exatamente como um webhook os envia: tipos exatos, como screen.online, ou prefixos terminados em .*, como screen.*. notification.test nunca é distribuído. |
| destination (opcional, NotificationDestination) | Somente Slack, Teams, PagerDuty e Telegram; obrigatório para eles. A credencial na forma em que o serviço a emite: slack, a URL do webhook de entrada (hooks.slack.com); teams, a URL do webhook do Workflows (logic.azure.com ou powerplatform.com; as URLs de conector do Office 365 foram aposentadas); pagerduty, a chave de roteamento do Events API v2 de 32 caracteres; telegram, o token do bot. Outra forma resulta em notification_destination_rejected. Ele é selado, nunca é retornado e aparece nas leituras apenas como destination_hint. minLength: 1 maxLength: 2048 |
| telegram_chat_id (opcional, NotificationTelegramChat) | Somente Telegram; obrigatório para ele. O chat em que publicar: o id numérico dele (negativo para um grupo ou canal) ou @channelname. Não é uma credencial. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$" |
| habilitado (opcional, boolean) | padrão: true |
| project_ids (opcional, em linha) | Os projetos que a notificação cobre; null ou ausente cobre todos os projetos da organização. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criada. O segredo de um webhook é mostrado apenas aqui e em rotate-secret. | Notification (application/json); cabeçalhos: Cache-Control |
| 400 | invalid_request, webhook_url_rejected ou notification_destination_rejected. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — como em POST /api/notifications, para o plano da organização. | Problema (application/problem+json) |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 409 | notification_limit_reached ou idempotency_mismatch. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter notificação da organização
Uma notificação da organização, como GET /api/organizations/{org_id}/notifications a mostra.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uma notificação. | Notification (application/json); cabeçalhos: ETag |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Atualizar notificação da organização
Altera qualquer campo que PATCH /api/notifications/{id} altera, na notificação e em todos os projetos cobertos, e project_ids: ausente mantém os projetos, null cobre todos os projetos, uma lista cobre exatamente esses. Um projeto que ganha a notificação começa no evento atual (nada anterior é enviado); um que a perde tem a notificação excluída.
Cada projeto coberto recebe notification.updated, e a mudança é registrada no registro de auditoria da organização.
Uma mudança que faz a notificação cobrir um projeto que ela não cobre hoje é restringida pelo plano como a criação da notificação tal como ficará (seu canal, suas regras e condições de tela, no plano da organização); cobrir menos projetos nunca é restringido, e passar de uma lista para todos os projetos sempre cobre mais. If-Match protege a revisão.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| id | caminho | obrigatório | |
| If-Match | cabeçalho | opcional | Revisão positiva opcional do recurso. Omitir para escrever o recurso atual; uma revisão obsoleta fornecida é revision_conflict. |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| descrição (opcional, string) | Uma string vazia limpa a descrição. maxLength: 200 |
| conditions (opcional, NotificationConditions) | |
| screen_tags (opcional, ScreenTags) | Tags do seletor de frota, de 0 a 16 tags únicas exatas, cada uma correspondendo à gramática de tags de mídia. No ScreenPatch o array substitui o conjunto inteiro e um array vazio o limpa; uma tag duplicada ou malformada é invalid_request. Alterar tags aumenta a revisão da tela (If-Match a protege) e anexa screen.updated com details.tags; nunca altera a revisão do manifesto. Tags nunca estão no manifesto de tempo de execução e nunca na autorização. |
| audience (opcional, inline) | Como em NotificationPatch. |
| min_severity (opcional, inline) | Como em NotificationPatch. |
| severity (opcional, inline) | Substitui todas as sobrescritas; null ou um objeto vazio as limpa. |
| active_hours (opcional, inline) | Substitui o horário; null o limpa. |
| reach_drop (opcional, inline) | Substitui o limite; null limpa. |
| hold_minutes (opcional, integer) | minimum: 0 maximum: 1440 |
| recipients (opcional, NotificationRecipients) | Somente para e-mail. owner (quem for o proprietário do projeto no momento em que um aviso é enviado) ou o user_id de uma pessoa que seja membro do projeto; um user_id que não seja de um membro retorna invalid_request. Cada um recebe o e-mail no endereço verificado. Quem já saiu do projeto ou não tem endereço verificado é ignorado. |
| url (opcional, string) | maxLength: 2048 format: "uri" |
| event_types (opcional, NotificationEventTypes) | Somente webhook. Eventos do projeto também enviados por POST à medida que acontecem, exatamente como um webhook os envia: tipos exatos, como screen.online, ou prefixos terminados em .*, como screen.*. notification.test nunca é distribuído. |
| destination (opcional, NotificationDestination) | Somente Slack, Teams, PagerDuty e Telegram; obrigatório para eles. A credencial na forma em que o serviço a emite: slack, a URL do webhook de entrada (hooks.slack.com); teams, a URL do webhook do Workflows (logic.azure.com ou powerplatform.com; as URLs de conector do Office 365 foram aposentadas); pagerduty, a chave de roteamento do Events API v2 de 32 caracteres; telegram, o token do bot. Outra forma resulta em notification_destination_rejected. Ele é selado, nunca é retornado e aparece nas leituras apenas como destination_hint. minLength: 1 maxLength: 2048 |
| telegram_chat_id (opcional, NotificationTelegramChat) | Somente Telegram; obrigatório para ele. O chat em que publicar: o id numérico dele (negativo para um grupo ou canal) ou @channelname. Não é uma credencial. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$" |
| habilitado (opcional, boolean) | |
| snoozed_until (opcional, inline) | Não envia nada até este instante, no máximo 30 dias à frente; null encerra o silenciamento. |
| project_ids (opcional, em linha) | Ausente mantém os projetos que a notificação cobre, null cobre todos os projetos da organização, uma lista cobre exatamente esses projetos. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Notificação atualizada. | Notification (application/json); cabeçalhos: ETag |
| 400 | invalid_request, webhook_url_rejected ou notification_destination_rejected. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — como em PATCH /api/notifications/{id}, para o plano da organização. | Problema (application/problem+json) |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 412 | revision_conflict — If-Match está desatualizado; a current_revision do erro contém a revisão atual. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Excluir notificação da organização
Exclui a notificação de todos os projetos que ela cobre, com notification.deleted em cada um, e a registra no registro de auditoria da organização. Os avisos pendentes são marcados como falhos com webhook_deleted.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| id | caminho | obrigatório | |
| If-Match | cabeçalho | opcional | Revisão positiva opcional do recurso. Omitir para escrever o recurso atual; uma revisão obsoleta fornecida é revision_conflict. |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Modelo e respostas da solicitação
curl --request DELETE --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 204 | Excluído. | sem corpo; cabeçalhos: Cache-Control |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 412 | revision_conflict — If-Match está desatualizado; a current_revision do erro contém a revisão atual. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Rotacionar segredo da notificação da organização
Somente notificações de webhook (qualquer outro canal é invalid_request). Substitui o segredo de assinatura em todos os projetos cobertos de uma vez, para que um receptor continue verificando um único segredo, e retorna a notificação com o novo em secret.
Como em POST /api/notifications/{id}/rotate-secret, no máximo uma tentativa por projeto já em andamento ainda pode chegar assinada com o segredo antigo. Repetir a requisição exatamente igual, com o mesmo Idempotency-Key, retorna o mesmo novo segredo por vinte e quatro horas.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| id | caminho | obrigatório | |
| If-Match | cabeçalho | opcional | Revisão positiva opcional do recurso. Omitir para escrever o recurso atual; uma revisão obsoleta fornecida é revision_conflict. |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Modelo e respostas da solicitação
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/rotate-secret'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | A notificação e seu novo segredo. | Notification (application/json); cabeçalhos: Cache-Control |
| 400 | invalid_request: a notificação não é um webhook. | Problema (application/problem+json) |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 412 | revision_conflict — If-Match está desatualizado; a current_revision do erro contém a revisão atual. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Testar notificação da organização
Envia um notification.test pelo primeiro projeto que a notificação cobre (por id de projeto), como POST /api/notifications/{id}/test envia um pelo seu projeto: uma entrega, cujo resultado a lista de entregas mostra, tentada uma única vez.
Todos os projetos cobertos têm o mesmo receptor, destino e segredo, então um teste comprova o canal; o e-mail de um teste vai para os destinatários desse projeto. Uma notificação que não cobre nenhum projeto é invalid_request.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Modelo e respostas da solicitação
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/test'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 202 | A entrega de teste na fila. | NotificationDelivery (application/json); cabeçalhos: RateLimit-Policy, RateLimit |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar entregas da notificação da organização
Os registros de entregas de todos os projetos que a notificação cobre, em uma única lista, mais recentes primeiro pelo momento em que cada linha entrou na fila. Cada linha nomeia seu projeto (project_id), e seu id abre GET .../deliveries/{delivery_id}/attempts. Devolva next_cursor como antes para a próxima página.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| id | caminho | obrigatório | |
| before | consulta | opcional | next_cursor da página anterior de entregas. |
| limite | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/deliveries'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uma página de entregas. | NotificationDeliveryList (application/json) |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar tentativas de entrega da notificação da organização
As tentativas de uma entrega, mais recentes primeiro, as 20 mais recentes. Uma entrega que não é desta notificação é not_found.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| id | caminho | obrigatório | |
| delivery_id | caminho | obrigatório | O id de uma das entregas do webhook. |
Modelo e respostas da solicitação
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/deliveries/DELIVERY_ID/attempts'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | As tentativas mantidas da entrega. | NotificationDeliveryAttemptList (application/json) |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Reinscrever uma pessoa em uma notificação da organização
Volta a enviar os e-mails de uma notificação a uma pessoa que os interrompeu com o link de cancelamento do e-mail, em todos os projetos que a notificação cobre (o link os interrompe em todos eles). Idempotente: uma pessoa que não está interrompida não altera nada, e a resposta é a notificação como está.
Uma mudança aumenta a revisão e adiciona notification.updated com os detalhes change resubscribed, user_id e via api a cada projeto coberto.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| id | caminho | obrigatório | |
| user_id | caminho | obrigatório | O user_id de uma pessoa na lista unsubscribed da notificação. |
Modelo e respostas da solicitação
curl --request DELETE --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/unsubscribed/USER_ID'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | A notificação, sem a pessoa em unsubscribed. | Notification (application/json); cabeçalhos: ETag |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar os tipos de relatório em um projeto
Lista os tipos de relatório que GET /api/reports/{kind} gera, com os filtros de cada um, e os formatos em que um relatório é gravado. Requer a capacidade de relatórios.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/reports'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Os tipos de relatório. | ReportCatalog (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar as assinaturas de relatórios em um projeto
Lista os relatórios programados do projeto, do mais antigo ao mais recente (no máximo 50), cada um com seu próximo envio e o resultado do último. Requer a capacidade do projeto.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/report-subscriptions'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | As assinaturas de relatórios do projeto. | ReportSubscriptionList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar assinatura de relatório em um projeto
Programa o envio de um relatório por e-mail, como anexo PDF, XLSX ou CSV, todos os dias, semanas ou meses em um horário em um fuso horário.
Cada envio cobre o período anterior, em dias UTC: o dia anterior, os sete dias anteriores ou o mês passado. recipients são membros do projeto, indicados por user_id ou pelo endereço de e-mail do membro; qualquer outra pessoa é recusada, então uma assinatura nunca é um meio de escrever a um estranho, e um membro que sai deixa de recebê-la.
Uma execução que falha é repetida e aparece com last_status failed e last_error. No máximo 50 por organização em todos os seus projetos (report_subscription_limit_reached).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (obrigatório, string) | minLength: 1 maxLength: 100 |
| kind (obrigatório, string) | Valores permitidos: "fleet_health", "uptime", "publishing", "alerts", "alert_log", "proof_of_play" |
| filters (opcional, objeto) | Os filtros do relatório além dos dias (GET /api/reports os lista). |
| schedule (obrigatório, ReportSchedule) | |
| format (obrigatório, string) | Valores permitidos: "pdf", "xlsx", "csv" |
| recipients (obrigatório, array) | user_id ou endereço de e-mail de membros do projeto. |
| habilitado (opcional, boolean) | padrão: true |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criada. | ReportSubscription (application/json); cabeçalhos: ETag |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — Os relatórios fazem parte do Plus. O problema nomeia o recurso, o plano do projeto e required_plan. | Problema (application/problem+json) |
| 409 | report_subscription_limit_reached. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar cartões no projeto
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| projeto | consulta | opcional | |
| depois | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/cards'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Recurso do cartão | objeto (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar cartão de projeto
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| tipo (obrigatório, string) | |
| major (opcional, inteiro) | mínimo: 1 |
| params (obrigatório, objeto) | |
| dados (opcional, objeto) |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Recurso do cartão | CardInstance (application/json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar portal da organização
Exige um administrador designado de uma organização ativa, autenticação por cookie da mesma origem exata e CSRF por JWT. O ator e a URL de retorno são controlados pelo servidor. A resposta é privada e no-store. Também está aberto a uma organização delegada a um revendedor, para o seu cartão de pagamento e as faturas anteriores.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Resultado do gerenciamento de cobrança. | BillingPortalSession (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Definir recarga automática da organização
Exige um administrador designado de uma organização ativa, autenticação por cookie da mesma origem exata e CSRF por JWT. O ator é controlado pelo servidor. Desativar preserva os valores salvos e o gasto mensal; os campos de valor são ignorados ao desativar. A resposta é privada e no-store. Alterar as configurações remove uma pausa recuperável somente depois que qualquer fatura em aberto com falha de pagamento for anulada com segurança.
Ativá-lo para uma organização delegada a um revendedor responde 409 billed_by_reseller; desativar continua permitido.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do gerenciamento de cobrança. | AutoTopUpView (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter os pagamentos de uma organização
Visões de pagamentos de uma organização ativa. Exige o cookie do administrador designado; a visibilidade da equipe, por si só, não concede acesso a compras. Pagamentos não configurados retornam available false. O retorno do navegador nunca concede créditos.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/payments'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Disponibilidade de pagamentos e compras recentes. | OrganizationPayments (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar um pagamento para uma organização
Iniciar uma compra pré-paga para o administrador designado de uma organização ativa. Exige autenticação por cookie da mesma origem e, para sessões JWT, um cabeçalho CSRF correspondente. O servidor controla a organização, o cliente, o responsável e as URLs de retorno. Os créditos são aplicados somente após o serviço de cobrança confirmar o pagamento. Em caso de respostas ambíguas, tente novamente com a mesma Idempotency-Key e o mesmo valor.
Uma organização delegada a um revendedor responde 409 billed_by_reseller.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| amount_cents (obrigatório, inteiro) | mínimo: 10000 máximo: 1000000 formato: "int64" |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Compra criada ou repetida. A URL de pagamento fica ausente após a conclusão. As respostas são privadas e no-store. | CreditPurchase (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter saldo de cobrança da organização
A carteira da organização. Exige um admin designado da organização, um admin do revendedor ao qual a organização está delegada ou uma sessão da equipe. Não concede associação a nenhum projeto.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/balance'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Saldo de cobrança da organização. | Saldo de cobrança (application/json); cabeçalhos: Cache-Control |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter extrato de cobrança da organização
Entradas de diário atribuídas a esta organização no momento da cobrança, com identidades de projeto e pagador. Movimentações não transferem acesso histórico. Entradas anteriores ao contexto registrado da organização permanecem em seus extratos de projeto. Lido pelas mesmas pessoas que o saldo (getOrganizationBillingBalance).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| cursor | consulta | opcional | |
| limite | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/statement'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Extrato de cobrança da organização. | Extrato de cobrança (application/json); cabeçalhos: Cache-Control |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter uso de cobrança da organização
O pool de uso da organização e a participação de cada projeto em um mês UTC. Cobre o uso pago por esta organização; os demais custos do pagador estão no extrato da organização. Lido pelas mesmas pessoas que o saldo (getOrganizationBillingBalance).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório | |
| cursor | consulta | opcional | |
| limite | consulta | opcional | |
| período | consulta | opcional | Mês UTC no formato YYYY-MM; padrão para o mês atual. |
Modelo e respostas da solicitação
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/usage'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uso de cobrança da organização. | OrganizationBillingUsage (application/json); cabeçalhos: Cache-Control |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Lista de organizações do agente
Organizações visíveis, incluindo organizações vazias para seus administradores. Nomes não são únicos.
Modelo e respostas da solicitação
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/organizations'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado da organização. | OrganizationList (application/json); cabeçalhos: Cache-Control |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Renomear organizações do agente
Admins designados e agentes cujo responsável verificado é um admin podem renomear uma organização. Nenhuma permissão ou associação de projeto é concedida.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| org_id | caminho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (obrigatório, ProjectName) | Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado da organização. | OrganizationView (application/json); cabeçalhos: Cache-Control |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Definir política de revisão do projeto
Ativa ou desativa Exigir revisão para alterações do agente. Enquanto ativado, todo agente e cliente de serviço no projeto tem acesso Propor em cada solicitação, independentemente das credenciais. Somente o proprietário do projeto ou um administrador da organização do projeto podem alterar (proibido para outros); sessões de sombra da equipe não podem alterar.
If-Match carrega review_policy_revision (0 permitido) e é obrigatório; um valor obsoleto é revision_conflict. Desativá-lo requer prova, a prova de passkey fresca ou senha que a aprovação de conexão do agente usa; ativá-lo não. Revisões abertas permanecem decidíveis de qualquer forma. Anexa project.review_policy_changed.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| If-Match | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| agent_changes_require_review (obrigatório, booleano) | |
| proof (opcional, DashboardProof) |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | A política atualmente em vigor. | ReviewPolicy (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Visualizar agente de exclusão de projeto no projeto
Retorna detalhes atuais de confirmação, bloqueadores de exclusão e dispositivos arquivados que serão desconectados. allowed é falso, com um motivo, quando o solicitante não pode excluir o projeto (apenas seu proprietário ou um administrador da organização pode; para um agente, sua pessoa responsável) ou um bloqueador permanece.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| project_id | consulta | opcional | ID de projeto esperado; uma seleção alterada é recusada. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/deletion-preview'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do ciclo de vida do projeto | ProjectDeletionPreview (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Transferir agente proprietário do projeto no projeto
O proprietário transfere a propriedade para um membro existente verificado do projeto; isso não concede nenhuma nova associação. A associação do novo proprietário deixa de ter qualquer screen_scope e upload_scope, então o novo proprietário alcança o projeto inteiro.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| project_id (opcional, string) | ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200 |
| user_id (obrigatório, string) | minLength: 1 maxLength: 200 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do ciclo de vida do projeto | ProjectContext (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Mover agente do projeto no projeto
Movimentação autorizada pelo proprietário transfere a ocupação da tela e o novo uso para o pagador de destino atomicamente; cobranças históricas mantêm seu pagador.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| project_id (opcional, string) | ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200 |
| organization_id (obrigatório, string) | minLength: 1 maxLength: 200 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do ciclo de vida do projeto | ProjectContext (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Projeto permitido move agente no projeto
Lista destinos que o proprietário administra ou cujo domínio verificado corresponde ao seu e-mail verificado.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| project_id | consulta | opcional | ID de projeto esperado; uma seleção alterada é recusada. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/moves'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do ciclo de vida do projeto | ProjectMoveDestinations (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar convites no projeto
Lista registros do ciclo de vida do convite para o projeto atual, excluindo reinicializações de login. Endereços dos destinatários são visíveis para o projeto proprietário, que os forneceu. Tokens e URLs de credenciais nunca são listados.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| kind | consulta | opcional | |
| status | consulta | opcional | |
| cursor | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/invitations'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Lista registros do ciclo de vida do convite para o projeto atual, excluindo reinicializações de login. | InvitationList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar convites no projeto
Cria convites para membros ou compradores de anúncios. Entrega por e-mail nunca retorna uma credencial. Entrega por link é apenas para membros e retorna uma URL, inclusive em replays idempotentes exatos dentro de 24 horas. Convites por e-mail expiram após sete dias; links expiram após 24 horas. Convites por e-mail pendentes do mesmo tipo, endereço e projeto são reutilizados.
Um membro limitado a telas não convida pessoas (outside_screen_scope).
Um convite por e-mail project_member a uma pessoa que seria um convidado externo da organização do projeto (essa não é a organização principal dela) está sujeito à política de convidados dessa organização, e guest_not_allowed (403) responde quando a política (allow, domains ou none) não admite o endereço. Aceitar o convite verifica novamente.
A equipe e os próprios administradores da organização estão isentos. Um screen_scope no convite é o recurso de escopo de telas, que o plano Enterprise inclui; um projeto cujo plano não o inclui é recusado com feature_not_in_plan (402).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| kind (obrigatório, string) | Permitido: "project_member", "ad_buyer" |
| entrega (opcional, string) | Permitido: "email", "link" padrão: "email" |
| e-mails (opcional, array) | |
| advertising (opcional, InvitationAdvertising) | Escopo de propriedade do vendedor: pelo menos uma tela ou slot. Aceita apenas telas, apenas slots ou ambos. |
| upload_scope (opcional, UploadScope) | O que um uploader pode usar (docs/uploaders.md): as playlists cujas páginas ele altera e as pastas de mídia para as quais envia. As pastas são exatamente as listadas, nunca suas subpastas. Um id que, ao ser gravado, não nomeia nenhum objeto ativo do projeto é invalid_request em sua posição; uma exclusão posterior deixa um id morto, que não concede nada. O escopo é lido a cada requisição, então uma mudança vale para a próxima. |
| screen_scope (opcional, ScreenScope) | Sobre o que um membro ou agente com escopo pode agir (docs/screen-scope.md): as telas nas pastas de telas listadas e em todas as pastas dentro delas, e as telas listadas. Pelo menos um id no total. Um id que não nomeia nenhuma pasta ou tela existente do projeto quando gravado é invalid_request na sua posição; uma exclusão posterior deixa um id morto, que não concede nada. O escopo é lido a cada requisição, então uma alteração vale já na próxima. Tags nunca são escopo. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Cria convites para membros ou compradores de anúncios. | InvitationCreated (application/json); headers: RateLimit-Policy, RateLimit |
| 402 | feature_not_in_plan — um escopo de telas exige Enterprise, e um escopo de upload (um uploader) exige Plus; o problema nomeia o recurso, o plano em que a conta está e required_plan. Restringir um escopo de upload e remover qualquer um dos escopos são sempre permitidos. | Problema (application/problem+json) |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
Obter projeto no projeto
O projeto chamador. Não debita o medidor de API de 1 crédito, então um projeto com saldo zero ainda pode ler o restante e se recuperar. Após um principal de projeto bem-sucedido, respostas JSON autenticadas /api e de problema incluem ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset e ScreenRig-Credits-Included como créditos inteiros.
SSE, runtime, conteúdo e respostas não autenticadas os omitem.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Projeto | Projeto (application/json); cabeçalhos: ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset, ScreenRig-Credits-Included, ScreenRig-Credits-Low |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Atualizar projeto dentro do projeto
Renomeia o projeto atual. Os nomes contêm de 1 a 60 caracteres imprimíveis e nenhum texto com aparência de URL.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| project_id (opcional, string) | ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200 |
| nome (obrigatório, ProjectName) | Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Renomeia o projeto atual. | Projeto (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Excluir agente do projeto no projeto
Só o proprietário do projeto ou um administrador de sua organização pode excluí-lo; qualquer outro chamador é recusado com forbidden. Uma pessoa também deve ser membro do projeto.
Um agente precisa da capacidade de projeto de associação alvo e exclui para sua pessoa responsável, que deve ser o proprietário ou um administrador da organização; um agente sem pessoa responsável não pode excluir, exceto o agente que inscreveu o projeto enquanto nenhuma pessoa aceitou sua inscrição.
Também requer o nome e revisão atuais, zero telas não arquivadas, sem crédito, reservas ou dívida em sua própria carteira e sem publicidade ao vivo. Um saldo negativo acumulado sob termos gratuitos ou de lançamento não bloqueia; a exclusão o compensa com uma entrada de razão project_delete_writeoff. Enfileira avisos para membros e usa a lápide irreversível.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| project_id (opcional, string) | ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200 |
| empty_only (opcional, boolean) | Exigir um projeto Screens vazio na transação de exclusão, incluindo conteúdo, outros agentes ou membros, trabalho e correspondência. O CLI também exige sua proveniência de inscrição salva antes de usar esta proteção de limpeza. A omissão mantém a exclusão explícita de membros. |
| nome (obrigatório, ProjectName) | Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60 |
| revisão (obrigatório, inteiro) | mínimo: 1 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do ciclo de vida do projeto | ProjetoExcluído (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar aplicativos no projeto
Lista aplicativos do mais novo para o mais antigo, no máximo 500 por página. Nomes são rótulos e não precisam ser únicos; enderece um aplicativo pelo ID. next_cursor é a posição da última linha retornada enquanto houver mais linhas; passe-o de volta como after, com os mesmos filtros, para a próxima página. next_cursor é nulo na última página.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| depois | consulta | opcional | next_cursor da página anterior da mesma lista, com os mesmos filtros. Omitido começa na linha mais recente. Um valor que não seja esse cursor é invalid_request. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/applications'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Aplicativos | ApplicationList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Enviar aplicativo dentro do projeto
Transmite um tar.gz produzido por CLI diretamente para staging durável limitado. Metadados são carregados nos cabeçalhos para que o arquivo nunca seja codificado em base64 ou materializado como JSON pelo servidor.
O proxy na frente da API encerra uma solicitação que não respondeu em cerca de 100 s, portanto um arquivo grande em um uplink lento falha aqui; POST /api/applications/uploads envia o arquivo diretamente para o armazenamento de objetos.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | obrigatório | |
| ScreenRig-Archive-SHA256 | cabeçalho | obrigatório | |
| ScreenRig-Expanded-Bytes | cabeçalho | obrigatório | |
| ScreenRig-File-Count | cabeçalho | obrigatório | |
| ScreenRig-SDK-Version | cabeçalho | opcional | |
| ScreenRig-Application-Name | cabeçalho | opcional | Nome do aplicativo ASCII; mutuamente exclusivo com ScreenRig-Application-Name*. Espaços em branco no início e fim são removidos. Controles e valores duplicados no cabeçalho são rejeitados. O nome decodificado é limitado a 120 valores escalares Unicode. |
| ScreenRig-Application-Name* | cabeçalho | opcional | Nome de aplicativo Unicode codificado como RFC 8187 UTF-8'' seguido por bytes UTF-8 codificados em porcentagem (idioma vazio, charset UTF-8 exato). Mutuamente exclusivo com ScreenRig-Application-Name. Escapes inválidos, UTF-8 inválido, controles e valores duplicados no cabeçalho são rejeitados. Espaços em branco no início e no fim são removidos; o nome decodificado é limitado a 120 valores escalares Unicode. Nenhum cabeçalho de nome pode renomear uma atualização de lançamento. Isso evita Unicode bruto em valores de cabeçalho HTTP. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 202 | Upload aceito | OperationAccepted (application/json); cabeçalhos: RateLimit-Policy, RateLimit |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar upload de aplicativo no projeto
Declara um upload direto de um tar.gz produzido pela CLI que cria um novo aplicativo. A resposta é uma autorização assinada para exatamente um PUT de objeto do arquivo, portanto os bytes vão diretamente para o armazenamento de objetos e nunca pela API, cujo proxy encerra uma solicitação que não respondeu em cerca de 100 s.
Envie o arquivo com PUT para upload_url, depois confirme com POST /api/applications/uploads/{id}/commit e aguarde a operação. O aplicativo, sua versão e a operação receptora existem a partir desta resposta, como após POST /api/applications. Um upload não confirmado em 24 horas falha, e um aplicativo que nunca publicou uma versão é removido.
A mesma Idempotency-Key e o mesmo corpo retornam o mesmo upload com uma URL recém-assinada. GET /api/capabilities define features.application_direct_uploads onde essas rotas são servidas.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (opcional, string) | Nome de um novo aplicativo, cortado; no máximo 120 caracteres Unicode e nenhum controle. Omitido ou vazio seleciona um nome gerado. Uma declaração de versão (POST /api/applications/{id}/uploads) não deve carregar um. maxLength: 120 |
| sha256 (obrigatório, string) | SHA-256 dos bytes do arquivo. pattern: "^[0-9a-f]{64}$" |
| compressed_bytes (obrigatório, inteiro) | Tamanho do arquivo em bytes. mínimo: 1 máximo: 104857600 |
| expanded_bytes (obrigatório, inteiro) | mínimo: 1 máximo: 262144000 |
| file_count (obrigatório, inteiro) | mínimo: 1 máximo: 5000 |
| sdk_version (opcional, string) | maxLength: 64 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Autorização assinada para exatamente um PUT de objeto do arquivo. Envie o método retornado e cada cabeçalho retornado literalmente; o PUT deve começar antes de expires_at, duas horas após a declaração. | ApplicationUploadSession (application/json); cabeçalhos: Cache-Control, RateLimit-Policy, RateLimit |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar playlists V2 no projeto
Lista de playlists versionadas que pode expor páginas de adslot. A lista v1 recusa uma página que contém um documento com anúncios com version_required em vez de filtrá-la.
Páginas como listPlaylists, mais recentes primeiro, no máximo 200 por página e menos quando uma página contém 8 MiB de playlists armazenadas. next_cursor é a posição da última linha retornada enquanto houver mais linhas; passe-o como after, com os mesmos filtros, para a próxima página. next_cursor é nulo na última página. library=true lista, em vez disso, as playlists da Biblioteca da organização (somente leitura; programe-as ou crie a partir dos modelos delas).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| library | consulta | opcional | true lista o projeto Biblioteca da organização em vez deste projeto: os itens dele são somente leitura aqui e trazem library true. Uma organização sem Biblioteca, ou o próprio projeto Biblioteca, não lista nada com true. |
| depois | consulta | opcional | next_cursor da página anterior da mesma lista, com os mesmos filtros. Omitido começa na linha mais recente. Um valor que não seja esse cursor é invalid_request. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playlists'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Playlists com a união da página de adslot. | PlaylistV2List (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar playlist V2 no projeto
Entrada de criação para a união de páginas de adslot. No máximo 16 páginas de adslot, pelo menos uma página comum sem visibilidade, e o reuso de uma definição de slot em páginas diferentes permanecem verificações do servidor. Resolução de referência e DNS continuam verificações do servidor.
Uma gravação que contém uma página iframe que o Player web não consegue enquadrar é salva mesmo assim; a resposta traz avisos (PlaylistWarning) e o registro do projeto recebe um evento playlist.iframe_framing_refused por página.
Uma escrita cujo src de iframe, fallback_src ou params de aplicativo leem um token de tela ({screen.field.NAME} e os outros dos esquemas de primitiva) que uma tela que mostra a playlist não tem também responde com um aviso screen_fact_missing nomeando as primeiras 20 telas assim; os manifestos dessas telas deixam essa primitiva de fora.
Um src ou fallback_src de iframe que seja um link do Google Apresentações, Docs ou Planilhas (compartilhar, publicar na web ou incorporar) ou um link de incorporação do Microsoft 365 OneDrive ou SharePoint é armazenado reconstruído para a tela, onde as apresentações repetem e avançam com o delayms do link limitado à duração da página, e Docs, Planilhas, Word e Excel recarregam a cada 5 minutos.
Um código de incorporação <iframe> colado em src ou fallback_src é lido pelo seu src. Um arquivo que pede login aos espectadores é recusado com document_not_shared (400), cujo errors[0].field é esse src ou fallback_src e cujo detalhe nomeia a configuração de compartilhamento a mudar.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Screenrig-Review-Note | cabeçalho | opcional | Nota opcional do proponente em uma escrita de classe revisão, enviada como UTF-8 codificado em porcentagem (o que encodeURIComponent do JavaScript escreve). O servidor decodifica a porcentagem (uma escape inválida é 400 invalid_request); a nota decodificada é texto simples, no máximo 280 caracteres após o corte, sem caracteres de controle (caso contrário 400 invalid_request). Armazenado na revisão quando a gravação se torna uma; ignorado quando aplica ao vivo. |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 202 | A escrita virou uma revisão e aguarda a aprovação de uma pessoa (docs/reviews.md), sob acesso Propor, ou em qualquer nível de acesso quando alcança uma tela em uma pasta de telas protegida, em que um segundo aprovador a decide (docs/screen-scope.md). Uma pessoa aprova, rejeita ou pede alterações no dashboard em review.url. Uma repetição com Idempotency-Key responde com o mesmo corpo. | ReviewPending (application/json) |
| 201 | Playlist com suas páginas de adslot. | PlaylistV2 (application/json) |
| 402 | feature_not_in_plan — Declarar campos, bloquear uma primitiva ou alterar uma playlist que declara campos é o recurso de modelos de playlist, e o plano do projeto não o inclui; required_plan nomeia o plano que o inclui. Criar uma playlist a partir de um modelo é sempre permitido. Um formato de 2 ou mais displays (um video wall) faz parte do Plus; um formato de região e uma playlist sem formato estão em todos os planos. O problema nomeia o recurso, o plano do projeto e required_plan. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar telas no projeto
A lista padrão retorna telas pairing_pending e ativas. Passe state=archived para listar apenas telas arquivadas. Passe tag para listar apenas telas cujas tags contenham exatamente essa tag; telas sem tag são omitidas quando o filtro está presente.
Passe field, uma vez por campo, como NAME:VALUE para listar apenas as telas cujos campos têm todos os valores, e near como LAT,LON,KM para listar apenas as telas localizadas a até KM quilômetros do ponto; telas sem localização são omitidas, e todo filtro se combina com state e tag.
Passe folder como um ID de pasta de telas para listar apenas as telas diretamente dentro dela (não as de suas subpastas), ou root para as telas fora de qualquer pasta.
As telas vêm das mais novas para as mais antigas, no máximo 500 por página. next_cursor é a posição da última linha retornada enquanto restam mais linhas; passe-o de volta como after, com os mesmos filtros, para a página seguinte. next_cursor é null na última página. Um chamador limitado a telas (docs/screen-scope.md) lista apenas as telas do seu escopo.
Uma requisição que não nomeia um projeto deixa de fora cada projeto em que o chamador é limitado a telas; nomeie o projeto para listá-lo.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| estado | consulta | opcional | Omitir para pairing_pending e ativo. Passe archived para listar somente telas arquivadas. |
| tag | consulta | opcional | Tag exata da tela. Telas sem tag são omitidas quando este filtro está presente. |
| field | consulta | opcional | NAME:VALUE, separado no primeiro dois-pontos: apenas telas cujo campo NAME contém exatamente VALUE. Repita o parâmetro para vários campos; todos precisam corresponder, e cada nome pode ser informado uma única vez. Um valor malformado ou repetido retorna invalid_request citando field. |
| near | consulta | opcional | LAT,LON,KM em graus decimais e quilômetros, por exemplo 47.6062,-122.3321,25: apenas telas cuja localização fica a até KM quilômetros do ponto. A latitude vai de -90 a 90, a longitude de -180 a 180 e KM é maior que 0 e no máximo 20038. Telas sem localização são omitidas. Um valor malformado retorna invalid_request citando near. |
| pasta | consulta | opcional | Um ID de pasta de telas mantém apenas as telas diretamente dentro dessa pasta, não as de suas subpastas; root mantém apenas as telas fora de qualquer pasta. Omitir lista todas as telas. |
| depois | consulta | opcional | next_cursor da página anterior da mesma lista, com os mesmos filtros. Omitido começa na linha mais recente. Um valor que não seja esse cursor é invalid_request. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Telas | ScreenList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar pastas de telas no projeto
Lista todas as pastas de telas do projeto, no máximo 1000, ordenadas por nome.
Pastas organizam telas e as segmentam: uma folha de público-alvo de campanha {"folder": ID} corresponde às telas dessa pasta e de toda pasta dentro dela, um seletor de ação de frota by:folder atua sobre as mesmas telas, e o default_playlist_id de uma pasta é o que suas telas sem playlist própria exibem. parent_id é nulo na raiz do projeto; construa a árvore a partir de parent_id. screens conta as telas ativas diretamente dentro de cada pasta.
A pasta de uma tela é Screen.folder_id. Um chamador limitado a telas (docs/screen-scope.md) lista as pastas dentro do seu escopo e as pastas acima delas, que são somente leitura para que a sua árvore tenha uma raiz; as pastas acima não trazem contagem de telas e as pastas irmãs ficam ocultas. Uma requisição que não nomeia um projeto deixa de fora cada projeto em que o chamador é limitado a telas.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screen-folders'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Pastas de telas | ScreenFolderList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar pasta de telas no projeto
Cria uma pasta de telas na raiz do projeto (parent_id nulo ou ausente) ou dentro de parent_id. Nomes são aparados, têm de 1 a 100 caracteres Unicode sem controles, não são "." nem "..", e são únicos entre seus irmãos (resource_conflict).
Uma organização tem no máximo 1000 pastas em todos os seus projetos (quota_exceeded) aninhadas no máximo 10 níveis (invalid_request). default_playlist_id, quando definido, deve nomear uma playlist aprovada (playlist_not_approved). Emite screen.folder_created.
Um chamador limitado a telas (docs/screen-scope.md) só cria uma pasta dentro de uma pasta do seu escopo; a raiz do projeto ou qualquer outro pai é outside_screen_scope. Criar uma pasta dentro de uma pasta protegida é uma revisão protected_change (202 pending_review) decidida por um segundo aprovador.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (obrigatório, string) | Aparado; 1 a 100 caracteres Unicode, sem controles, não . nem .., único entre seus irmãos. minLength: 1 maxLength: 100 |
| parent_id (opcional, embutido) | A pasta para criá-la; null ou ausente para a raiz do projeto. |
| default_playlist_id (opcional, string) | Uma playlist aprovada para as telas da pasta que não têm uma própria. minLength: 1 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Pasta criada. | ScreenFolder (application/json); cabeçalhos: ETag |
| 202 | A escrita virou uma revisão e aguarda a aprovação de uma pessoa (docs/reviews.md), sob acesso Propor, ou em qualquer nível de acesso quando alcança uma tela em uma pasta de telas protegida, em que um segundo aprovador a decide (docs/screen-scope.md). Uma pessoa aprova, rejeita ou pede alterações no dashboard em review.url. Uma repetição com Idempotency-Key responde com o mesmo corpo. | ReviewPending (application/json) |
| 403 | outside_screen_scope como em OutsideScreenScope, ou approver_required - um membro limitado a telas que não pode aprovar revisões não altera o que uma tela reproduz nem quando (docs/screen-scope.md). | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Mover telas no projeto
Move telas (screen_ids) e pastas (folder_ids) para uma pasta (folder_id), ou para a raiz do projeto quando folder_id é null, em uma única solicitação tudo ou nada de no máximo 1000 ids. Todo id deve existir (not_found). Uma pasta não pode se mover para dentro de si mesma ou de uma pasta dentro dela, e a movimentação deve manter todas as pastas dentro de 10 níveis (invalid_request).
Itens já no destino permanecem como estão; cada tela e cada pasta movida avança sua revisão. As telas movidas resolvem novamente a playlist em cerca de 15 segundos: levels nomeia as campanhas cujo público-alvo de pasta elas entram ou deixam e as playlists padrão de pasta que ganham ou perdem. Emite screen.moved.
Um chamador limitado a telas (docs/screen-scope.md) move telas e pastas dentro do seu escopo para uma pasta do seu escopo; qualquer id ou destino fora dele, e a raiz do projeto, recusam a movimentação inteira (outside_screen_scope), inclusive quando uma tela sai do escopo entre a verificação e a gravação.
Mover para dentro ou para fora de uma pasta protegida é uma revisão protected_change (202 pending_review) decidida por um segundo aprovador.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| folder_id (obrigatório, inline) | Pasta de destino; nulo para a raiz do projeto. |
| screen_ids (opcional, array) | |
| folder_ids (opcional, array) |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Quantas telas e pastas foram movidas, e os levels que as telas movidas ganham ou perdem. | ScreenMoveResult (application/json) |
| 202 | A escrita virou uma revisão e aguarda a aprovação de uma pessoa (docs/reviews.md), sob acesso Propor, ou em qualquer nível de acesso quando alcança uma tela em uma pasta de telas protegida, em que um segundo aprovador a decide (docs/screen-scope.md). Uma pessoa aprova, rejeita ou pede alterações no dashboard em review.url. Uma repetição com Idempotency-Key responde com o mesmo corpo. | ReviewPending (application/json) |
| 403 | outside_screen_scope como em OutsideScreenScope, ou approver_required - um membro limitado a telas que não pode aprovar revisões não altera o que uma tela reproduz nem quando (docs/screen-scope.md). | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter calendário de programação no projeto
Responde o que as telas de um assunto reproduzem em [from, to) e por quê, para o calendário de programação do painel: exatamente um entre screen_id, folder_id (as telas da pasta e de todas as pastas dentro dela), tag ou campaign_id (as telas do seu público-alvo).
Telas cujas pilhas têm entradas idênticas (os mesmos níveis, playlist padrão, fuso horário e número de displays) compartilham um grupo com uma linha do tempo, então um assunto grande custa dezenas de linhas do tempo; um grupo lista até 500 de suas telas e uma resposta no máximo 200 grupos (truncated).
Cada grupo traz sua pilha, da mais alta para a mais baixa (takeover, campanhas que alcançam as telas, suas próprias entradas de programação, depois a playlist padrão ou a da pasta mais próxima), os spans de cada nível (plays em todo display que ele alcança, partial com os displays em que é reproduzido, outranked, ou conditional enquanto aguarda interação ou uma condição de dados que só um Player observa), o que cada display mostra (on_screen; a região main de uma página inteira) e conflicts (duas campanhas de mesma prioridade vigorando ao mesmo tempo; um nível que vigora mas nunca é reproduzido). from e to são instantes RFC 3339, com to depois de from, no máximo 93 dias de distância; são truncados ao minuto.
As regras são lidas no fuso horário de cada grupo, como a varredura e todo Player as leem; todo nível é considerado reproduzível. Um chamador limitado a telas (docs/screen-scope.md) deve enviar um screen_id ou um folder_id dentro do seu escopo; uma tag, um campaign_id ou nenhum alvo é outside_screen_scope.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| de | consulta | obrigatório | |
| até | consulta | obrigatório | |
| screen_id | consulta | opcional | |
| folder_id | consulta | opcional | |
| tag | consulta | opcional | |
| campaign_id | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/calendar?from=FROM&to=TO'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | O calendário do assunto. | ScheduleCalendar (application/json) |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter modelo de importação de programação no projeto
Responde com uma planilha com as colunas que uma importação de programação lê e três linhas de exemplo (um código de tela, uma pasta de telas e uma tag), em CSV ou, com format=xlsx, em uma pasta de trabalho XLSX.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| formato | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/imports/template'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | A planilha de modelo. | string (text/csv), string (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Pré-visualizar importação de programação no projeto
Lê uma planilha de linhas de programação contra o projeto e responde o que o commit faria, sem gravar nada.
Cada linha indica um alvo (uma tela por id, pelo valor de um campo da tela como um código de sala, ou por nome; folder:NAME; tag:NAME; vários separados por ; ou |), o conteúdo (um nome de arquivo de mídia, ou playlist:NAME ou o id de uma playlist), um início e um fim (uma data sozinha como fim encerra esse dia) e, opcionalmente, timezone, days (Mon-Fri), uma janela diária (daily_start, daily_end), priority de 0 a 100, um nome e números de display.
Os horários são lidos no relógio próprio de cada tela; uma coluna timezone os converte de outro fuso.
Cada linha é verificada e informa seus erros por coluna: tela, pasta ou tag desconhecida ou ambígua, arquivo ausente ou ambíguo, arquivo que não consegue preencher uma tela, horários inválidos ou invertidos, um fim no passado, nenhuma informação de horário, uma tela sem fuso horário ou sem playlist padrão, duas linhas vigentes ao mesmo tempo em uma tela com a mesma prioridade, e mais níveis do que uma tela comporta (32), ou mais campanhas do que sua organização comporta em todos os seus projetos (100; cada nível compartilhado é uma delas).
Linhas que coincidem em conteúdo, horários, prioridade e nome viram um nível: uma tela é uma entrada da programação própria dessa tela; várias telas, uma pasta ou uma tag são um nível compartilhado (uma campanha), que prevalece sobre os níveis próprios de uma tela.
A resposta lista os níveis com o que um commit faz em cada um (create, update, unchanged), os níveis que uma execução anterior da mesma importação criou e que a planilha não tem mais (removals), as pilhas das telas como ficariam (calendar) e uma fingerprint para enviar ao commit. A planilha é composta por linhas JSON, CSV ou XLSX, com no máximo 5.000 linhas.
Não disponível para um chamador limitado a telas (outside_screen_scope). A importação de programação faz parte do plano Enterprise; um projeto cujo plano não o inclui é recusado com feature_not_in_plan (402). O modelo está disponível em todos os planos.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| name | consulta | opcional | O nome da importação; importar de novo com o mesmo nome atualiza os níveis que ela criou (default import). Enviado com um corpo de arquivo. |
| fuso horário | consulta | opcional | O fuso IANA em que os horários são escritos quando uma linha não tem timezone. Sem um fuso, os horários são lidos no relógio próprio de cada tela. |
| origem | consulta | opcional | O nome do arquivo, registrado com a importação. |
| code_field | consulta | opcional | Ler um código de tela somente deste campo da tela (por exemplo code ou room_id); caso contrário, um código corresponde a qualquer campo. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (opcional, string) | Identifica a importação; o mesmo nome atualiza os níveis que ela criou (default import). minLength: 1 maxLength: 80 |
| source (opcional, string) | O arquivo de onde vieram as linhas. maxLength: 200 |
| fuso horário (opcional, string) | O fuso IANA em que os horários são escritos quando uma linha não tem timezone. |
| code_field (opcional, string) | Ler um código de tela somente deste campo da tela. |
| fingerprint (opcional, string) | A fingerprint da prévia; exigida pelo commit. |
| rows (obrigatório, array) |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | A prévia. valid é false enquanto qualquer linha tiver um erro. | ScheduleImportPreview (application/json) |
| 402 | feature_not_in_plan — A importação de programação faz parte do plano Enterprise; o problema nomeia o recurso, o plano em que a conta está e required_plan. | Problema (application/problem+json) |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Confirmar importação de programação no projeto
Confirma uma importação já pré-visualizada: a mesma planilha e a fingerprint que a prévia respondeu. Cada nível é criado, atualizado ou removido, as programações das telas e os níveis compartilhados são gravados em uma única transação e o evento de importação schedule.imported é registrado: todas as linhas são aplicadas ou nenhuma é.
As playlists de um arquivo de que os arquivos da planilha precisam são criadas primeiro (elas não alteram nada em nenhuma tela). Uma planilha cujas linhas têm erros é recusada (schedule_import_invalid); um projeto que mudou desde a prévia, ou linhas que são lidas de outra forma, é recusado (schedule_import_stale), e o cliente pré-visualiza de novo.
Importar a mesma planilha de novo com o mesmo nome não altera nada; uma linha alterada atualiza seu nível e uma linha removida remove seu nível. Exige uma pessoa que possa aprovar no dashboard e, para um agente, uma credencial com acesso de escrita.
Um commit que atualizaria ou excluiria uma campanha reservada responde reserved_item (403) e não grava nada, a menos que seja feito por uma pessoa que pode aprovar.
Um commit que alcança uma tela protegida é recusado por inteiro com protected_target, inclusive quando a importação não tem níveis, mas remove entradas de importação de uma tela protegida ou exclui uma campanha de importação cujo público alcança uma.
Em um projeto com pastas de telas protegidas, um commit cuja prévia falha em um serviço, e não na planilha, responde dependency_unavailable e não grava nada: envie a mesma requisição de novo após uma breve espera. Um erro de validação de planilha, campanha ou tela responde como o commit responderia (invalid_request e os outros problemas acima).
Não disponível para um chamador limitado a telas. A importação de programação faz parte do plano Enterprise; um projeto cujo plano não o inclui é recusado com feature_not_in_plan (402). O modelo está disponível em todos os planos.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
| fingerprint | consulta | opcional | A fingerprint da prévia, para um corpo CSV ou XLSX; um corpo JSON a traz como membro. |
| name | consulta | opcional | O nome da importação; importar de novo com o mesmo nome atualiza os níveis que ela criou (default import). Enviado com um corpo de arquivo. |
| fuso horário | consulta | opcional | O fuso IANA em que os horários são escritos quando uma linha não tem timezone. Sem um fuso, os horários são lidos no relógio próprio de cada tela. |
| origem | consulta | opcional | O nome do arquivo, registrado com a importação. |
| code_field | consulta | opcional | Ler um código de tela somente deste campo da tela (por exemplo code ou room_id); caso contrário, um código corresponde a qualquer campo. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (opcional, string) | Identifica a importação; o mesmo nome atualiza os níveis que ela criou (default import). minLength: 1 maxLength: 80 |
| source (opcional, string) | O arquivo de onde vieram as linhas. maxLength: 200 |
| fuso horário (opcional, string) | O fuso IANA em que os horários são escritos quando uma linha não tem timezone. |
| code_field (opcional, string) | Ler um código de tela somente deste campo da tela. |
| fingerprint (opcional, string) | A fingerprint da prévia; exigida pelo commit. |
| rows (obrigatório, array) |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | O que o commit aplicou. | ScheduleImportCommitted (application/json) |
| 402 | feature_not_in_plan — A importação de programação faz parte do plano Enterprise; o problema nomeia o recurso, o plano em que a conta está e required_plan. | Problema (application/problem+json) |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| 409 | protected_target - a alteração alcança uma tela em uma pasta de telas protegida e não tem forma de revisão (docs/screen-scope.md). Remova a proteção da pasta por meio de uma revisão, faça a alteração e proteja a pasta de novo. | Problema (application/problem+json) |
| 500 | dependency_unavailable - a verificação de pastas de telas protegidas não pôde ser executada; envie a mesma requisição de novo após uma breve espera. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Reivindicar link do navegador no projeto
Reivindica um código de link do navegador para o projeto autenticado e cria atomicamente exatamente uma tela pairing_pending inicial mais sua concessão de provisionamento de navegador existente. A inscrição permanece apenas para o projeto. A resposta é apenas metadados seguros e nunca contém token de provisionamento, URL fragmentado, cookie ou prova.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| código (obrigatório, string) | padrão: "^[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{3}-?[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{3}$" |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Reivindicação exata de link de navegador sem fragmento segura para reprodução. | BrowserLinkClaim (application/json); cabeçalhos: Cache-Control, RateLimit-Policy, RateLimit |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 403 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 409 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 410 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| 500 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Parear tela no projeto
Reivindica uma sessão de pareamento Player global de frota com seis caracteres. Retentativas com a mesma Idempotency-Key retornam o resultado original durável sem consumir cota novamente.
A sessão de dashboard resgata o código no seu projeto atual com o mesmo corpo, Idempotency-Key, orçamentos e problemas, exceto que o seu not_found para um código desconhecido ou já resgatado não nomeia nenhum comando do CLI; é uma mudança de estado, então segue as regras de mutação do dashboard, uma sessão shadow sem modo de escrita de staff é recusada, e os eventos que o resgate acrescenta nomeiam o usuário do dashboard. folder_id nomeia a pasta em que a tela entra.
Um chamador limitado a telas (docs/screen-scope.md) deve enviar uma pasta dentro do seu escopo e emparelha somente como uma pessoa que pode aprovar (outside_screen_scope, approver_required).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| código (obrigatório, string) | padrão: "^[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{6}$" |
| label (opcional, string) | minLength: 1 maxLength: 120 |
| folder_id (opcional, string) | A pasta de telas em que a tela entra; se omitida, a tela entra na raiz do projeto. Um chamador limitado a telas deve enviar uma pasta dentro do seu escopo (caso contrário, outside_screen_scope). Uma pasta que o projeto não tem é invalid_request para um chamador do projeto inteiro. Parte da requisição idempotente: outro folder_id sob a mesma Idempotency-Key é idempotency_mismatch. minLength: 1 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Reivindicação durável de tela pairing_pending. | PairingClaim (application/json); cabeçalhos: Cache-Control, RateLimit-Policy, RateLimit |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 401 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 409 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 413 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| 500 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope como em OutsideScreenScope, ou approver_required - um membro limitado a telas que não pode aprovar revisões não altera o que uma tela reproduz nem quando (docs/screen-scope.md). | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Provisionar tela no projeto
Provisionamento opcional de nova tela, somente pelo navegador. Sempre cria uma nova tela em pairing_pending; no máximo cinco aguardam pareamento ao mesmo tempo (quota_exceeded). Novas tentativas exatas reenviam o mesmo token de fragmento por dez minutos. O emparelhamento de seis caracteres continua sendo o padrão e o único fluxo de recuperação. folder_id nomeia a pasta em que a tela entra.
Um chamador limitado a telas (docs/screen-scope.md) deve enviar uma pasta dentro do seu escopo (caso contrário, outside_screen_scope).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| label (opcional, string) | minLength: 1 maxLength: 120 |
| folder_id (opcional, string) | A pasta de telas em que a tela entra, como em PairScreen. minLength: 1 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Novo link de provisionamento para navegador. | ScreenProvisioning (application/json); cabeçalhos: Cache-Control, RateLimit-Policy, RateLimit |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 401 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 409 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 410 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 413 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| 500 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope como em OutsideScreenScope, ou approver_required - um membro limitado a telas que não pode aprovar revisões não altera o que uma tela reproduz nem quando (docs/screen-scope.md). | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Aplicar ações na tela no projeto
Aplica uma ação a uma frota selecionada sem limite de contagem de telas. Selecione screen_ids únicos ou uma tag que corresponda a telas ativas na ordem de criação. A seleção resolvida é fixada antes de qualquer mutação, armazenada em blocos limitados e mantida por vinte e quatro horas sob Idempotency-Key.
Cada etapa usa seu caminho de mutação de tela única, preservando revisões, eventos, sinais de tempo de execução e limites por tela. Uma resposta contém uma página limitada de resultados; correspondidos, bem-sucedidos e falhos descrevem essa página. HTTP 202 inclui total, offset e next_cursor. Continue com o mesmo seletor, ação e Idempotency-Key, passando next_cursor como after.
Respeite Retry-After quando presente, incluindo uma página com zero resultados. A resposta ecoa Idempotency-Key, incluindo uma chave gerada quando o chamador a omitiu; mantenha essa chave para continuações. HTTP 200 finaliza a seleção. Páginas respondidas reproduzem exatamente, incluindo falhas por tela; etapas interrompidas reproduzem sem repetir seus efeitos.
Grandes ações são controladas contra os orçamentos existentes de 600 por minuto da organização para recarregar, toast, takeover, programações de playlist, reinicialização, tela e programações de tela; exaustão do orçamento da organização pausa a ação em vez de recusar a frota. Exaustão por tela falha apenas naquela tela.
Uma atribuição, takeover ou etapa set_playlist_schedule que vincula uma playlist com um formato a uma tela cuja parede tem outra forma falha somente para essa tela com 409 playlist_format_mismatch. Mudanças de atribuição e de tag não têm orçamento de mensagens.
Uma atribuição cuja playlist tem um src de iframe ou params de aplicativo que leem um token de tela que alguma tela da página não tem adiciona um aviso screen_fact_missing a essa página (warnings, PlaylistWarning). Falha parcial é um resultado normal. Todas as páginas e novas tentativas sob uma chave são uma única ação medida.
As requisições usam uma carga de bytes limitada; use uma tag para uma seleção maior que a carga do transporte. Um seletor ou uma ação malformada é recusada antes que qualquer tela seja tocada. selector ou action é recusado antes que qualquer tela seja tocada.
Um chamador limitado a telas (docs/screen-scope.md) seleciona por screen_ids ou por pasta, todas as telas dentro do seu escopo; um seletor de tag, uma tela fora do escopo ou uma desconhecida recusa a ação inteira (outside_screen_scope) antes que qualquer coisa seja fixada ou proposta.
Assign, takeover, takeover_clear, set_playlist_schedule e clear_playlist_schedule que alcançam uma tela protegida viram uma revisão decidida por um segundo aprovador (202 pending_review) em todo nível de acesso; set_tags, add_tags e remove_tags em uma tela protegida são protected_target (409).
Uma ação set_playlist_schedule com uma entrada em pausa (um rascunho) é o recurso de controle de alterações da programação, que o plano Enterprise inclui; um projeto cujo plano não o inclui é recusado com feature_not_in_plan (402).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Screenrig-Review-Note | cabeçalho | opcional | Nota opcional do proponente em uma escrita de classe revisão, enviada como UTF-8 codificado em porcentagem (o que encodeURIComponent do JavaScript escreve). O servidor decodifica a porcentagem (uma escape inválida é 400 invalid_request); a nota decodificada é texto simples, no máximo 280 caracteres após o corte, sem caracteres de controle (caso contrário 400 invalid_request). Armazenado na revisão quando a gravação se torna uma; ignorado quando aplica ao vivo. |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
| depois | consulta | opcional | next_cursor da página de resultado anterior. Reutilize o Idempotency-Key original e o corpo da requisição. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| selector (obrigatório, ScreenActionSelector) | |
| ação (obrigatório, ScreenAction) | Uma ação de frota, discriminada por tipo. Cada membro carrega apenas seus próprios parâmetros; um membro de outro tipo é um campo desconhecido e invalid_request. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultados por tela. Sucesso parcial é uma resposta normal. | ScreenActionResult (application/json); cabeçalhos: Idempotency-Key, Cache-Control, RateLimit-Policy, RateLimit |
| 202 | Restam mais telas (continue com next_cursor e a mesma Idempotency-Key e o mesmo corpo, respeitando Retry-After), ou, com status pending_review, a ação virou uma revisão sob acesso Propor (docs/reviews.md), ou em qualquer nível de acesso porque alcança uma tela em uma pasta de telas protegida (docs/screen-scope.md). Só assign, takeover, takeover_clear, set_playlist_schedule e clear_playlist_schedule viram revisões; toda outra ação é insufficient_access para Propose. | inline (application/json); cabeçalhos: Idempotency-Key, Retry-After, Cache-Control, RateLimit-Policy, RateLimit |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 401 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — set_reboot_schedule com enabled true (reinícios programados) e set_playlist_schedule com um bloqueio de displays (video walls) fazem parte do Plus; as ações de limpeza e os comandos avulsos estão disponíveis. payment_required — o projeto não tem crédito restante. O problema nomeia o recurso, o plano do projeto e required_plan. | Problema (application/problem+json) |
| 403 | insufficient_access, outside_screen_scope quando um chamador limitado a telas seleciona fora do seu escopo, ou approver_required para um membro limitado a telas que não pode aprovar. | Problema (application/problem+json) |
| 409 | playlist_format_mismatch e os outros conflitos da ação, ou protected_target quando set_tags, add_tags, remove_tags, toast, display, display_clear, set_display_schedule ou clear_display_schedule alcança uma tela em uma pasta de telas protegida. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Iniciar compartilhamento de abas no projeto
Exibe abas do navegador em telas do projeto indicado; solicitação, resposta, acesso e limites são os de POST /api/tab-shares.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| screen_ids (opcional, array) | Telas por id. Duplicatas são unificadas. |
| folder_ids (opcional, array) | Pastas de telas; cada uma inclui todas as subpastas. |
| tags (opcional, array) | Uma tela com qualquer uma das tags. |
| tabs (obrigatório, array) | |
| cookies (opcional, array) | Cookies do remetente para as páginas, no máximo 64 KiB codificados. Secretos; veja POST /api/tab-shares. |
| reload_s (opcional, integer) | 0 (nunca, o padrão) ou de 60 a 86400: frequência de recarga do iframe de cada página. |
| until (opcional, string) | Estritamente no futuro e no máximo 24 horas à frente; 24 horas a partir de agora quando omitido. Término do controle em cada destino e expiração da playlist temporária. format: "date-time" |
| qr (opcional, boolean) | Quando true, cada página exibe um código QR do seu endereço no canto inferior direito. Padrão false. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | O compartilhamento. Pelo menos uma tela foi assumida. | TabShare (application/json); cabeçalhos: RateLimit-Policy, RateLimit |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 401 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 409 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| 403 | outside_screen_scope como em OutsideScreenScope, ou approver_required - um membro limitado a telas que não pode aprovar revisões não altera o que uma tela reproduz nem quando (docs/screen-scope.md). | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar campanhas no projeto
Lista as campanhas do projeto em ordem de precedência (no máximo 100), a ordem em que a resolução as lê. reserved está presente em toda campanha.
Um chamador limitado a telas (docs/screen-scope.md) vê todas as campanhas, com editable true somente quando todo o público está dentro do seu escopo (uma folha de tag e a regra de todas as telas na raiz nunca estão; uma regra all precisa de um filho contido, uma regra any de todos os filhos) e o chamador pode alterar o que é reproduzido.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/campaigns'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | As campanhas do projeto. | CampaignList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar campanha no projeto
createCampaign para o projeto nomeado no caminho. reserved true reserva a campanha, e somente uma pessoa que pode aprovar o define (reserved_item para um agente, um cliente de serviço ou qualquer outro), acrescentando campaign.reserved_changed.
Um chamador limitado a telas (docs/screen-scope.md) só cria uma campanha para um público dentro do seu escopo (folhas folder e screen_id; nenhuma tag, nem todas as telas), caso contrário outside_screen_scope, e somente como uma pessoa que pode aprovar (approver_required).
Uma campanha cujo público alcança uma tela protegida é uma revisão protected_change decidida por um segundo aprovador (202 pending_review) em todo nível de acesso. reserved true é o recurso de pastas protegidas e paused true em uma nova campanha (um rascunho) é o recurso de controle de alterações da programação, e ambos fazem parte do plano Enterprise; um projeto cujo plano não o inclui é recusado com feature_not_in_plan (402).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (obrigatório, string) | minLength: 1 maxLength: 120 |
| playlist_id (obrigatório, string) | minLength: 1 |
| audience (obrigatório, CampaignAudience) | Quais telas uma campanha segmenta: exatamente um entre all (toda regra corresponde), any (ao menos uma corresponde), tag (a tela tem a tag), screen_id (essa tela) ou folder (as telas dessa pasta de telas e de toda pasta dentro dela, GET /api/screen-folders; a pasta deve existir). As regras se aninham em no máximo 3 níveis e um público-alvo tem no máximo 500 regras. {"all": []} é toda tela do projeto; nos demais casos, all e any listam ao menos uma regra. |
| from (opcional, string) | padrão: "^[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. padrão: "^[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, array) | |
| dates (opcional, array) | |
| except (opcional, array) | Datas civis, armazenadas em ordem crescente e uma vez cada. Uma exceção remove todas as ocorrências que sua data inicia, inclusive as caudas noturnas; ela fica entre from e until. |
| data (opcional, PageDataCondition) | Um predicado card-data, avaliado antes do tempo civil. Dados faltantes ou expirados nunca correspondem. A página também respeita seus limites de tempo ordinários. Requer capacidade host page.conditions; hosts mais antigos recebem a página desativada. |
| interaction (opcional, LevelInteraction) | O nível vigora enquanto alguém usa a tela: de um toque, clique ou tecla até passarem idle_s segundos sem entrada. Uso típico: uma página interativa acima de um loop de atração. idle_s é armazenado e retornado (60 quando omitido). |
| covers (opcional, string) | Onde o nível é reproduzido: a página inteira (default, armazenado ausente) ou main, a própria página, para uma playlist comum; header, footer ou side, uma faixa desenhada sobre a página, apenas para uma playlist de região dessa região (PlaylistRegionFormat). Uma playlist de região é recusada com full ou main, e uma faixa exige uma playlist de região organizada em um display de destino. Permitidos: "full", "main", "header", "footer", "side" |
| displays (opcional, array) | As saídas de um video wall em que ele é reproduzido; ausente reproduz em todas as saídas. |
| start (opcional, string) | on_time troca na borda, interrompendo o item atual; next_item (padrão, armazenado ausente) espera o fim dele. Permitidos: "next_item", "on_time" |
| priority (opcional, integer) | padrão: 0 mínimo: 0 máximo: 100 |
| paused (opcional, boolean) | padrão: false |
| reserved (opcional, boolean) | Somente uma pessoa que pode aprovar reserva uma campanha (caso contrário, reserved_item). default: false |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criada. | Campaign (application/json); cabeçalhos: ETag |
| 202 | A escrita virou uma revisão e aguarda a aprovação de uma pessoa (docs/reviews.md), sob acesso Propor, ou em qualquer nível de acesso quando alcança uma tela em uma pasta de telas protegida, em que um segundo aprovador a decide (docs/screen-scope.md). Uma pessoa aprova, rejeita ou pede alterações no dashboard em review.url. Uma repetição com Idempotency-Key responde com o mesmo corpo. | ReviewPending (application/json) |
| 402 | feature_not_in_plan — As pastas protegidas e o controle de alterações da programação fazem parte do plano Enterprise; o problema nomeia o recurso, o plano em que a conta está e required_plan. Uma campanha que bloqueia uma playlist no display 2 ou além de um video wall (displays) faz parte do Plus. O problema nomeia o recurso, o plano do projeto e required_plan. | Problema (application/problem+json) |
| 403 | outside_screen_scope ou approver_required como em ScreenScopePlays, ou reserved_item - uma campanha reservada só é alterada, pausada, excluída ou deixa de ser reservada por uma pessoa que pode aprovar revisões, nunca por um agente ou cliente de serviço (docs/screen-scope.md). | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar conexões de um projeto
Lista as conexões do projeto, as mais recentes primeiro, no máximo 200 por página; devolva next_cursor como after para a próxima. Um segredo, uma chave ou um token de atualização nunca é devolvido: secret mostra se há um guardado e uma dica que não é secreta. Uma leitura nunca traz um link de consentimento.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| depois | consulta | opcional | next_cursor da página anterior da mesma lista, com os mesmos filtros. Omitido começa na linha mais recente. Um valor que não seja esse cursor é invalid_request. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/connections'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uma página de conexões. | ConnectionList (application/json); cabeçalhos: Cache-Control |
| 400 | invalid_request, inclusive um cursor malformado. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar uma conexão em um projeto
Cria neste projeto uma conexão com a Microsoft ou o Google: modo own_app com as credenciais próprias do cliente, ou modo screenrig_app, que responde consent_url, um link de uso único para a pessoa que o conclui (veja createConnection). Adiciona connection.created. Uma nova tentativa exata com a mesma Idempotency-Key devolve a mesma conexão.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| provider (obrigatório, string) | Permitido: "microsoft", "google" |
| mode (obrigatório, string) | Permitido: "own_app", "screenrig_app" |
| nome (obrigatório, string) | minLength: 1 maxLength: 80 |
| config (opcional, ConnectionConfigWrite) | Microsoft, modo own_app: os dois membros. Não aceito para uma conexão do Google nem para o modo screenrig_app. |
| secret (opcional, string) | Modo own_app. Microsoft: o valor de um dos segredos de cliente do aplicativo (não o ID; no máximo 1024 caracteres), com config.tenant_id e config.client_id. Google: o arquivo de chave JSON da conta de serviço, inteiro (no máximo 16384 bytes). Selado na chegada e nunca devolvido; a CLI o lê de um arquivo ou da entrada padrão, nunca de um argumento. Não aceito no modo screenrig_app. minLength: 1 maxLength: 16384 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criada. Uma conexão no modo screenrig_app traz consent_url e consent_expires_at. | ConnectionConsent (application/json); cabeçalhos: ETag, Location, Cache-Control |
| 400 | invalid_request, nomeando o campo que não é válido. | Problema (application/problem+json) |
| 409 | connection_app_not_configured, connection_limit_reached ou idempotency_mismatch. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar conexões BI no projeto
Lista as conexões de BI do projeto, da mais antiga para a mais recente, 200 por página; passe next_cursor de volta como cursor para a próxima. Um segredo nunca é retornado: secret mostra se está definido e seus últimos 4 caracteres.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| cursor | consulta | opcional | next_cursor da página anterior. |
| limite | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-connections'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uma página de conexões. | BIConnectionList (application/json); cabeçalhos: Cache-Control |
| 400 | invalid_request, inclusive um cursor malformado. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar conexão BI no projeto
Adiciona uma conexão a um sistema de BI que o projeto possui. Para o Grafana: o endereço dele (http ou https em um host público, com prefixo de caminho opcional) e um token de conta de serviço com a função Viewer. O token é selado e nunca é retornado.
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.
Um administrador do Power BI deve ativar as configurações de desenvolvedor Embed content in apps e Service principals can call Fabric public APIs para o app (portal de administração, configurações do locatário), o app deve ser Membro ou Administrador de cada workspace que exibe, e os relatórios precisam de uma capacidade Embedded, Fabric ou Premium em produção.
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.
Adicione embed_origin da resposta à lista de domínios permitidos do aplicativo conectado e ative o segredo. Quem tem um ticket de tela pode incorporar qualquer visualização que esse usuário possa ver, então use um usuário que veja apenas os dashboards das telas. Tableau Cloud, ou Tableau Server 2023.3 ou posterior.
Para uma página web com login (kind web): a conta de serviço de um site que mostra o dashboard atrás de um login. config.login_mode é auto (config.login_url, config.username e a senha como secret: o renderizador abre a página de login e preenche o formulário), steps (config.login_url e config.steps, um script de passos goto, fill, click, press, wait_for e wait_ms cujos valores podem conter {{username}}, {{password}} e {{otp}}) ou none (sem login: a conexão mostra páginas com os cookies que você dá a ela). totp_secret é a chave base32, ou o endereço otpauth://, do aplicativo autenticador da conta: o servidor calcula o código de uso único (RFC 6238) e envia ao renderizador apenas o código. cookies é um conjunto de cookies exportado de um navegador logado, para um site cujo login não pode ser automatizado (login único aprovado no celular, uma verificação de dispositivo); o servidor guarda o conjunto e o renova com os cookies que cada captura devolve, então um login é raro.
A senha, a semente e os cookies são selados e nunca devolvidos. Use uma conta de serviço somente leitura. A senha é digitada apenas em config.login_url e nos passos goto, então movê-los para outra origem exige secret de novo. Depois de cinco logins recusados seguidos, a conexão para de fazer login até que suas credenciais mudem.
Um servidor sem renderizador de páginas responde bi_web_unavailable. Adiciona bi_connection.created. Uma nova tentativa exata com a mesma Idempotency-Key devolve esta mesma resposta.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (obrigatório, string) | minLength: 1 maxLength: 80 |
| kind (obrigatório, string) | Permitido: "grafana", "powerbi", "tableau", "web" |
| config (obrigatório, BIConnectionConfig) | |
| secret (opcional, string) | Obrigatório exceto para web, e para uma conexão do Power BI que nomeia connection_id. O token da conta de serviço (Grafana), o valor do segredo de cliente do aplicativo (Power BI), o valor do segredo do aplicativo conectado (Tableau) ou a senha da conta de serviço (web: exigida por login_mode auto, não usada por none). Selado na chegada; a CLI o lê de um arquivo ou da entrada padrão, nunca de um argumento. minLength: 1 maxLength: 4096 |
| totp_secret (opcional, string) | Web: a chave base32 do aplicativo autenticador da conta (de 16 a 128 caracteres, espaços permitidos), ou o endereço otpauth://totp dela, que pode definir o algoritmo (SHA1, SHA256, SHA512), os dígitos (6 a 8) e o período. Selado; apenas o código calculado sai do servidor. maxLength: 1024 |
| cookies (opcional, array) | Web: um conjunto de cookies exportado de um navegador logado. Selado; renovado a cada captura. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criada. | BIConnection (application/json); cabeçalhos: ETag, Cache-Control |
| 400 | invalid_request, inclusive um endereço que não é um host público da Internet. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — o plano do projeto não inclui os dashboards de BI; required_plan nomeia o plano que os inclui. | Problema (application/problem+json) |
| 409 | idempotency_mismatch. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar visualizações BI no projeto
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
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| cursor | consulta | opcional | next_cursor da página anterior. |
| limite | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-views'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uma página de visualizações. | BIViewList (application/json); cabeçalhos: Cache-Control |
| 400 | invalid_request, inclusive um cursor malformado. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar visualização BI no projeto
Adiciona uma visualização de um painel do Grafana da conexão ou de um único painel interno dele (url: um endereço /d/{uid}/... no host da conexão, ou target), ou de um link de painel público do Grafana (kind grafana e target.public_url, sem conexão).
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.
A página de incorporação mostra apenas um ticket que o manifesto da tela traz, então uma visualização só é reproduzida nas telas do próprio projeto.
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.
Uma visualização do Tableau Public é uma visualização sem conexão (kind tableau, target.public_url, reconstruída como https://public.tableau.com/views/WORKBOOK/VIEW) e também aceita rotate_sheets. Para uma página web (kind web): uma página do site da conexão web (url: um endereço https em um host público, sem target).
O navegador na borda a abre já logado, espera o elemento wait_for quando definido e wait_ms milissegundos (até 10000), e desenha clip, um seletor CSS, quando definido, ou então a página inteira.
A imagem é redesenhada a cada refresh_s (60 a 86400, 300 por padrão) e compartilhada por todas as telas do mesmo tamanho, e só enquanto uma tela mostra a visualização; quando uma captura falha, a última imagem continua na tela. Defina wait_for como um elemento que só existe quando a página está logada, para que uma página de login nunca seja mostrada. Adiciona bi_view.created.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| connection_id (opcional, string) | |
| kind (opcional, string) | Obrigatório sem connection_id; caso contrário deve corresponder à conexão. Permitido: "grafana", "powerbi", "tableau", "web" |
| nome (obrigatório, string) | minLength: 1 maxLength: 80 |
| url (opcional, string) | Um endereço de dashboard /d/{uid}/... no host da conexão. O servidor lê dele orgId, viewPanel (N ou panel-N) ou panelId, from, to, var-* e theme. Tableau: um endereço de visualização no host da conexão (/views/W/V, /t/SITE/views/W/V, #/site/SITE/views/W/V) ou Workbook/View. Web: o endereço https da página em um host público. maxLength: 2048 |
| target (opcional, BITarget) | O que uma visualização mostra. Grafana com uma conexão: dashboard_uid (e opcionalmente um painel). Power BI com uma conexão: workspace_id e report_id, com pages ou rotate_all_pages. Tableau com uma conexão: view (Workbook/View), com rotate_sheets. Web com uma conexão: url. Sem uma conexão: apenas public_url (e rotate_sheets para o Tableau). |
| refresh_s (opcional, inteiro) | Grafana 30 a 86400; Power BI e Tableau 0 ou 60 a 86400; web 60 a 86400. default: 300 minimum: 0 maximum: 86400 |
| rotate_s (opcional, inteiro) | Power BI e Tableau: 0 ou de 10 a 3600; obrigatório para um destino que alterna páginas ou planilhas. default: 0 minimum: 0 maximum: 3600 |
| fit (opcional, string) | Permitidos: "contain", "cover", "fill" padrão: "contain" |
| wait_for (opcional, string) | Web: um seletor CSS de um elemento que aparece quando a página está pronta, e só quando está logada. maxLength: 512 |
| wait_ms (opcional, inteiro) | Web: os milissegundos a esperar depois que a página está pronta. minimum: 0 maximum: 10000 |
| clip (opcional, string) | Web: um seletor CSS da parte da página a desenhar. maxLength: 512 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criada. | BIView (application/json); cabeçalhos: ETag, Cache-Control |
| 400 | invalid_request, inclusive uma url que não é um endereço de painel da conexão. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — o plano do projeto não inclui os dashboards de BI; required_plan nomeia o plano que os inclui. | Problema (application/problem+json) |
| 404 | not_found: a conexão não está neste projeto. | Problema (application/problem+json) |
| 409 | idempotency_mismatch. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar gatilhos no projeto
Lista os gatilhos de alerta CAP do projeto, do mais antigo para o mais recente (no máximo 20), cada um com sua URL de ingestão, nome de usuário e último alerta. A senha nunca é retornada aqui.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/triggers'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Os gatilhos do projeto. | TriggerList (application/json); cabeçalhos: Cache-Control |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar gatilho no projeto
Cria um gatilho de alerta CAP: uma URL de entrada para a qual um sistema de notificação de emergência (Everbridge, Rave, Alertus, relés IPAWS e outros emissores CAP 1.2) envia alertas, com credenciais HTTP Basic.
A resposta é o único lugar onde a senha aparece (com a resposta de rotação): armazene-a no sistema de envio imediatamente. target é uma tag (toda tela ativa com ela quando o alerta chega) ou até 500 screen_ids.
Um alerta assume todas as telas-alvo com uma playlist padrão até o <expires> do alerta, ou para default_for_seconds (60 a 604800, padrão 3600); veja POST /api/triggers/{id}/cap. Uma organização tem no máximo 20 gatilhos em todos os seus projetos (trigger_limit_reached). Acrescenta trigger.created.
Uma nova tentativa exata com a mesma Idempotency-Key retorna esta mesma resposta, senha incluída, por vinte e quatro horas. Um gatilho cujo seletor alcança uma tela protegida é protected_target (409), e uma falha na leitura da proteção da tela é dependency_unavailable (500, repita a mesma requisição); um gatilho não está disponível para um chamador limitado a telas.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| kind (opcional, string) | Permitidos: "cap", "overlay" padrão: "cap" |
| label (obrigatório, string) | minLength: 1 maxLength: 80 |
| target (obrigatório, TriggerTarget) | Exatamente um entre tag e screen_ids. |
| default_for_seconds (opcional, inteiro) | Por quanto tempo um alerta sem <expires> mantém as telas: de 60 a 604800, padrão 3600, em um gatilho CAP; por quanto tempo um envio sem duration mantém seu alerta: de 10 a 604800, padrão 600, em um gatilho de sobreposição. minimum: 10 maximum: 604800 |
| pull (opcional, CapPull) | Fontes CAP que a plataforma lê para o gatilho, com a localização das telas-alvo e quais alertas contam: os parâmetros de um posicionamento de cartão cap-alert (docs/feeds.md "CAP alerts"). Cada URL de fonte é buscada uma vez por minuto para cada gatilho e posicionamento que a nomeia. Sem fontes, os feeds públicos da plataforma que cobrem a localização são lidos (NWS, Canada NAAD e MeteoAlarm para uma localização com códigos de área). O alerta correspondente mais severo assume as telas-alvo exatamente como uma mensagem enviada faria; quando as fontes não mostram nenhum (um cancelamento ou expiração), um alerta puxado termina. Uma fonte obsoleta ou com falha nunca termina um alerta. location é obrigatório a menos que fontes sejam fornecidas. |
| overlay (opcional, TriggerOverlayWrite) |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criado, com sua URL, nome de usuário e senha. | TriggerWithPassword (application/json); cabeçalhos: ETag, Cache-Control |
| 400 | invalid_request, incluindo uma tag malformada ou tanto tag quanto screen_ids. | Problema (application/problem+json) |
| 409 | trigger_limit_reached, idempotency_mismatch, ou protected_target quando o seletor alcança uma tela em uma pasta de telas protegida. | Problema (application/problem+json) |
| 500 | dependency_unavailable - a verificação de pastas de telas protegidas não pôde ser executada; envie a mesma requisição de novo após uma breve espera. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar eventos no projeto
Lista eventos duráveis do projeto em ordem crescente por sequência.
Paginação é contígua: passe o next_cursor retornado como after para continuar exatamente onde a página parou. next_cursor é o cursor do último evento retornado enquanto eventos mais novos já existem, e nulo no fim do histórico. limit padrão é 50 e aceita 1-200; valor fora desse intervalo é recusado com invalid_request e um membro errors[] nomeando limit.
Paginação por offset não é suportada. source=log lista o log do Player em vez disso: os relatórios de condição enviados pelos Players (runtime.reported) em ordem crescente pelo tempo de recebimento, filtrados por screen_id e severidade em uma janela de até (por padrão as últimas 24 horas, no máximo 31 dias).
Seus cursores são opacos: lg1_ ou ev1_ conforme onde o servidor mantém o log do Player, então devolva o que uma página retornou; um cursor do outro tipo é recusado com invalid_request nomeando o campo. Registros do log do Player não têm sequência, não estão em GET /stream/project e não são entregues a webhooks.
Um registro é reconhecido quando a fila de log do Player o aceita e é mantido para a retenção de eventos do projeto. Uma consulta com o último cursor e a janela padrão segue o log. Registros de log do Player não estão na lista padrão (source=project). from e to são recusados com invalid_request a menos que source seja log.
A lista do projeto aceita screen_id, playlist_id e application_id para ler os eventos de uma tela, playlist ou aplicativo, todos limitados ao projeto da credencial (um id nomeia quais eventos ler, nunca de quem): screen_id mantém os eventos cujo recurso é essa tela; playlist_id os eventos cujo recurso é essa playlist mais os eventos que a nomeiam como details.playlist_id (uma tela que a usa); application_id os eventos cujo recurso é esse aplicativo mais os que têm esse id como application_id (seus lançamentos e entradas chave/valor).
Um valor que não é um id do seu tipo é recusado com invalid_request nomeando o campo; playlist_id e application_id são recusados com source=log, cujos registros pertencem só a uma tela.
Ambas as fontes usam resource_id, tipo e severidade (mínimo), combinados entre si, com os filtros de ID e paginação; um registro de log do Player é um registro runtime.reported cujo recurso é sua tela, então um resource_id que não seja essa tela ou um tipo que exclua runtime.reported retorna uma página vazia. before (ou order=desc) mostra os mais recentes primeiro: next_cursor é o cursor do item mais antigo retornado e passado de volta como before para continuar para itens mais antigos.
Sem from, uma página source=log mais recente primeiro alcança além das 24 horas padrão até o registro mais antigo que a retenção de eventos do projeto mantém, no máximo 31 dias abaixo da borda superior da página por requisição. Uma página source=log mais recente primeiro pode conter menos que o limite de registros, até nenhum, com um next_cursor; null ainda a encerra, no fim do log retido.
Um chamador limitado a telas (docs/screen-scope.md) lê um feed filtrado: eventos de telas dentro do seu escopo, das pastas de telas que ele pode ver (as suas próprias, as pastas acima e as de dentro; screen.moved somente quando o destino está dentro do seu escopo), de campanhas, playlists, mídia, aplicativos e cartões, e as revisões playlist_change.
Todo outro evento fica de fora, então uma página pode conter menos eventos que limit, até nenhum, com um next_cursor; continue paginando com ele. source=log precisa de um screen_id dentro do seu escopo. Eventos sobre o próprio projeto não são enviados.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| depois | consulta | opcional | Um cursor de uma resposta anterior: ev1_ para eventos de projeto (e os fluxos de eventos). O log do Player (source=log) pagina com cursores lg1_ ou ev1_ pelo local onde o servidor o mantém; trate-os como opacos e devolva o que uma página retornou. Um cursor de outro tipo é recusado com invalid_request. |
| before | consulta | opcional | Páginas mais recentes primeiro, estritamente mais antigas que este cursor: um next_cursor de uma página mais recente primeiro, ou qualquer cursor de item (ev1_ para eventos de projeto; para source=log o cursor opaco que seus itens carregam). Vazio ou ausente com order=desc começa no item mais recente. |
| ordem | consulta | opcional | asc páginas mais antigas primeiro com after; desc páginas mais novas primeiro com before. before implica desc; order=asc com before é recusado. |
| limite | consulta | opcional | Tamanho da página. Valor fora de 1-200 é recusado com invalid_request e um membro errors[] cujo campo é limit. |
| origem | consulta | opcional | projeto lista os eventos sequenciados do projeto. log lista o log do Player: relatórios de condição do Player (runtime.reported), em ordem crescente pelo tempo de recebimento. |
| resource_id | consulta | opcional | Só itens cujo resource.id é este id (uma tela, playlist, mídia, webhook, agente ou id de aplicativo). Com source=log é a tela do registro. |
| tipo | consulta | opcional | Um tipo de evento exato como playlist.updated, ou um prefixo de família terminando em ponto como playlist. para todo tipo playlist.*. |
| screen_id | consulta | opcional | Só os eventos desta tela: com source=project aqueles cujo recurso é a tela, com source=log seus registros de log do Player. Outro tipo de id é recusado com invalid_request. |
| playlist_id | consulta | opcional | Com source=project, apenas os eventos desta playlist: aqueles cujo recurso é a playlist e aqueles que a nomeiam como details.playlist_id. Recusado com source=log. |
| application_id | consulta | opcional | Com source=project, apenas os eventos deste aplicativo: aqueles cujo recurso é o aplicativo e aqueles cujo recurso o carrega como application_id (suas versões e entradas de chave/valor). Recusado com source=log. |
| gravidade | consulta | opcional | Gravidade mínima: info é todo item, warning mantém avisos e erros, error mantém erros. Ambas as fontes. |
| de | consulta | opcional | Com source=log, o início da janela (inclusivo). Padrão é 24 horas antes de to; uma página mais recente primeiro sem from alcança a retenção de eventos do projeto em vez disso. |
| até | consulta | opcional | Com source=log, o fim da janela (exclusivo). Padrão é agora. A janela tem no máximo 31 dias. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/events'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Eventos duráveis (source=project) ou registros de log do Player (source=log) | EventList (application/json) |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter capacidades do projeto no projeto
O plano do projeto chamador, flags independentes de anunciante/telas com sua revisão, o conjunto derivado de capacidades efetivas, os recursos do plano que ele tem (plan_features) e seus limites (limits). Nunca reflete uma reivindicação do cliente; um plano desconhecido falha fechado como proibido.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/capabilities'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Capacidades do projeto. | ProjectCapabilities (application/json); cabeçalhos: Cache-Control |
| 403 | proibido - o plano do projeto não está no catálogo. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter saldo de cobrança no projeto
O snapshot do saldo consciente da fonte do projeto chamador. Todos os valores em milicréditos são strings decimais canônicas. É um snapshot, não autoridade para pagar; rails_available é falso enquanto cartão, imposto e rail de saque estão indisponíveis.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/billing/balance'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Instantâneo do saldo. | Saldo de cobrança (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter extrato de cobrança no projeto
Paginação cursor estável sobre entradas de diário imutáveis postadas para o projeto chamador. Holds não são entradas postadas. Correções linkam ao evento original em vez de reescrevê-lo. Não há mutação arbitrária de concessão ou pagamento nesta superfície.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| cursor | consulta | opcional | |
| limite | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/billing/statement'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Página de extrato. | Extrato de cobrança (application/json) |
| 400 | invalid_request - limite fora do intervalo. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter uso de cobrança no projeto
O uso do projeto chamador em um mês UTC, com os bytes servidos e recebidos (nunca cobrados), o armazenamento cobrado acima do armazenamento gratuito do plano do pagador (allowance.storage_bytes) e as solicitações de API, eventos de stream do projeto faturados e tentativas de entrega de webhook contados contra os 10.000 gratuitos por mês. Um projeto que paga por si mesmo lê seu próprio pool.
Um projeto que outro pagador paga compartilha o pool desse pagador com os outros projetos do pagador; ele lê sua própria parte, e payer nomeia o pagador. O total do pool do pagador permanece nas leituras de cobrança do pagador.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| período | consulta | opcional | Mês UTC no formato YYYY-MM; padrão para o mês atual. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/billing/usage'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uso do projeto. | ProjectBillingUsage (application/json); cabeçalhos: Cache-Control |
| 400 | invalid_request - período não é um mês UTC no formato YYYY-MM. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter rede publicitária no projeto
A rede do vendedor que está ligando, incluindo a taxa de serviço resolvida do ScreenRig. Vendedores não podem alterar essa taxa.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/network'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Rede. | AdvertisingNetwork (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar rede de anúncios no projeto
Cria a única rede do vendedor que chama, se ausente. Requer telas=true. Idempotente; repetir retorna a mesma rede.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (obrigatório, string) | maxLength: 120 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Rede. | AdvertisingNetwork (application/json) |
| 403 | proibido - o projeto não tem capacidade de tela ou possui um plano desconhecido. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Definir taxa padrão de publicidade no projeto
Define a taxa padrão do projeto do vendedor por 15 segundos de reprodução concluída. Uma alteração que altera a taxa efetiva de uma campanha aceita pausa toda a campanha com price_change_pending; uma alteração mascarada ou sem efeito não. If-Match carrega a revisão da rede.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| If-Match | cabeçalho | opcional | Revisão positiva opcional do recurso. Omitir para escrever o recurso atual; uma revisão obsoleta fornecida é revision_conflict. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| rate_mcr_per_15s (obrigatório, McrString) | Quantidade exata de millicréditos como string decimal canônica. 1 crédito é 1000 mcr. pattern: "^-?[0-9]+$" |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Rede atualizada. | AdvertisingNetwork (application/json) |
| 412 | revision_conflict - If-Match está desatualizado. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar inventário publicitário no projeto
O inventário optado pelo vendedor que está ligando.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/inventory'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Inventário. | AdvertisingInventoryList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar espaços publicitários no projeto
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/slots'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Slots. | AdvertisingSlotList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar espaço publicitário no projeto
Cria um slot de vendedor reutilizável. Imagens têm de 5 a 30 segundos e vídeos no máximo o teto da plataforma de 120 segundos. Anúncios estão sempre sem som.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (obrigatório, string) | minLength: 1 maxLength: 120 |
| habilitado (opcional, boolean) | |
| accepted_media (obrigatório, array) | |
| max_image_duration_ms (obrigatório, inteiro) | mínimo: 5000 máximo: 30000 |
| max_video_duration_ms (obrigatório, inteiro) | mínimo: 1000 máximo: 120000 |
| rate_override_mcr_per_15s (opcional, inline) | |
| vast_tag_url (opcional, embutido) | A própria tag de anúncio VAST 2-4 do vendedor, tentada quando nenhuma campanha convidada preenche essa vaga nas telas do vendedor. HTTPS na porta 443 ou 8443 para um host público apenas. O backend busca, segue até cinco Wrappers, ingere o MediaFile progressivo MP4 ou WebM escolhido na mídia do projeto e dispara Impression, creativeView e start em início aceito, complete em conclusão aceita e Error em falha. Quartile trackers não são disparados. Macros [CACHEBUSTING], [TIMESTAMP], [SCREENRIG_SCREEN_ID], [SCREENRIG_SLOT_ID] e [SCREENRIG_PAGE_ID] são expandidos. O slot deve aceitar vídeo. Nulo, ausente ou vazio limpa a tag. Compradores nunca veem isso. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Slotslot. | AdvertisingSlot (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar associações publicitárias no projeto
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/memberships'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Associações. | AdvertisingMembershipList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar redes publicitárias associadas no projeto
Redes às quais o anunciante chamador pertence atualmente, com o escopo e política de revisão concedidos. Contagem de telas não é contagem garantida de impressões.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/networks'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Redes associadas. | AdvertisingJoinedNetworkList (application/json) |
| 403 | proibido - o projeto não tem a flag de anunciante. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar criativos publicitários no projeto
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/creatives'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Criativos. | AdvertisingCreativeList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar criativo publicitário no projeto
Vincula uma revisão de mídia pronta e própria a um criativo imutável. Não copia bytes, não reenvia nem recarrega geração. Mídia desconhecida ou não pronta é rejeitada.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| media_id (obrigatório, string) | |
| copy (opcional, string) | maxLength: 500 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criativo. | AdvertisingCreative (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar campanhas publicitárias no projeto
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/campaigns'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Campanhas. | AdvertisingCampaignList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar campanha publicitária no projeto
Cria uma campanha rascunho. Rascunhos não possuem dinheiro, não reservam nada e não autorizam entrega. A ativação requer uma cotação explicitamente aceita.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (obrigatório, string) | minLength: 1 maxLength: 120 |
| category (opcional, AdvertisingCategory) | A categoria do anunciante. Dois anúncios da mesma categoria nunca são reproduzidos no mesmo intervalo de anúncios em uma tela; um anúncio sem categoria nunca é separado. Permitidos: "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 (obrigatório, McrString) | Quantidade exata de millicréditos como string decimal canônica. 1 crédito é 1000 mcr. pattern: "^-?[0-9]+$" |
| lifetime_cap_mcr (obrigatório, McrString) | Quantidade exata de millicréditos como string decimal canônica. 1 crédito é 1000 mcr. pattern: "^-?[0-9]+$" |
| image_duration_ms (opcional, inteiro) | Tempo de exibição da imagem em toda a campanha. Vídeos mantêm sua duração verificada pelo servidor. padrão: 10000 mínimo: 5000 máximo: 30000 |
| max_play_price_mcr (opcional, inline) | Preço máximo positivo para reprodução concluída. Omitir para não ter teto adicional. |
| flight_start (obrigatório, string) | formato: "date-time" |
| flight_end (obrigatório, string) | formato: "date-time" |
| redes (obrigatório, array) |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Campanha rascunho. | AdvertisingCampaign (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar avaliações publicitárias no projeto
Versões criativas enviadas ao vendedor que chama para revisão. Um vendedor vê apenas a criativa enviada exata, nunca a biblioteca do comprador.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/reviews'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Revisões. | AdvertisingReviewList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter gastos publicitários no projeto
Contagem de gastos e entregas do comprador para uma campanha. Os valores são strings decimais de mcr. Nunca expõe a renda do vendedor, status bancário ou uso do projeto inteiro.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| formato | consulta | opcional | json (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas). |
| campaign_id | consulta | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/reports/spend?campaign_id=CAMPAIGN_ID'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Relatório de gastos. | AdvertisingSpendReport (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter entrega publicitária no projeto
Bruto, taxa de serviço e líquido no escopo do vendedor para uma janela, com sua própria evidência de entrega. Nunca expõe a carteira do comprador ou outras redes. Apenas evidência autorizada de reprodução completa estabelece entrega faturável. A janela tem no máximo 92 dias; janela maior é invalid_request.
Quando contém mais de 5000 liquidações, a resposta define truncado, totais e contagens ainda cobrem todos eles e linhas lista apenas os primeiros 5000.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| formato | consulta | opcional | json (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas). |
| de | consulta | obrigatório | |
| até | consulta | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/reports/delivery?from=FROM&to=TO'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Relatório de entrega. | AdvertisingDeliveryReport (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar agregados de reprodução no projeto
Agregados diários de reprodução.
JSON retorna no máximo 200 linhas e não tem limite de taxa. format=csv (ou Accept text/csv sem application/json) transmite cada linha correspondente dentro de day_from a day_to (dias UTC inclusivos; padrão day_to hoje e day_from 30 dias antes; no máximo 366 dias, caso contrário invalid_request) como CSV com uma linha de cabeçalho fixa (PlaybackAggregateCsv); somente o formato CSV consome os orçamentos playback-export-org (30 por minuto) e playback-export-ip (60 por minuto).
Qualquer uma das formas é uma requisição de API medida. As respostas trazem Vary Accept. Um chamador limitado a telas (docs/screen-scope.md) deve enviar screen_id, e ele deve ser uma tela dentro do seu escopo (caso contrário, outside_screen_scope); as formas CSV seguem a mesma regra.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| screen_id | consulta | opcional | |
| media_id | consulta | opcional | |
| dia | consulta | opcional | Dia do calendário UTC do agregado. |
| day_from | consulta | opcional | Primeiro dia UTC, inclusivo. Exclui o dia. Com day_to abrange no máximo 366 dias. CSV padrão para 30 dias antes de day_to. |
| day_to | consulta | opcional | Último dia UTC, inclusivo. Exclui o dia. CSV o define como hoje (UTC). |
| formato | consulta | opcional | json (padrão), csv, xlsx ou pdf. Se omitido, um cabeçalho Accept que cita text/csv mas não application/json seleciona csv. xlsx e pdf gravam as primeiras 50000 linhas da mesma lista. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Agregados diários de reprodução para o projeto que está fazendo a chamada, tanto imagens quanto vídeos. Uma linha por tela, mídia e dia UTC. Dias mais recentes primeiro. Identificadores filtram as próprias linhas do chamador e nunca fazem consulta cruzada entre projetos. | PlaybackAggregateList (application/json), PlaybackAggregateCsv (text/csv); cabeçalhos: Vary, RateLimit-Policy, RateLimit |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar execuções de reprodução no projeto
Registros por reprodução: uma linha por playback.media_started aceito (ou playback.video_started legado) e uma linha por playback.application_started aceito (release_id definido, campos de mídia vazios) do projeto solicitante, do mais antigo para o mais recente por received_at, empates por inserção. from (inclusivo) e to (exclusivo) delimitam received_at; to padrão é agora, from é 24 horas antes de to, e o intervalo é no máximo 31 dias (invalid_request caso contrário).
Os últimos 5 segundos ainda não são retornados: o effective to é no máximo agora menos 5 segundos (atraso de estabilização), então uma cauda ao vivo nunca pula uma linha que se compromete atrás do seu cursor. screen_id, media_id, playlist_id (a playlist de onde o início foi mostrado) e tag (uma tag da tela quando a reprodução foi recebida) filtram.
Uma página de playlist_id pode conter menos que o limite de linhas, até nenhuma, com next_cursor quando um longo trecho de reproduções de outras playlists foi escaneado; null ainda encerra o intervalo.
JSON é uma página de no máximo limit linhas (padrão 200, no máximo 1000) com next_cursor, null no fim do intervalo; devolva como cursor com os mesmos filtros. order=desc (ou before) pagina os mais novos primeiro dentro do mesmo intervalo: next_cursor é então o cursor da linha mais antiga retornada, null no início do intervalo, e é devolvido como before (exclusivo) com os mesmos filtros; order=asc com before é recusado com invalid_request nomeando order, e cursor com uma página newest-first nomeando cursor.
Uma página mais recente pode conter menos que o limite de linhas, até nenhuma, com um next_cursor; null ainda encerra.
Uma página posterior nunca pula uma linha que existia quando a página anterior foi lida e não repete uma, exceto que um início que o Player reenviou após um relatório não reconhecido (o mesmo play_id, recebido um momento depois) pode aparecer novamente em uma página posterior; o fluxo CSV lista isso uma vez. format=csv (ou Accept text/csv sem application/json) transmite cada reprodução do cursor até o fim do intervalo como CSV (PlaybackPlayCsv), mais recentes primeiro abaixo antes com order=desc; limite é recusado com CSV.
A medição é por requisição: cada página JSON custa um crédito de requisição API, enquanto um fluxo CSV de toda a faixa custa um. Cada requisição de plays (página ou fluxo) consome os orçamentos playback-export-org (30 por minuto) e playback-export-ip (60 por minuto).
Um stream limita cada escrita (15 segundos) e termina quando o cliente desconecta; se falhar após o cabeçalho 200 a conexão é abortada, então uma exportação que lê até um fim limpo está completa. Respostas carregam Vary Accept. As reproduções são mantidas pelo período de retenção de eventos do plano (30 dias é o mínimo padrão; retenção baseada no plano usa a janela própria de 7 ou 90 dias).
Um chamador limitado a telas (docs/screen-scope.md) deve enviar screen_id, e ele deve ser uma tela dentro do seu escopo (caso contrário, outside_screen_scope); as formas CSV seguem a mesma regra.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| de | consulta | opcional | Limite inferior inclusivo em received_at. Padrão para 24 horas antes de to. |
| até | consulta | opcional | Limite superior exclusivo em received_at. Padrão é agora. to - from é no máximo 31 dias. |
| screen_id | consulta | opcional | |
| media_id | consulta | opcional | |
| playlist_id | consulta | opcional | Só reproduções mostradas desta playlist. |
| tag | consulta | opcional | Uma tag de tela que a tela carregava quando a reprodução foi recebida. |
| cursor | consulta | opcional | next_cursor da página anterior, com os mesmos filtros. Opaco. |
| ordem | consulta | opcional | asc páginas mais antigas primeiro com cursor; desc páginas mais novas primeiro com before. before implica desc; order=asc com before é recusado. |
| before | consulta | opcional | Páginas mais recentes primeiro, estritamente mais antigas que esta posição: o next_cursor de uma página mais recente primeiro, com os mesmos filtros. Opaco. |
| limite | consulta | opcional | Tamanho da página JSON. Recusado com CSV. |
| formato | consulta | opcional | json (padrão), csv, xlsx ou pdf. Se omitido, um cabeçalho Accept que cita text/csv mas não application/json seleciona csv. xlsx e pdf gravam as primeiras 50000 linhas da mesma lista. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback/plays'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uma página de reproduções, ou o fluxo CSV. | PlaybackPlayList (application/json), PlaybackPlayCsv (text/csv); cabeçalhos: Cache-Control, Vary, RateLimit-Policy, RateLimit |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 401 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter totais de reprodução no projeto
Totais de reprodução do projeto solicitante por dias UTC inclusivos, lidos dos resumos diários: by=day retorna uma linha por dia com reproduções (screen_id ou media_id limita a uma tela ou mídia), by=screen e by=media classificam as telas ou mídias mais ativas (top, no máximo 100), e by=screen_day retorna a série diária das telas principais (top no máximo 10). day_to padrão é hoje (UTC) e day_from é 29 dias antes.
Uma série de dias abrange no máximo 366 dias (92 quando restrita a uma tela ou mídia); um ranking no máximo 92. As contagens incluem todos os inícios que o projeto registrou, incluindo os armazenados antes da existência dos rollups de reprodução.
Rollups seguem a ingestão por até cerca de 21 minutos. truncated é verdadeiro quando um ranking foi construído a partir de fatias de uma janela muito grande para uma leitura: cobre as melhores chaves de cada fatia. Não tem limite de taxa. Uma solicitação de API medida.
Um chamador limitado a telas (docs/screen-scope.md) deve enviar screen_id, e ele deve ser uma tela dentro do seu escopo (caso contrário, outside_screen_scope); as formas CSV seguem a mesma regra.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| formato | consulta | opcional | json (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas). |
| por | consulta | opcional | dia: reproduções por dia; tela, mídia: as chaves mais movimentadas; screen_day: a série diária das principais telas. |
| day_from | consulta | opcional | Primeiro dia UTC, inclusivo. Padrão para 29 dias antes de day_to. Uma série de dias abrange no máximo 366 dias (92 quando restrita a uma tela ou mídia), um ranking no máximo 92. |
| day_to | consulta | opcional | Último dia UTC, inclusivo. Padrão é hoje (UTC). |
| screen_id | consulta | opcional | |
| media_id | consulta | opcional | |
| topo | consulta | opcional | Quantas telas ou mídias um ranking retorna (no máximo 10 para by=screen_day). Recusado com by=day. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback/totals'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Totais do agrupamento solicitado. | PlaybackTotals (application/json); cabeçalhos: Cache-Control |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 401 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter completude da reprodução no projeto
Quantas das reproduções feitas pelas telas chegaram ao backend e onde estavam as que faltaram. Os players numeram os inícios de mídia, então um início que nunca chegou deixa uma lacuna na numeração, por exemplo quando uma tela fica offline além da fila de relatórios de 24 horas ou a fila descarta relatórios.
Nos dias UTC de day_from a day_to, inclusive (day_to tem como padrão hoje, em UTC, e day_from, 29 dias antes dele; a janela abrange no máximo 92 dias), a resposta traz measured_plays, as reproduções numeradas que chegaram; missing_plays, os números que os players pularam; completeness, measured_plays dividido pela soma dos dois, null quando ambos são 0; days, os mesmos três números para cada dia que tiver algum, mais antigos primeiro, com a lacuna contada no dia UTC da reprodução seguinte; e gaps, as lacunas mais recentes primeiro, cada uma com seu screen_id, seu day, from e to (os horários de início das reproduções de cada lado dela) e missing_plays. screen_id restringe days e gaps a uma tela; limit (padrão 100, no máximo 500) limita gaps, e truncated é true quando existem mais.
Uma tela desligada não gera reproduções e não deixa lacunas. Reproduções sem número (players mais antigos, inícios armazenados antes dos números de reprodução) não são medidas: estão em play_count de GET /api/playback/totals e em nenhum destes números. Sem limite de taxa. Uma requisição de API medida.
Um chamador limitado a telas (docs/screen-scope.md) deve enviar screen_id, e ele deve ser uma tela dentro do seu escopo (caso contrário, outside_screen_scope); as formas CSV seguem a mesma regra.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| formato | consulta | opcional | json (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas). |
| day_from | consulta | opcional | Primeiro dia UTC, inclusive. O padrão é 29 dias antes de day_to. Com day_to, o intervalo abrange no máximo 92 dias. |
| day_to | consulta | opcional | Último dia UTC, inclusivo. Padrão é hoje (UTC). |
| screen_id | consulta | opcional | |
| limite | consulta | opcional | O máximo de lacunas a listar, mais recentes primeiro. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback/completeness'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | A completude da janela e suas lacunas. | PlaybackCompleteness (application/json); cabeçalhos: Cache-Control |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 401 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter Health Trend no projeto
A saúde da frota do projeto por hora UTC: quantas telas reportaram, e quantas estavam quentes (80 °C ou mais), tinham um display desconectado ou estavam travando (3 ou mais travamentos em 24 horas). from (inclusivo) e to (exclusivo) padrão para as últimas 24 horas, no máximo 93 dias; uma página contém no máximo limit linhas (padrão 100, no máximo 500) com next_cursor, nulo no fim.
As horas seguem os relatórios com até cerca de 5 minutos de atraso. Recusado a um chamador limitado a telas (outside_screen_scope); GET /api/screens/{id}/health/history é a forma por tela.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| formato | consulta | opcional | json (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas). |
| de | consulta | opcional | Limite inferior inclusivo no horário do relatório. Padrão para 24 horas antes de to. |
| até | consulta | opcional | Limite superior exclusivo no horário do relatório. Padrão é agora. |
| limite | consulta | opcional | Tamanho da página. |
| cursor | consulta | opcional | next_cursor da página anterior, com os mesmos filtros. Opaco. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/health/trend'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uma página da saúde da frota por hora. | HealthTrend (application/json); cabeçalhos: Cache-Control |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 401 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Obter uptime do projeto no projeto
Disponibilidade diária das telas do projeto em dias UTC inclusivos (padrões e intervalo como GET /api/screens/{id}/uptime). Cada linha soma os segundos online e offline das telas com estado registrado naquele dia; cobertura é a parcela do dia dessas telas com estado registrado.
Os intervalos contam quando terminam, então a linha de hoje cobre os intervalos que terminaram até agora; a contagem online ao vivo está no resumo do dashboard. Recusado a um chamador limitado a telas (outside_screen_scope); GET /api/screens/{id}/uptime é a forma por tela.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| formato | consulta | opcional | json (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas). |
| day_from | consulta | opcional | Primeiro dia UTC, inclusivo. Padrão para 29 dias antes de day_to. Com day_to abrange no máximo 366 dias. |
| day_to | consulta | opcional | Último dia UTC, inclusivo. Padrão é hoje (UTC). |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/uptime/daily'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Linhas diárias de tempo ativo, do mais antigo para o mais recente. | ProjectUptime (application/json); cabeçalhos: Cache-Control |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 401 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar tipos de cartões no projeto
Descubra cartões integrados do catálogo publicado deste ambiente, mesclado com o catálogo do fornecedor. Atualizações e verificação de esquema ocorrem em segundo plano; esta rota nunca acessa o bucket edge. Cada entrada lista sua cópia atual, seu nível e os layouts permitidos para esse nível, além de todos os principais servidos.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-types'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Catálogo de cartões integrado, ordenado por id | CardCatalogue (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar dados de cartões no projeto
Lista os documentos de dados de cartão do projeto, no máximo 200 em ordem crescente pela chave. next_cursor é a última chave retornada; passe-a como after para a próxima página, null quando não houver mais. Documentos de dados de cartão contêm as propriedades dinâmicas das colocações de cartão (seções de menu, itens de ticker, blocos de KPI); a chave de dados da colocação nomeia um.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| depois | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Documentos de dados do cartão | CardDataList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar mídias no projeto
Lista mídias prontas da mais nova para a mais antiga, no máximo 1000 por página. folder mantém apenas os arquivos diretamente dentro de uma pasta de mídia (seu ID), ou com root somente aqueles na raiz da biblioteca; um ID de pasta bem formado que não nomeia nenhuma pasta não lista nada. next_cursor é a posição da última linha retornada enquanto houver mais linhas; passe-o de volta como after, com os mesmos filtros, para a próxima página. next_cursor é nulo na última página.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| tag | consulta | opcional | Tag de mídia exata. Objetos sem tag são omitidos quando esse filtro está presente. |
| primitivo | consulta | opcional | |
| pasta | consulta | opcional | Um ID de pasta de mídia mantém apenas os arquivos diretamente dentro dessa pasta, não os de suas subpastas; root mantém apenas os arquivos na raiz da biblioteca. Omitir lista todos os arquivos. |
| ids | consulta | opcional | IDs de mídia separados por vírgula, no máximo 200 distintos; mais que isso é invalid_request em ids. Mantém apenas esses arquivos: um id que não nomeia nenhum arquivo pronto fica ausente, e os demais filtros e a paginação continuam valendo. Um valor vazio não lista nada. |
| library | consulta | opcional | true lista o projeto Biblioteca da organização em vez deste projeto: os itens dele são somente leitura aqui e trazem library true. Uma organização sem Biblioteca, ou o próprio projeto Biblioteca, não lista nada com true. |
| depois | consulta | opcional | next_cursor da página anterior da mesma lista, com os mesmos filtros. Omitido começa na linha mais recente. Um valor que não seja esse cursor é invalid_request. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Mídia | MediaList (application/json) |
Criar geração de mídia no projeto
Gerar uma imagem estática a partir de um prompt, armazená-la como mídia privada pronta do projeto e faturar seu uso. O POST responde 202 imediatamente com Operation, com ou sem Prefer: respond-async, porque um proxy diante da API descarta uma solicitação que não envia nenhum byte por 100 s e uma imagem estática de alta qualidade pode demorar mais.
Consulte GET /api/operations/{id} até que Operation seja succeeded, quando seu result for {media_id, usage: {quality, credits, usd}} (MediaGenerationUsage), ou failed, quando seu error for o problema. Uma recusa decidida antes de qualquer trabalho do fornecedor (payment_required, reseller_generation_limit, rate_limited, not_ready, invalid_request) ainda responde ao POST.
Nunca inclui bytes de imagem, b64_json, chaves de objeto, URLs assinadas, URLs do fornecedor, custo do fornecedor, tokens do fornecedor ou o nome do modelo de implantação. O prompt são bytes do cliente e não é ecoado.
Antes que o prompt alcance o fornecedor de imagem, o servidor adiciona requisitos fixos de enquadramento: a arte deve preencher a moldura de ponta a ponta, e nenhuma televisão, monitor, tela, display, moldura, borda, suporte, parede, sala, maquete de dispositivo, sombra ou fotografia de sinal instalado pode ser representada, e qualquer texto no prompt do chamador descrevendo onde o sinal será pendurado ou qual dispositivo o mostrará é tratado como metadados de posicionamento, não como assunto.
Regras decorativas e bordas dentro do próprio design permanecem disponíveis. O prompt do chamador nunca é reescrito ou removido e é armazenado inalterado. Idempotency-Key repete a mesma Operation, nunca uma segunda tentativa faturada. Os clientes não fazem PUT nem confirmam os bytes gerados.
A versão armazenada é WebP com perda (qualidade 90) no tamanho exato da proporção com uma borda curta de 1080 px (16:9 é 1920x1080, 9:16 1080x1920, 1:1 1080x1080, 4:3 1440x1080, 3:4 1080x1440, 3:2 1620x1080, 2:3 1080x1620); a tela do fornecedor é recortada centralmente e reamostrada para esse tamanho.
O nome do arquivo é distinto por geração, generated-16x9-1a2b3c4d.webp, com o sufixo retirado do id do mídia. Busque os bytes com GET /api/media/{id}/content. Own-gen-then-upload permanece válido.
No Standard, saldo restante que não cobre o dobro do custo do fornecedor da imagem estática, arredondado para créditos inteiros, após o piso introdutório (negativo 1.000.000 créditos até 2027-01-01, depois zero) retorna payment_required, exceto SCREENRIG__ENVIRONMENT=development, e a admissão antes da chamada ao fornecedor requer saldo acima desse piso pelo mínimo por qualidade: 200 créditos para baixa, 800 para média, 2000 para alta.
Outros planos nunca são recusados por causa do saldo.
Uma organização cobrada por meio de um revendedor é recusada com reseller_generation_limit (402) assim que os clientes delegados do revendedor dela tiverem sido cobrados pelo limite mensal de geração de imagens ($100 ao preço de tabela enquanto o revendedor aguarda análise, $1,000 depois, contado por mês UTC), a menos que o crédito próprio da organização cubra a imagem; uma geração já admitida é concluída.
Uma configuração vazia do fornecedor selecionado retorna not_ready. Somente token de projeto. Uma geração em andamento por organização; mais paralelismo é rate_limited.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | obrigatório | |
| Prefer | cabeçalho | opcional | Opcional. A rota responde 202 imediatamente com Operation, com ou sem este cabeçalho; consulte Operation. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| prompt (obrigatório, string) | minLength: 1 maxLength: 4000 |
| aspect_ratio (opcional, string) | Permitido: "1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3" padrão: "16:9" |
| qualidade (opcional, string) | Permitido: "low", "medium", "high" padrão: "medium" |
| tag (opcional, string) | padrão: "^[A-Za-z0-9]{1,32}$" |
| referências (opcional, array) |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 202 | A geração foi aceita e continua em execução; consulte GET /api/operations/{id} até que Operation seja succeeded (result media_id e usage) ou failed (error). A mesma Idempotency-Key responde com a mesma Operation. | Operação (application/json); cabeçalhos: Preference-Applied, RateLimit-Policy, RateLimit |
| 402 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 500 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar pastas de mídia no projeto
Lista todas as pastas de mídia no projeto, no máximo 1000, ordenadas por nome. Pastas organizam a biblioteca de mídia, e um seletor de playlist por:folder reproduz os arquivos diretamente dentro de uma pasta. O parent_id de uma pasta é nulo na raiz da biblioteca.
Construa a árvore a partir do parent_id; a pasta de um arquivo é Media.folder_id. library=true lista, em vez disso, as pastas da Biblioteca da organização (somente leitura; um seletor by:folder pode nomear uma).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| library | consulta | opcional | true lista o projeto Biblioteca da organização em vez deste projeto: os itens dele são somente leitura aqui e trazem library true. Uma organização sem Biblioteca, ou o próprio projeto Biblioteca, não lista nada com true. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-folders'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Pastas de mídia | MediaFolderList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar pasta de mídia no projeto
Cria uma pasta de mídia na raiz da biblioteca (parent_id nulo ou ausente) ou dentro de parent_id. Nomes são aparados, têm de 1 a 100 caracteres Unicode sem controles, não são "." ou "..", e podem repetir. Uma organização tem no máximo 1000 pastas em todos os seus projetos (quota_exceeded) aninhadas no máximo 10 níveis (invalid_request). Emite media.folder_created.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome (obrigatório, string) | Aparado; 1 a 100 caracteres Unicode, sem controles, não . ou .. minLength: 1 maxLength: 100 |
| parent_id (opcional, embutido) | A pasta para criá-la; null ou ausente para a raiz da biblioteca. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Pasta criada. | MediaFolder (application/json); cabeçalhos: ETag |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Mover mídia no projeto
Move arquivos (media_ids) e pastas (folder_ids) para uma pasta (folder_id), ou para a raiz da biblioteca quando folder_id for null, em uma única requisição tudo-ou-nada de no máximo 1000 ids. Cada id deve existir (not_found). Uma pasta não pode se mover para dentro de si mesma ou de uma pasta dentro dela, e a movimentação deve manter todas as pastas dentro de 10 níveis (invalid_request).
Itens já no destino permanecem como estão; cada arquivo e pasta movidos avança sua revisão. Mover arquivos altera o que os seletores by:folder de suas pastas antiga e nova reproduzem, a partir da próxima resolução do seletor de cada tela; mover uma pasta não altera os arquivos próprios de nenhuma pasta. Emite media.moved.
Um movimento de credencial Propose torna cada arquivo movido pendente e enfileira sua revisão de mídia, e os seletores de playlists aprovadas o resolvem pela pasta com que foi aprovado até que uma pessoa aprove a mudança (docs/reviews.md).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| folder_id (obrigatório, inline) | Pasta de destino; nulo para a raiz da biblioteca. |
| media_ids (opcional, array) | |
| folder_ids (opcional, array) |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Quantos arquivos e pastas foram movidos. | MediaMoveResult (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar upload de mídia no projeto
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | obrigatório | |
| project_id | consulta | opcional | Obrigatório com dashboardSession: o projeto onde o arquivo foi enfileirado. Deve corresponder ao projeto selecionado da sessão, caso contrário resource_conflict. Isso vincula a admissão de upload entre abas. O id de upload retornado permanece com escopo de projeto para upload e commit de bytes. Omitido com um portador de projeto. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| nome do arquivo (obrigatório, string) | Nome dos bytes sendo enviados, como serão enviados: apenas um nome de arquivo com no máximo 255 bytes UTF-8, sem diretório, barra invertida nem caracteres de controle. minLength: 1 maxLength: 255 |
| source_filename (opcional, string) | Nome original do arquivo do chamador antes de qualquer transcodificação no cliente. Apenas o nome do arquivo, com no máximo 255 bytes UTF-8. Armazenado literalmente na mídia pronta como source_filename e usado para derivar filename. minLength: 1 maxLength: 255 |
| content_type (obrigatório, string) | Permitido: "image/png", "image/jpeg", "image/webp", "image/gif", "video/mp4", "video/webm", "audio/mpeg" |
| bytes (obrigatório, inteiro) | mínimo: 1 máximo: 1073741824 |
| sha256 (obrigatório, string) | padrão: "^[a-f0-9]{64}$" |
| tag (opcional, string) | padrão: "^[A-Za-z0-9]{1,32}$" |
| folder_id (opcional, string) | A pasta de mídia em que a mídia pronta cai; se omitida, cai na raiz da biblioteca. A pasta deve existir quando o upload é declarado (caso contrário, invalid_request em folder_id) e quando é confirmado (a operação falha com invalid_request: declare novamente). Um uploader (docs/uploaders.md) deve enviar uma de suas pastas (caso contrário, outside_upload_scope). |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Autorização assinada de curta duração para exatamente um PUT de objeto privado. Envie o método retornado e todos os cabeçalhos retornados exatamente como foram retornados. É também assim que o dashboard faz upload. Seu navegador envia os bytes por PUT diretamente para o armazenamento de objetos, nunca pela API, porque um proxy diante da API recusa um corpo de solicitação superior a 100 MB. Um navegador define Content-Length por si mesmo a partir do corpo, portanto envia todos os cabeçalhos retornados, exceto esse. | MediaUploadSession (application/json); cabeçalhos: Cache-Control, RateLimit-Policy, RateLimit |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Visualizar seletor no projeto
Pré-visualização somente leitura das correspondências atuais de imagem ou vídeo prontas do projeto. Retorna ordenação de nome de arquivo e política normalizada; reprodução aleatória embaralha a cada nova passagem no Player. Não avança cursores, concede conteúdo ou altera manifestos. Mais de 1024 correspondências retorna invalid_request.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| fuso horário (opcional, string) | Fuso horário IANA em que a disponibilidade da mídia é lida; padrão UTC. |
| rect (opcional, objeto) | O tamanho rect do primitivo; obrigatório com selector.fit aspect. |
| primitivo (obrigatório, string) | Permitido: "image", "video" |
| selector (obrigatório, inline) |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Correspondências do seletor atual. | SelectorPreview (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar relatórios de bugs no projeto
Retorna os relatórios de bugs do projeto que chama, do mais novo para o mais antigo, até cem. Submissões de outro projeto nunca são retornadas. Leia um tópico próprio pelo ID de feedback. Não há cursor de paginação na v1. Cada submissão carrega seu status e as respostas da equipe/agente, do mais antigo para o mais novo.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/bugs'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Relatórios de bugs pertencentes ao projeto atual. | FeedbackList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Relatar bug no projeto
Registra um relatório de bug contra o projeto chamador. Campos próprios da submissão não podem ser atualizados ou excluídos; adicione correção ou mais informações com uma resposta no mesmo tópico de feedback.
Uma nova tentativa exata com a mesma Idempotency-Key retorna a submissão original por vinte e quatro horas em vez de criar um duplicado, e um corpo diferente sob essa chave retorna idempotency_mismatch. Cada submissão é verificada antes de ser armazenada.
Um corpo com menos de 12 caracteres ou 3 palavras retorna submission_too_short; texto que não descreve problema ou requisição (caracteres aleatórios, batida no teclado) retorna submission_unclear; spam, texto com muitos links, injeção de prompt e texto malicioso retornam submission_rejected.
Uma submissão recusada não é armazenada, seu detalhe de problema nunca repete o texto submetido, e uma nova tentativa exata sob a mesma Idempotency-Key retorna a mesma recusa.
Nunca coloque credenciais, cookies, cabeçalhos Authorization, nonces de conclusão, URLs assinadas ou chaves de objeto no título, corpo ou contexto; texto com formato de credencial (tokens ScreenRig, JWTs, tokens bearer, chaves de nuvem e API, chaves privadas) é substituído por [redigido] antes do armazenamento da submissão, e a resposta carrega o texto redigido.
Quando o modelo de triagem está brevemente indisponível, a submissão é aceita e mantida para uma reavaliação em segundo plano; após algumas dessas aceitações em uma hora, o projeto recebe submission_screening_unavailable (500, Retry-After) e tenta a mesma solicitação mais tarde.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| título (obrigatório, string) | Resumo de uma linha. Espaços em branco no início e fim são removidos, e caracteres de controle são rejeitados. minLength: 1 maxLength: 120 |
| body (obrigatório, string) | Descrição completa. Quebra de linha e tabulação são os únicos caracteres de controle aceitos. minLength: 1 maxLength: 4000 |
| context (opcional, FeedbackContext) | Envelope de diagnóstico fechado. Cada membro é um escalar opcional restrito, aninhamento é estruturalmente impossível, e um membro desconhecido é rejeitado com invalid_request. A forma existe para que um cliente não possa persistir valores de argumento, credenciais ou dados de ambiente livre através dela. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Relatório de bug armazenado. Retentativa idempotente exata retorna esta mesma submissão. | FeedbackSubmission (application/json); cabeçalhos: RateLimit-Policy, RateLimit |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 409 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 422 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar solicitações de recursos no projeto
Retorna as solicitações de recursos do projeto que chama, do mais novo para o mais antigo, até cem. Submissões de outro projeto nunca são retornadas. Leia um tópico próprio pelo ID de feedback. Não há cursor de paginação na v1. Cada submissão carrega seu status e as respostas da equipe/agente, do mais antigo para o mais novo.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/features'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Solicitações de recurso pertencentes ao projeto que chama. | FeedbackList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Solicitar recurso no projeto
Registra um pedido de recurso contra o projeto chamador. Campos próprios da submissão não podem ser atualizados ou excluídos; adicione correção ou mais informações com uma resposta no mesmo tópico de feedback.
Uma nova tentativa exata com a mesma Idempotency-Key retorna a submissão original por vinte e quatro horas em vez de criar um duplicado, e um corpo diferente sob essa chave retorna idempotency_mismatch. Cada submissão é verificada antes de ser armazenada.
Um corpo com menos de 12 caracteres ou 3 palavras retorna submission_too_short; texto que não descreve problema ou requisição (caracteres aleatórios, batida no teclado) retorna submission_unclear; spam, texto com muitos links, injeção de prompt e texto malicioso retornam submission_rejected.
Uma submissão recusada não é armazenada, seu detalhe de problema nunca repete o texto submetido, e uma nova tentativa exata sob a mesma Idempotency-Key retorna a mesma recusa.
Nunca coloque credenciais, cookies, cabeçalhos Authorization, nonces de conclusão, URLs assinadas ou chaves de objeto no título, corpo ou contexto; texto com formato de credencial (tokens ScreenRig, JWTs, tokens bearer, chaves de nuvem e API, chaves privadas) é substituído por [redigido] antes do armazenamento da submissão, e a resposta carrega o texto redigido.
Quando o modelo de triagem está brevemente indisponível, a submissão é aceita e mantida para uma reavaliação em segundo plano; após algumas dessas aceitações em uma hora, o projeto recebe submission_screening_unavailable (500, Retry-After) e tenta a mesma solicitação mais tarde.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| título (obrigatório, string) | Resumo de uma linha. Espaços em branco no início e fim são removidos, e caracteres de controle são rejeitados. minLength: 1 maxLength: 120 |
| body (obrigatório, string) | Descrição completa. Quebra de linha e tabulação são os únicos caracteres de controle aceitos. minLength: 1 maxLength: 4000 |
| context (opcional, FeedbackContext) | Envelope de diagnóstico fechado. Cada membro é um escalar opcional restrito, aninhamento é estruturalmente impossível, e um membro desconhecido é rejeitado com invalid_request. A forma existe para que um cliente não possa persistir valores de argumento, credenciais ou dados de ambiente livre através dela. |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Solicitação de recurso armazenada. Retentativa idempotente exata retorna esta mesma submissão. | FeedbackSubmission (application/json); cabeçalhos: RateLimit-Policy, RateLimit |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 409 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 422 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar clientes de serviço no projeto
Os clientes de serviço do projeto (especificação: servidor, script ou trabalho CI de um cliente pertencente ao projeto), do mais novo ao mais antigo, ativos e revogados, com suas chaves públicas, ids secretos e uso; nunca um segredo ou seu resumo. Precisa da capacidade do projeto.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/service-clients'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | O cliente de serviço. | ServiceClientList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar cliente de serviço no projeto
Cria um cliente de serviço pertencente ao projeto com um nome, capacidades (omitido significa todas as seis; cada uma deve ser uma que o gerente possui, senão 403), acesso (leitura, padrão, ou gerenciamento), e uma chave pública JWK (OKP Ed25519, EC P-256 ou RSA de pelo menos 2048 bits) e/ou segredo verdadeiro. O segredo é retornado uma vez, apenas aqui. No máximo 50 clientes ativos por organização.
Agentes precisam de escopo de identidade, identidade ativa Gerenciar, sua própria concessão Gerenciar com a capacidade do projeto no projeto, e um papel ativo de administrador da organização; uma pessoa usa a sessão do dashboard com project_id e uma prova nova (tipo service_client_change, sujeito o id do cliente, ou o id do projeto ao criar) no corpo. Um token de serviço é recusado com 403.
Um membro limitado a telas não conecta agentes, não emite credenciais nem gerencia as pessoas do projeto: outside_screen_scope (peça ao proprietário do projeto).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| project_id (opcional, string) | Somente sessão do Dashboard. |
| proof (opcional, DashboardProof) | |
| nome (opcional, string) | minLength: 1 maxLength: 80 |
| capacidades (opcional, array) | |
| acesso (opcional, string) | Gerenciar requer uma pessoa que possa aprovar revisões (403 approver_required). Permitido: "ler", "propor", "gerenciar" |
| key (opcional, objeto) | Um JWK público: OKP Ed25519, EC P-256 ou RSA de pelo menos 2048 bits. |
| secreto (opcional, booleano) | Gerar um segredo (somente criação). |
| upload_scope (opcional, UploadScope) | O que um uploader pode usar (docs/uploaders.md): as playlists cujas páginas ele altera e as pastas de mídia para as quais envia. As pastas são exatamente as listadas, nunca suas subpastas. Um id que, ao ser gravado, não nomeia nenhum objeto ativo do projeto é invalid_request em sua posição; uma exclusão posterior deixa um id morto, que não concede nada. O escopo é lido a cada requisição, então uma mudança vale para a próxima. |
Modelo e respostas da solicitação
curl --request POST --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/service-clients'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | O cliente de serviço. | ServiceClientResult (application/json) |
| 402 | feature_not_in_plan — um escopo de upload cria um uploader, e o plano do projeto não inclui uploaders; required_plan nomeia o plano que os inclui. Restringir um escopo e removê-lo são sempre permitidos. | Problema (application/problem+json) |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar contas de sincronização de mídia no projeto
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
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| cursor | consulta | opcional | O next_cursor da página anterior. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-sync-accounts'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | As contas do projeto. | MediaSyncAccountList (application/json); cabeçalhos: Cache-Control |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar conta de sincronização de mídia no projeto
Adiciona uma conta que sincroniza por leitura. kind microsoft365 armazena as credenciais do próprio aplicativo do Microsoft Entra do projeto, para que as sincronizações possam ler uma pasta do SharePoint ou do OneDrive for Business: config.tenant_id é o ID do diretório ou o domínio primário do tenant (common, organizations e consumers são recusados), config.client_id o ID do aplicativo, e secret o valor de um dos segredos de cliente do aplicativo; o aplicativo precisa da permissão de aplicativo Sites.Selected do Microsoft Graph (concedida em cada site) ou Files.Read.All, com consentimento do administrador.
Em vez desses três, config.connection_id nomeia uma conexão da Microsoft do projeto (createConnection), em qualquer um dos dois modos, que faz login e guarda o segredo. kind canva só aceita um nome: a conta fica em pending_consent e a resposta traz authorize_url, um link de uso único (válido até authorize_expires_at) que a pessoa dona da conta do Canva abre, logada no Canva, para conectá-la pela integração do Canva do screenRIG.
A concessão pertence ao projeto, então as sincronizações dela duram mais que a pessoa que a conectou.
Um servidor sem a integração com o Canva responde 409 canva_not_configured. kind dropbox funciona como canva: a conta fica em pending_consent e authorize_url é um link de uso único que a pessoa dona da conta do Dropbox abre, logada no Dropbox, para permitir acesso somente leitura (files.metadata.read, files.content.read, account_info.read, sharing.read).
A autorização passa pelo aplicativo do Dropbox do screenRIG, ou pelo aplicativo do Dropbox do próprio cliente quando config.app_key o nomeia (PKCE, então sem segredo do aplicativo; o aplicativo precisa listar https://API_ORIGIN/api/dropbox/callback como URI de redirecionamento).
Um servidor sem o aplicativo do Dropbox do screenRIG responde 409 dropbox_not_configured a uma conta dropbox sem app_key. kind google_drive fica em ready de imediato e lê as pastas compartilhadas com config.service_account_email: a conta de serviço do screenRIG ou a própria do cliente, quando secret é a chave JSON dessa conta de serviço.
Uma pasta compartilhada com a conta de serviço do screenRIG só sincroniza quando um membro do projeto com e-mail verificado a compartilhou ou é o proprietário dela. Um servidor sem a conta de serviço do screenRIG responde 409 google_drive_not_configured a uma conta google_drive sem chave. Um segredo é selado em repouso e nunca é devolvido nem registrado em log. Adiciona media_sync_account.created.
Uma nova tentativa exata com a mesma Idempotency-Key devolve a mesma conta (uma nova tentativa para uma conta do Canva ou do Dropbox recebe um novo link).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| kind (obrigatório, string) | Permitido: "microsoft365", "canva", "dropbox", "google_drive" |
| nome (obrigatório, string) | minLength: 1 maxLength: 80 |
| config (opcional, object) | Para microsoft365, tenant_id e client_id (ambos) com secret, ou somente connection_id: o id de uma conexão da Microsoft deste projeto. Para dropbox, app_key nomeia opcionalmente o aplicativo do Dropbox do próprio cliente. Não aceito para canva ou google_drive. |
| secret (opcional, string) | Obrigatório para microsoft365 com tenant_id e client_id: o valor de um dos segredos de cliente do aplicativo (não o id dele), com no máximo 1024 caracteres. Para google_drive, opcional: a chave JSON da conta de serviço do Google Cloud do próprio cliente (type service_account), cujo client_email se torna o service_account_email da conta; sem ela, a conta lê por meio da conta de serviço do screenRIG. Não aceito com connection_id, nem para canva ou dropbox. minLength: 1 maxLength: 8192 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criada, com o segredo mascarado; uma conta do Canva ou do Dropbox também traz authorize_url. | MediaSyncAccountConnect (application/json); cabeçalhos: ETag, Cache-Control |
| 400 | invalid_request. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — o plano do projeto não inclui a sincronização de mídia; required_plan nomeia o plano que a inclui. | Problema (application/problem+json) |
| 409 | canva_not_configured (este servidor não tem integração com o Canva; somente kind canva), dropbox_not_configured (sem o aplicativo do Dropbox do screenRIG e sem config.app_key; somente kind dropbox), google_drive_not_configured (sem a conta de serviço do screenRIG e sem chave; somente kind google_drive), resource_conflict ou idempotency_mismatch. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar sincronizações de mídia no projeto
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
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| cursor | consulta | opcional | O next_cursor da página anterior. |
| account_id | consulta | opcional | Lista apenas as sincronizações que leem por esta conta. |
| estado | consulta | opcional | Lista apenas as sincronizações neste estado. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-syncs'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | As sincronizações do projeto. | MediaSyncList (application/json); cabeçalhos: Cache-Control |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar sincronização de mídia no projeto
provider canva: lê o design (design é o id dele ou o endereço canva.com/design/ID/...) por uma conta do Canva conectada e armazena a sincronização, que vence agora.
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.
Um design que o Canva não mostra mais interrompe a sincronização no estado error (erro de execução design_unavailable) e mantém a mídia.
Um design ou página que a conta não consegue ver é 409 media_sync_source_refused. provider dropbox: url é o endereço da pasta no Dropbox (https://www.dropbox.com/home/...), um link de pasta compartilhada que a conta conectada adicionou ao seu Dropbox, ou um caminho que começa com /; ele é lido uma vez por meio de uma conta do Dropbox conectada e a sincronização é armazenada, com execução prevista para agora.
As pastas em um espaço de equipe são lidas a partir da raiz da equipe. Cada execução continua a partir da posição salva do Dropbox na pasta, então apenas as alterações são lidas.
Uma pasta que a conta não consegue abrir é 409 media_sync_source_refused; uma conta cuja conexão o Dropbox não honra mais é 409 dropbox_reconnect_required. provider google_drive: url é o endereço da pasta no Google Drive (https://drive.google.com/drive/folders/ID) ou o id dela, compartilhada (a função Viewer basta) com o service_account_email da conta.
Cada execução lista a pasta e compara o checksum de cada arquivo. Os arquivos do Google Docs, Sheets e Slides são ignorados como unsupported_type. Uma pasta que o endereço não consegue abrir é 409 media_sync_source_refused.
Pela conta de serviço do screenRIG, a pasta precisa ser compartilhada por um membro do projeto com e-mail verificado ou pertencer a ele (403 media_sync_sharer_not_member), e cada execução verifica isso de novo (o erro de execução sharer_not_member interrompe a sincronização no estado error). provider sharepoint: lê o endereço da pasta por meio da conta (um endereço de site do SharePoint como https://TENANT.sharepoint.com/sites/SITE/LIBRARY/FOLDER, ou um link de compartilhamento; o aplicativo precisa conseguir vê-lo: Sites.Selected precisa de uma concessão no site, um link de compartilhamento precisa de Files.Read.All) e armazena a sincronização, com execução prevista para agora. folder_id é a pasta de mídia para onde os arquivos vão; sem ele, a sincronização cria uma com o nome da pasta de origem.
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
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| provider (obrigatório, string) | Permitido: "sharepoint", "canva", "dropbox", "google_drive" |
| account_id (obrigatório, string) | Uma conta do tipo do provedor: microsoft365 para sharepoint, canva, dropbox ou google_drive. |
| url (opcional, string) | sharepoint (obrigatório): o endereço da pasta no SharePoint ou um link de compartilhamento, lido uma vez para encontrar a pasta e não armazenado. dropbox (obrigatório): o endereço da pasta no Dropbox, um link de pasta compartilhada que a conta adicionou, ou um caminho que começa com /. google_drive (obrigatório): o endereço da pasta no Google Drive ou o id dela. maxLength: 4096 |
| design (opcional, string) | canva (obrigatório): o id do design ou o endereço dele canva.com/design/ID/... maxLength: 2048 |
| pages (opcional, array) | canva: as páginas a sincronizar; omita para todas. Um design que depois tiver menos páginas tira de reprodução as que faltam. |
| format (opcional, string) | canva: png gera uma imagem por página; mp4 um vídeo das páginas. Allowed: "png", "mp4" default: "png" |
| folder_id (opcional, string) | A pasta de mídia onde os arquivos caem. Omita para criar uma com o nome da pasta de origem. |
| every (opcional, inteiro) | Segundos entre execuções; o padrão é 900. minimum: 300 maximum: 86400 |
| nome (opcional, string) | Por padrão, o nome da pasta de origem. minLength: 1 maxLength: 80 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criada, vence agora. | MediaSync (application/json); cabeçalhos: ETag, Cache-Control |
| 400 | invalid_request. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — o plano do projeto não inclui a sincronização de mídia; required_plan nomeia o plano que a inclui. | Problema (application/problem+json) |
| 403 | media_sync_sharer_not_member — uma pasta do Google Drive lida pela conta de serviço do screenRIG que nenhum membro do projeto com e-mail verificado compartilhou nem possui. | Problema (application/problem+json) |
| 409 | media_sync_source_refused (o provedor recusou o aplicativo, a permissão dele ou a pasta), dropbox_reconnect_required (a conta do Dropbox precisa ser conectada de novo), dropbox_not_configured, google_drive_not_configured, resource_conflict (a mesma origem já está sincronizada nessa pasta de mídia) ou idempotency_mismatch. | Problema (application/problem+json) |
| 500 | media_sync_source_unavailable: não foi possível acessar o provedor ou ele respondeu com uma falha. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar links da frota no projeto
Lista os links da frota do projeto, do mais antigo para o mais recente (no máximo 50). Abaixo de Gerenciar efetivo, cada URL está vazia e url_redacted é true, pois a URL cria telas.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/fleet-links'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Os links da frota do projeto. | FleetLinkList (application/json); cabeçalhos: Cache-Control |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar link de frota no projeto
Cria um link de frota: uma URL do Player (https://play.<domain>/player/#fleet=<secret>) que transforma cada dispositivo que a abre em sua própria tela neste projeto, sem código de pareamento. Coloque-o em um gerenciador de dispositivos, como um app quiosque do Google Admin console.
Cada nova tela recebe as tags, os campos e a playlist do link, e um rótulo do dispositivo (primeiro o ID de ativo do administrador, depois a localização), ou então o próximo rótulo padrão. Um player que já possui uma tela nunca cria outra: sua chave mantém a identidade da tela entre recarregamentos e reinicializações.
Após uma restauração de fábrica ou reinstalação, um dispositivo que reporta o número de série ou DUID de uma tela que um link de frota deste projeto criou recupera essa tela (screen.recovered) em vez de criar uma nova, uma vez que a chave antiga ficou silenciosa por dez minutos.
O segredo viaja no fragmento da URL, que os navegadores nunca enviam a um servidor. max_screens limita as telas que o link cria e expires_at encerra o link nesse momento, assim como desativá-lo. Uma organização tem no máximo 50 links de frota em todos os seus projetos (fleet_link_limit_reached). Registra fleet_link.created.
Uma nova tentativa exata com a mesma Idempotency-Key retorna esta mesma resposta por vinte e quatro horas.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| label (obrigatório, string) | minLength: 1 maxLength: 80 |
| habilitado (opcional, boolean) | Padrão para verdadeiro. |
| tags (opcional, ScreenTags) | Tags do seletor de frota, de 0 a 16 tags únicas exatas, cada uma correspondendo à gramática de tags de mídia. No ScreenPatch o array substitui o conjunto inteiro e um array vazio o limpa; uma tag duplicada ou malformada é invalid_request. Alterar tags aumenta a revisão da tela (If-Match a protege) e anexa screen.updated com details.tags; nunca altera a revisão do manifesto. Tags nunca estão no manifesto de tempo de execução e nunca na autorização. |
| fields (opcional, objeto) | Campos com que cada tela criada pelo link começa; os posicionamentos de cards os leem por {screen.field.NAME}. |
| playlist_id (opcional, string) | |
| max_screens (opcional, inteiro) | mínimo: 1 máximo: 10000 |
| expires_at (opcional, string) | Quando o link expira (RFC 3339); um link além desse momento não cria nem recupera telas. Ausente significa que nunca expira. Um horário que já passou é aceito e expira o link imediatamente. format: "date-time" |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criado, com sua URL. | FleetLink (application/json); cabeçalhos: Cache-Control |
| 400 | invalid_request, incluindo um playlist_id desconhecido ou uma tag ou campo malformado. | Problema (application/problem+json) |
| 409 | fleet_link_limit_reached ou idempotency_mismatch. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar webhooks no projeto
Lista as notificações de webhook do projeto no formato de webhook, mais antigas primeiro (no máximo 50); GET /api/notifications lista todos os canais. O segredo de assinatura nunca é retornado aqui. Exige a capacidade de projeto; uma credencial somente de relatórios é recusada com 403 forbidden, porque a resposta inclui URLs de receptores.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/webhooks'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Os webhooks do projeto. | WebhookList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar webhook no projeto
Cria um webhook que recebe os próprios eventos duráveis do projeto como POSTs HTTPS assinados. A URL deve ser https em um host público da Internet: um literal IP ou toda resposta DNS atual do nome deve ser pública (privada, loopback, link-local, CGNAT, IPv6 fora de 2000::/3, documentação e outras faixas reservadas são recusadas com webhook_url_rejected).
A porta deve ser 443 (padrão) ou 8443, caso contrário webhook_url_rejected. O host é resolvido e verificado novamente antes de cada entrega e a conexão é feita exatamente para o endereço verificado, então uma resposta DNS que muda depois não pode redirecionar entregas. event_types lista tipos exatos de eventos (screen.online) ou prefixos terminando em .* (screen.*).
Uma organização tem no máximo 50 notificações, em todos os canais (webhook_limit_reached). O servidor gera o segredo de assinatura e o retorna apenas nesta resposta e em rotate-secret; guarde-o. Repetir a requisição exatamente igual, com o mesmo Idempotency-Key, retorna esta mesma resposta, com o segredo, por vinte e quatro horas.
A entrega começa com o primeiro evento depois de notification.created.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| url (obrigatório, string) | URL https em um host público na Internet, porta 443 (padrão) ou 8443. Sem informações de usuário ou fragmento. maxLength: 2048 formato: "uri" |
| event_types (obrigatório, WebhookEventTypes) | Tipos de evento exatos, como screen.online, ou prefixos terminados em .*, como screen.* (todo tipo que começa com screen.). notification.test nunca é distribuído por uma assinatura; é enviado apenas por POST /api/webhooks/{id}/test. |
| habilitado (opcional, boolean) | padrão: true |
| descrição (opcional, string) | maxLength: 200 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criado. O segredo é mostrado apenas aqui e na rotação do segredo. | WebhookWithSecret (application/json); cabeçalhos: Cache-Control |
| 400 | invalid_request ou webhook_url_rejected. | Problema (application/problem+json) |
| 409 | webhook_limit_reached, idempotency_mismatch ou resource_conflict quando o projeto não pertence a nenhuma organização. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar alertas no projeto
Lista os alertas de tela do projeto: um por tela e condição enquanto ela durar (open), e os que terminaram dentro da retenção de eventos do plano (resolved).
Um alerta é aberto quando chega o evento de sua condição (screen.offline, uma mudança de saúde display_disconnected, temperature_high ou on_battery, screen.storage_shortfall, um screen.manifest_upgrade travado, um screen.status_changed de nível error, um screen.glass_changed com veredito travado, em branco ou congelado) e é resolvido pelo evento que a encerra; crashing é um aviso, não um alerta. counts.attention conta os alertas abertos que não estão reconhecidos, adiados nem silenciados, o número que o dashboard mostra.
Uma tela que reinicia por causa de um reinício enviado pelo backend não abre alerta screen_offline nem display_disconnected até que o reinício termine ou dez minutos depois de enviado; uma condição que ainda se mantém então abre seu alerta nesse momento. Os alertas abertos vêm primeiro, os mais recentes antes; passe next_cursor de volta como antes para a próxima página.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| formato | consulta | opcional | json (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas). |
| estado | consulta | opcional | |
| screen_id | consulta | opcional | |
| before | consulta | opcional | next_cursor da página anterior. |
| limite | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/alerts'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uma página de alertas. | AlertList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar silenciamentos de alerta no projeto
Lista os silenciamentos do projeto que não terminaram, começando pelo que termina primeiro (no máximo 50).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/alert-mutes'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Os silenciamentos vigentes do projeto. | AlertMuteList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar silenciamento de alerta no projeto
Silencia telas para manutenção até um instante no máximo 30 dias à frente: as telas nomeadas em screen_ids e toda tela que tenha alguma das tags listadas em tags no momento em que um aviso deve ser enviado. Os alertas delas continuam sendo abertos e resolvidos, marcados como muted, e nunca precisam de atenção; os avisos de todas as notificações sobre elas são ignorados (muted).
Uma organização tem no máximo 50 silenciamentos vigentes em todos os seus projetos (alert_mute_limit_reached). Registra alert_mute.created.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| screen_ids (opcional, array) | |
| tags (opcional, ScreenTags) | Tags do seletor de frota, de 0 a 16 tags únicas exatas, cada uma correspondendo à gramática de tags de mídia. No ScreenPatch o array substitui o conjunto inteiro e um array vazio o limpa; uma tag duplicada ou malformada é invalid_request. Alterar tags aumenta a revisão da tela (If-Match a protege) e anexa screen.updated com details.tags; nunca altera a revisão do manifesto. Tags nunca estão no manifesto de tempo de execução e nunca na autorização. |
| until (obrigatório, string) | No máximo 30 dias à frente. format: "date-time" |
| note (opcional, string) | maxLength: 200 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criada. | AlertMute (application/json) |
| 409 | alert_mute_limit_reached ou idempotency_mismatch. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar notificações no projeto
Lista as notificações da organização que cobrem o projeto, de todos os canais, mais antigas primeiro (no máximo 50). status, failing_since, last_success_at e last_failure_at são deste projeto. O segredo de assinatura de um webhook nunca é retornado aqui.
Exige a capacidade de projeto; uma credencial somente de relatórios é recusada com 403 forbidden, porque a resposta inclui URLs de receptores e destinatários.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notifications'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | As notificações do projeto. | NotificationList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar notificação no projeto
Cria uma notificação. channel email envia para recipients (owner, ou user_ids dos membros do projeto); channel webhook faz POST, assinado, para url, que segue as regras de URL de webhook (https em um host da Internet pública, porta 443 ou 8443, senão webhook_url_rejected). conditions lista as mudanças de estado da tela em que ela dispara; uma notificação por e-mail precisa de pelo menos uma, um webhook precisa de conditions ou event_types. screen_tags limita conditions a telas com qualquer uma dessas tags; vazio significa todas as telas, ou audience diz quais telas nas regras de um público-alvo de campanha. min_severity e severity filtram e classificam os avisos, e active_hours retém ou descarta os avisos fora de suas janelas.
Uma condição só notifica depois de durar hold_minutes (padrão 10), e um aviso de resolução é enviado quando ela se normaliza depois de um aviso enviado. A notificação cobre somente este projeto; uma organização tem no máximo 50 notificações, sem contar as padrão que o sistema cria (notification_limit_reached).
O segredo de assinatura de um webhook é gerado pelo servidor e retornado apenas nesta resposta e em rotate-secret; guarde-o. Repetir a requisição exatamente igual, com o mesmo Idempotency-Key, retorna esta mesma resposta, com o segredo, por vinte e quatro horas. Os avisos começam com o primeiro evento depois de notification.created.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| channel (obrigatório, string) | Permitidos: "email", "webhook", "slack", "teams", "pagerduty", "telegram" |
| descrição (opcional, string) | Um nome para pessoas. maxLength: 200 |
| conditions (opcional, NotificationConditions) | |
| screen_tags (opcional, ScreenTags) | Tags do seletor de frota, de 0 a 16 tags únicas exatas, cada uma correspondendo à gramática de tags de mídia. No ScreenPatch o array substitui o conjunto inteiro e um array vazio o limpa; uma tag duplicada ou malformada é invalid_request. Alterar tags aumenta a revisão da tela (If-Match a protege) e anexa screen.updated com details.tags; nunca altera a revisão do manifesto. Tags nunca estão no manifesto de tempo de execução e nunca na autorização. |
| audience (opcional, CampaignAudience) | Quais telas uma campanha segmenta: exatamente um entre all (toda regra corresponde), any (ao menos uma corresponde), tag (a tela tem a tag), screen_id (essa tela) ou folder (as telas dessa pasta de telas e de toda pasta dentro dela, GET /api/screen-folders; a pasta deve existir). As regras se aninham em no máximo 3 níveis e um público-alvo tem no máximo 500 regras. {"all": []} é toda tela do projeto; nos demais casos, all e any listam ao menos uma regra. |
| min_severity (opcional, NotificationSeverity) | A severidade de um aviso, da menos severa para a mais severa. Um aviso aberto tem a severidade de sua condição: error para screen_offline e warning para toda outra condição, a menos que a severidade da notificação diga o contrário. Um aviso de resolvido e um teste são info. Permitidos: "info", "warning", "error" |
| severity (opcional, NotificationSeverityOverrides) | Condição para severidade nesta notificação, como {"not_playing": "error"}. Conta para min_severity e é a severidade que Teams e PagerDuty mostram para a condição. Uma condição não listada mantém seu padrão. Em um patch, um objeto vazio, como null, limpa todas as sobrescritas. |
| active_hours (opcional, NotificationActiveHours) | Quando os avisos abertos são enviados: as janelas (screenrig.schedule/v1), lidas em timezone. Um aviso que vence enquanto elas estão fechadas espera a próxima abertura (outside hold, o padrão) e é enviado então se sua condição ainda se mantiver, de modo que uma condição que termina antes não envia nada, ou é ignorado (outside drop; last_error outside_hours). Um aviso de resolvido para um aviso aberto que foi enviado sempre é enviado, dentro do horário ou não, e um teste o ignora. crashing é retido ou descartado como qualquer outra condição. O horário julga um aviso quando ele sai pela primeira vez; um que falhou é repetido no cronograma habitual, qualquer que seja o horário. Adicionar, alterar ou remover o horário faz com que os avisos retidos pelo antigo sejam julgados de novo na hora. |
| reach_drop (opcional, NotificationReachDrop) | A menor queda no alcance de uma campanha para a qual um aviso reach_dropped é enviado: screens é o menor número de telas perdidas (padrão 1) e percent, quando definido, a menor parcela das telas que a campanha alcançava quando foi publicada; uma queda precisa atender aos dois. Uma queda menor não enfileira aviso, e um aviso enfileirado cuja queda diminuiu abaixo do limite até a hora do envio é ignorado (condition_cleared). Somente com a condição reach_dropped; em uma notificação sem ela, invalid_request. |
| hold_minutes (opcional, integer) | Por quanto tempo uma condição precisa durar antes de notificar. crashing nunca é retido. default: 10 minimum: 0 maximum: 1440 |
| recipients (opcional, NotificationRecipients) | Somente para e-mail. owner (quem for o proprietário do projeto no momento em que um aviso é enviado) ou o user_id de uma pessoa que seja membro do projeto; um user_id que não seja de um membro retorna invalid_request. Cada um recebe o e-mail no endereço verificado. Quem já saiu do projeto ou não tem endereço verificado é ignorado. |
| url (opcional, string) | Somente webhook: URL https em um host público da internet, porta 443 (o padrão) ou 8443. Sem userinfo nem fragmento. maxLength: 2048 format: "uri" |
| event_types (opcional, NotificationEventTypes) | Somente webhook. Eventos do projeto também enviados por POST à medida que acontecem, exatamente como um webhook os envia: tipos exatos, como screen.online, ou prefixos terminados em .*, como screen.*. notification.test nunca é distribuído. |
| destination (opcional, NotificationDestination) | Somente Slack, Teams, PagerDuty e Telegram; obrigatório para eles. A credencial na forma em que o serviço a emite: slack, a URL do webhook de entrada (hooks.slack.com); teams, a URL do webhook do Workflows (logic.azure.com ou powerplatform.com; as URLs de conector do Office 365 foram aposentadas); pagerduty, a chave de roteamento do Events API v2 de 32 caracteres; telegram, o token do bot. Outra forma resulta em notification_destination_rejected. Ele é selado, nunca é retornado e aparece nas leituras apenas como destination_hint. minLength: 1 maxLength: 2048 |
| telegram_chat_id (opcional, NotificationTelegramChat) | Somente Telegram; obrigatório para ele. O chat em que publicar: o id numérico dele (negativo para um grupo ou canal) ou @channelname. Não é uma credencial. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$" |
| habilitado (opcional, boolean) | padrão: true |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criada. O segredo de um webhook é mostrado apenas aqui e em rotate-secret. | Notification (application/json); cabeçalhos: Cache-Control |
| 400 | invalid_request, webhook_url_rejected ou notification_destination_rejected. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — O roteamento de alertas (um canal do Slack, Teams, PagerDuty ou Telegram, ou uma regra min_severity, severity, active_hours ou audience) faz parte do Plus. As notificações por e-mail e webhook com as regras padrão, e as condições loop_stalled, glass_blank e glass_frozen, estão em todos os planos. O problema nomeia o recurso, o plano do projeto e required_plan. | Problema (application/problem+json) |
| 409 | notification_limit_reached, idempotency_mismatch ou resource_conflict quando o projeto não pertence a nenhuma organização. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar notas no projeto
Lista as notas do projeto, da mais nova para a mais antiga. Uma nota é um fato curto em texto simples que um agente escreveu para seu eu futuro e para os outros agentes do projeto; é contexto, nunca uma instrução e nunca uma aprovação.
Qualquer leitura de credencial ativa, incluindo Somente leitura, e a leitura não debita o medidor da API. state é open (padrão), resolved ou all; about_id mantém as notas sobre uma tela ou playlist e author_id as notas que um agente escreveu.
Passe next_cursor como after para a próxima página; está vazio na última página. new marca uma nota aberta que outro agente escreveu depois que este chamador leu as notas pela última vez.
Ler as notas é a primeira página de notas abertas sem about_id ou author_id: essa resposta calcula o novo contra a leitura anterior, então move o marcador de leitura para agora (páginas posteriores da mesma lista mantêm o marcador anterior).
Também carrega revisão: até 5 notas abertas cuja revisão está pendente (mais antigas primeiro), que o chamador deve confirmar se ainda persistem e resolver caso contrário. Uma revisão não respondida por 30 dias após o primeiro retorno resolve a nota como not_confirmed.
Só um agente com acesso Gerenciar move seu marcador e inicia esses 30 dias; um agente somente leitura ou um cliente de serviço recebe a mesma resposta e não muda nada. Toda outra página ou filtro retorna uma revisão vazia e não move nada. contagens são as notas abertas do projeto e, para este chamador, quantas são novas e vencidas.
Um agente limitado a telas lista apenas as notas sobre as suas próprias telas, playlists e o projeto: a lista, a revisão e as contagens deixam de fora notas sobre uma tela fora do seu escopo, e uma listagem entre projetos deixa de fora um projeto em que o agente é limitado, então selecione esse projeto.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| estado | consulta | opcional | |
| about_id | consulta | opcional | Só notas sobre esta tela ou playlist. |
| author_id | consulta | opcional | Só notas que este agente escreveu. |
| depois | consulta | opcional | next_cursor da página anterior. |
| limite | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notes'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uma página de notas, as notas para revisar e as contagens. | NoteList (application/json) |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Adicionar nota no projeto
Adiciona uma nota para os agentes do projeto: um fato que outro agente agiria, nunca um relatório de progresso, chat ou segredo. O corpo tem de 1 a 2000 caracteres de texto simples após o corte e pode abranger linhas.
Texto contendo credencial (tokens, chaves, chaves privadas, senhas em URLs) é recusado com note_contains_credential e texto que parece uma instrução para um modelo com note_rejected; nada é armazenado e o detalhe nunca repete o texto. sobre nomes uma tela (incluindo arquivada) ou playlist do projeto, caso contrário not_found. ttl_seconds (3600 a 31536000) cria uma nota temporária que se resolve como expirada; uma nota sem isso aparece para revisão 90 dias após ser adicionada ou confirmada pela última vez. substitui nomes uma nota aberta que esta substitui: é resolvida como substituída na mesma transação (note_not_open quando já está resolvida).
Um corpo cujo texto normalizado (aparado, com espaços colapsados e em minúsculas) e cujo campo about correspondem a uma nota aberta confirma essa nota e a retorna com 200 em vez de adicionar uma; nenhum evento note.added é acrescentado. Uma organização mantém no máximo 200 notas abertas em todos os seus projetos; a 201ª é note_limit_reached, cujo detalhe nomeia até 5 notas para resolver primeiro.
Anexa note.added (e note.resolved para uma nota substituída) sem o texto. Uma repetição exata com a mesma Idempotency-Key retorna a primeira resposta por vinte e quatro horas.
Para um agente limitado a telas (docs/screen-scope.md), um about que é uma tela fora do seu escopo ou desconhecida para o projeto, ou um replaces que nomeia uma nota sobre uma tela fora do seu escopo, é outside_screen_scope (403) e nada é armazenado.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| body (obrigatório, string) | Texto simples, de 1 a 2000 caracteres após aparar; quebras de linha são mantidas. minLength: 1 maxLength: 2000 |
| sobre (opcional, em linha) | |
| ttl_seconds (opcional, inteiro) | Expire a nota este tempo após ser adicionada. Sem isso, a nota é revisada após 90 dias. mínimo: 3600 máximo: 31536000 |
| substitui (opcional, string) | Uma nota aberta que esta substitui; ela é resolvida como substituída. padrão: "^(?:(?:stage|qa|development)_)?nte_[A-Za-z0-9_-]{16,24}$" |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Adicionado. | Nota (application/json) |
| 200 | O texto correspondeu a uma nota aberta, que é confirmada e retornada. | Nota (application/json) |
| 400 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 403 | outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida. | Problema (application/problem+json) |
| 404 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 409 | note_not_open, note_limit_reached ou idempotency_mismatch. | Problema (application/problem+json) |
| 422 | note_contains_credential ou note_rejected. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Status do suporte no projeto
Disponibilidade e horários para qualquer projeto ativo. chat_allowed é verdadeiro para todo projeto ativo, incluindo Standard. human_available é verdadeiro quando uma pessoa pode entrar no chat a pedido (Education, Premium e Enterprise); Standard e Plus têm documentação e suporte por IA. staffed indica se a equipe está em seu horário agora. Luna responde na hora em todos os planos.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/support/status'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do suporte. | SupportStatus (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar conversas de suporte no projeto
Conversas do projeto, mais recentes primeiro, no máximo 100. Contagens de não lidas da equipe são por pessoa ou agente autenticado.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| before | consulta | opcional | ID da conversa do cursor próximo da página anterior. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/support/conversations'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Resultado do suporte. | SupportConversationList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Criar conversa de suporte no projeto
Disponível em todos os planos; Luna responde primeiro, na hora. Onde uma pessoa pode entrar (human_available no status do suporte), pedir uma pessoa pausa Luna para a equipe; no Standard e no Plus o pedido é ignorado e Luna responde. Verificado antes do armazenamento ou Slack.
Uma mensagem inicial com menos de 8 caracteres ou 3 palavras retorna submission_too_short; uma que não seja uma pergunta ou problema retorna submission_unclear; spam, texto com muitos links, injeção de prompt e texto inseguro retornam submission_rejected. Texto rejeitado não é mantido nem enviado para Luna, e o detalhe do problema nunca o repete.
Texto com formato de credencial que não seja credenciais ScreenRig (tokens bearer, chaves de nuvem e API, chaves privadas) é substituído por [redigido] antes do armazenamento; material de credencial ScreenRig retorna invalid_request. Uma nova conversa inicia um único tópico no Slack; acompanhamentos permanecem nele. Solicitações com a mesma chave são repetidas por 24 horas, incluindo recusa.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | obrigatório |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| body (obrigatório, string) | minLength: 1 maxLength: 4000 |
| human_requested (opcional, booleano) | Pedir uma pessoa, o que pausa Luna e aguarda a equipe. Só conta onde uma pessoa pode entrar (human_available: Education, Premium e Enterprise); no Standard e no Plus é ignorado e Luna responde. padrão: falso |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Resultado do suporte. | SupportSubmission (application/json) |
| 422 | A mensagem foi recusada pela triagem: submission_too_short ou submission_unclear (apenas a mensagem inicial) ou submission_rejected. O detalhe nunca repete o texto. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Listar avaliações no projeto
As revisões do projeto (docs/reviews.md): mudanças de playlist e tela propostas sob acesso Propor, e para uma rede de anúncios os criativos enviados pelos compradores (tipo ad_creative).
Mais recentes primeiro, no máximo limit (padrão 50, no máximo 100) por página; passe next_cursor de volta como cursor com os mesmos filtros. state pending (padrão), decided (todos os outros estados) ou all; kind restringe a um tipo.
Uma sessão do painel lê todos os tipos; um portador lê os tipos que suas capacidades cobrem (playlists para playlist_change, telas para screen_change, publicidade para ad_creative), e um tipo que não pode ler é uma página vazia. pending_count conta as revisões pendentes de todos os tipos que o chamador vê.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| estado | consulta | opcional | |
| kind | consulta | opcional | |
| limite | consulta | opcional | |
| cursor | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/reviews'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Uma página de avaliações. | ReviewList (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Projeto Scoped_get Dados do Cartão
Retorna o documento e sua revisão. O ETag é a revisão, para If-Match na próxima gravação.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
| key | caminho | obrigatório | Chave de dados do cartão. Não pode começar com feed:. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data/KEY'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Documento de dados do cartão | CardDataEntry (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Projeto Scoped_put Dados do Cartão
Cria ou substitui um documento de dados de cartão. Quando colocações de cartão nas playlists do projeto vinculam a chave, o documento deve conter apenas as propriedades dinâmicas de cada cartão vinculado e validar contra elas; caso contrário, a gravação é recusada com card_data_invalid nomeando o cartão e o caminho da propriedade, e nada muda. Uma chave sem colocações vinculadas aceita qualquer objeto JSON.
Cada string que começa com media: é uma referência de mídia, media:<id>, para um cartão desenhar (uma foto); em qualquer chave deve nomear uma imagem pronta e aprovada neste projeto, no máximo 256 mídias distintas por documento, ou a gravação é recusada com card_media_invalid nomeando o caminho da propriedade e media_id.
Telas cujo conteúdo lê a chave podem então buscar esses mídias via GET /media/{media_id}. Telas exibindo um posicionamento que lê a chave recebem screen.card_data_changed e buscam novamente no local; o log do projeto registra kv.updated com um recurso card_data_entry, que nunca chega a um Player.
Limites, cotas, medição, revisões e idempotência são do armazenamento K/V da aplicação.
As gravações de agentes e webhooks também têm limite de taxa, por organização conforme o plano (Standard e Plus 60 por minuto, Education e Premium 600, Enterprise 3.000) e 60 por minuto por chave em todos os planos; uma gravação acima do limite é recusada com rate_limited e Retry-After, e não é medida.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
| key | caminho | obrigatório | Chave de dados do cartão. Não pode começar com feed:. |
| If-Match | cabeçalho | opcional | Revisão positiva opcional do recurso. Omitir para criar ou sobrescrever uma chave; uma revisão obsoleta fornecida é revision_conflict. |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| documento (obrigatório, objeto) | O documento de dados do cartão: um objeto JSON de no máximo 1 MiB. Quando um posicionamento de cartão vincula a chave, ela mantém apenas as propriedades dinâmicas daquele cartão. Uma string que começa com media: é uma referência de mídia, media:<id>, nomeando uma imagem pronta e aprovada neste projeto. |
| expires_at (opcional, string) | Expiração absoluta; dados omitidos nunca expiram. formato: "date-time" |
| ttl_seconds (opcional, inteiro) | TTL a partir da primeira gravação confirmada. Mutuamente exclusivo com expires_at. Uma nova tentativa preserva a expiração original. Omitir os dois limpa a expiração. Dimensione-o pelo horário de quem grava: quando o documento de um cartão expira sem nenhuma gravação para renová-lo enquanto uma tela mostra o cartão, o cartão fica em branco e a condição de notificação card_data_stale avisa o projeto, então um job que parou é notado. minimum: 1 maximum: 31536000 |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Documento de dados do cartão | CardDataEntry (application/json) |
| 429 | Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais. | Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Projeto Scoped_delete Dados do Cartão
Exclui um documento de dados do cartão. Um cartão vinculado à chave fica oculto na tela até que um documento seja escrito novamente.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
| key | caminho | obrigatório | Chave de dados do cartão. Não pode começar com feed:. |
| If-Match | cabeçalho | opcional | Revisão positiva opcional do recurso. Omitir para escrever o recurso atual; uma revisão obsoleta fornecida é revision_conflict. |
| Idempotency-Key | cabeçalho | opcional | Omitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente. |
Modelo e respostas da solicitação
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data/KEY'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 204 | Excluído | sem corpo |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Projeto Scoped_get Feed
Lê um documento de feed compartilhado de terceiros: o mesmo documento que um cartão embutido com os mesmos parâmetros lê (docs/feeds.md).
Os parâmetros de consulta são normalizados na chave de feed do cartão, nomeada pelo cabeçalho ScreenRig-Feed-Key: weather, airquality e alerts recebem lat e lon (arredondados para uma célula de 0,25 grau); earthquakes lat, lon, radius_km (10 a 20000, 500 por padrão), min_magnitude (0 a 9, 2,5 por padrão) e hours (1 a 168, 24 por padrão); cyclones basins (separados por vírgula at, ep, cp, wp; todos por padrão) e opcionalmente lat, lon e radius_km (as tempestades perto desse lugar); tides station (um ID de estação de previsão de marés da NOAA, como 9414290) ou lat e lon (a estação mais próxima em 100 km, senão invalid_request); launches nenhum parâmetro (os próximos lançamentos no mundo todo); rates base (uma moeda de referência do BCE, EUR por padrão); crypto symbols (IDs da CoinGecko ou tickers, separados por vírgula, no máximo 20) e currency (usd por padrão); headlines url (uma URL RSS ou Atom http ou https); drugalerts (screenrig.drugalerts/v1) os relatórios de recall recentes de um país: country (us, ca ou gb, obrigatório) e category (drug, o padrão, ou food); respiratory (screenrig.respiratory/v1) a atividade semanal de gripe, COVID-19 e VSR de um lugar: country (us ou gb, obrigatório) e region (um estado, território ou DC dos EUA por nome ou código postal, ou a Inglaterra ou uma região da UKHSA; o país quando vazio).
A solicitação nunca chama o provedor. 200 é o documento (esquema, fetchedAt, atribuição e os campos da família, conforme definido pelo contrato dos cards); seu ETag é o sha256 dos bytes e If-None-Match responde 304; Cache-Control max-age vai até a próxima busca agendada. 202 significa que ainda não há documento: a demanda registrada de leitura, e o feed worker busca a chave em cerca de um minuto (Retry-After).
Uma leitura de API mantém uma chave buscada por 24 horas. Uma organização registra no máximo 50 novas chaves por dia em todos os seus projetos (rate_limited além disso). Uma família sem fonte nesta implantação responde not_found.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
| família | caminho | obrigatório | A família do feed. |
| lat | consulta | opcional | |
| lon | consulta | opcional | |
| radius_km | consulta | opcional | |
| min_magnitude | consulta | opcional | terremotos: a menor magnitude. |
| horas | consulta | opcional | terremotos: a janela em horas. |
| basins | consulta | opcional | ciclones: separados por vírgula em at, ep, cp, wp. |
| station | consulta | opcional | tides: um ID de estação de previsão de marés da NOAA, como 9414290. Sem ele, lat e lon escolhem a estação mais próxima em 100 km. |
| base | consulta | opcional | |
| símbolos | consulta | opcional | |
| moeda | consulta | opcional | |
| url | consulta | opcional | |
| country | consulta | opcional | drugalerts: us, ca ou gb. respiratory: us ou gb. Os dois exigem. |
| category | consulta | opcional | drugalerts: drug (padrão) ou food. |
| region | consulta | opcional | respiratory: um estado, território ou DC dos EUA por nome ou código postal, ou a Inglaterra ou uma região da UKHSA; o país quando vazio. |
| If-None-Match | cabeçalho | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feeds/FAMILY'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Documento de feed | FeedDocument (application/json); cabeçalhos: ETag, ScreenRig-Feed-Key |
| 202 | Nenhum documento ainda; o worker do feed busca a chave na próxima passagem. | FeedPending (application/json); cabeçalhos: Retry-After, ScreenRig-Feed-Key |
| 304 | O documento corresponde a If-None-Match. | sem corpo |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Projeto Scoped_list Inventário Publicitário Associado
Inventário optado e slots reutilizáveis dentro da associação do chamador. Nunca expõe capturas de tela, playlists ou dados de projeto do vendedor.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
| seller_project_id | caminho | obrigatório |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Inventário e slots permitidos. | AdvertisingJoinedInventory (application/json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Projeto Scoped_get Agente Atual
Retorna a instalação do agente vinculada ao portador do projeto que chama, além de connection_ready. Um projeto está pronto quando pelo menos um membro tem passkey ou senha. O status de identidade é diagnóstico e não debita o medidor da API.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/agents/self'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Prontidão da conexão do agente e projeto atuais. | AgentSelfStatus (application/json); cabeçalhos: Cache-Control |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
Projeto Scoped_disconnect Agente Atual
Revoga apenas a associação do projeto que está fazendo a chamada e seu token de projeto, preservando a identidade global, outras associações, projeto e conteúdo. Repetir com o mesmo portador revogado criptograficamente válido é uma operação sem efeito com sucesso. Desconectar o último agente ativo retorna agent_lockout_risk, a menos que allow_last_agent seja explícito. Não debita o medidor da API.
Um JWT de acesso de agente, incluindo Somente leitura, desconecta o agente do projeto do seu token; a associação termina, o consentimento do projeto deixa os grants do agente e esse par identidade/projeto é cortado para tokens de acesso mais antigos. Outros projetos no token continuam funcionando. Uma nova tentativa com o mesmo JWT após a desconexão é um sucesso sem efeito.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| project_id | caminho | obrigatório | |
| ScreenRig-Project | cabeçalho | opcional | Obsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token. |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| allow_last_agent (opcional, booleano) | Aceita explicitamente a perda do último portador ativo do agente. Uma passkey de dashboard registrada permanece autoridade administrativa independente. padrão: falso |
Modelo e respostas da solicitação
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'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 204 | Agente desconectado. | sem corpo; cabeçalhos: Cache-Control |
| 401 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| 409 | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |
| padrão | Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico. | Problema (application/problem+json) |