OpenAPI YAMLOpenAPI JSONproblemas YAMLVisão geral da API
Este grupo tem 22 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.
Dados do cartão para cartões integrados
Listar tipos de cartões
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 |
|---|---|---|---|
| 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/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) |
Obter tipo de cartão
Os JSON Schemas autocontidos da versão major atual para os params de posicionamento e os documentos de dados do card, o esquema do feed, o nível, os layouts permitidos e um posicionamento de exemplo. Os params marcados como dynamic vêm do documento de dados quando um posicionamento vincula uma chave de dados.
Um parâmetro string pode conter {screen.name}, {screen.timezone} e {screen.field.NAME}, e um parâmetro de localização pode ser a string {screen.location}; o backend os expande para cada tela. Substitua os valores de conteúdo de exemplo antes de publicar. IDs desconhecidos respondem com card_not_found (404).
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 GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/card-types/RESOURCE_ID'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Esquemas de propriedades do cartão e exemplo de posicionamento | CardDetails (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 cartões
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| projeto | consulta | opcional | |
| depois | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/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
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/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) |
Obter cartão
Um UID global de cartão, ou um segmento de tipo de catálogo obsoleto. Este último adiciona cabeçalhos de Depreciação e Aviso apontando para /api/card-types.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| 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://api.screenrig.ai/api/cards/RESOURCE_ID'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Recurso do cartão | inline (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) |
Patch Card
If-Match compara opcionalmente a revisão dos metadados do cartão (não a revisão dos dados); omissão atualiza a revisão atual. Idempotency-Key vincula o método, UID, parâmetros e If-Match por 24 horas. Uma tentativa repete o resultado gravado, incluindo 204 após exclusão; entrada alterada retorna idempotency_mismatch. If-Match obsoleto retorna revision_conflict (412).
As chaves são limitadas ao UID do cartão.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | 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 |
|---|---|
| params (obrigatório, objeto) |
Modelo e respostas da solicitação
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/cards/RESOURCE_ID'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Recurso do cartão | CardInstance (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 cartão
If-Match compara opcionalmente a revisão dos metadados do cartão (não a revisão dos dados); omissão atualiza a revisão atual. Idempotency-Key vincula o método, UID, parâmetros e If-Match por 24 horas. Uma tentativa repete o resultado gravado, incluindo 204 após exclusão; entrada alterada retorna idempotency_mismatch. If-Match obsoleto retorna revision_conflict (412).
As chaves são limitadas ao UID do cartão.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| id | caminho | obrigatório | |
| Idempotency-Key | cabeçalho | 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. |
Modelo e respostas da solicitação
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' 'https://api.screenrig.ai/api/cards/RESOURCE_ID'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) |
Obter dados da instância
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| 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://api.screenrig.ai/api/cards/RESOURCE_ID/data'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Recurso 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) |
Colocar dados da instância
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| id | caminho | obrigatório | |
| If-Match | cabeçalho | opcional | |
| Idempotency-Key | cabeçalho | opcional |
Campos do corpo da solicitação
| Campo | Descrição |
|---|---|
| documento (obrigatório, objeto) |
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/cards/RESOURCE_ID/data'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Recurso 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) |
Listar webhooks de cartão
Lista os webhooks de entrada do cartão, do mais antigo para o mais recente (no máximo 20). Os segredos nunca são retornados aqui.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| id | caminho | obrigatório |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/cards/RESOURCE_ID/kv-webhooks'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Os webhooks do cartão. | CardKVWebhookList (application/json) |
| 404 | card_not_found — o cartão não está neste projeto. | 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 webhook de cartão
Cria um webhook que grava o documento de dados deste cartão: um sistema externo envia um corpo JSON ou de formulário para a url dele (POST /api/cards/{id}/kv-webhooks/{webhook_id}/write).
Sem mapeamento, o objeto postado é o documento; um modelo de mapeamento o monta a partir do corpo e é verificado ao salvar. signing true também exige um cabeçalho ScreenRig-Signature. verify faz a assinatura própria de um fornecedor (GitHub, Stripe, Shopify, Slack, Linear, Vercel, Asana ou qualquer remetente HMAC) autenticar uma postagem no lugar do segredo, que continua funcionando ao lado; ele não pode ser combinado com signing, e o segredo dele é selado e nunca devolvido, só uma dica dele. handshake nomeia um handshake de fornecedor que a url responde (Microsoft Graph, monday.com, Trello ou Azure Event Grid; verify slack e asana respondem ao deles).
A resposta é o único lugar em que aparecem o segredo e o segredo de assinatura (junto com rotate-secret e a atualização que ativa a assinatura): guarde-os imediatamente no sistema remetente. Um cartão tem no máximo 20 webhooks (kv_webhook_limit_reached). Adiciona kv_webhook.created.
Uma nova tentativa idêntica com a mesma Idempotency-Key retorna a mesma resposta, incluindo os segredos, por vinte e quatro horas.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| 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 |
|---|---|
| descrição (opcional, string) | maxLength: 200 |
| key_template (opcional, string) | Modelo opcional de chave de dados de cartão com {screen.field.NAME}. No modo por chaves, o mapeamento ou o corpo enviado produz {documents:[{fields:{NAME:VALUE},document:{...}}]}; cada saída usa seus campos para preencher o modelo. As chaves devem ser únicas, válidas e externas aos espaços de nomes de instâncias de cartão e feeds. Cada saída é verificada de acordo com seu cartão antes do início das gravações. Uma string vazia restaura o modo de documento único ao atualizar. |
| mapping (opcional, inline) | O modelo, de no máximo 64 KiB, verificado ao salvar. |
| signing (opcional, boolean) | padrão: false |
| verify (opcional, WebhookVerifyWrite) | Um fornecedor cuja própria assinatura autentica uma postagem no lugar do segredo, porque esses fornecedores não conseguem enviar o nosso. O cabeçalho e o esquema de cada um são do próprio fornecedor e fixos: github envia X-Hub-Signature-256, sha256= e o HMAC-SHA256 hexadecimal do corpo; stripe envia Stripe-Signature, t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<body>"> (vários v1 enquanto um segredo é trocado, t em até cinco minutos); shopify envia X-Shopify-Hmac-Sha256, o HMAC-SHA256 do corpo em base64; slack envia X-Slack-Signature, v0= e o HMAC-SHA256 hexadecimal de "v0:<X-Slack-Request-Timestamp>:<body>" (em até cinco minutos); linear envia Linear-Signature, o HMAC-SHA256 hexadecimal do corpo, e o membro webhookTimestamp do corpo (milissegundos Unix) deve estar dentro de um minuto; vercel envia x-vercel-signature, o HMAC-SHA1 hexadecimal do corpo; asana envia X-Hook-Signature, o HMAC-SHA256 hexadecimal do corpo com o X-Hook-Secret do handshake do Asana como chave; generic_hmac é qualquer remetente que assine com HMAC-SHA256 no cabeçalho que você nomear. Uma postagem que traz uma assinatura válida é aceita sem o segredo, e o segredo continua funcionando ao lado. verify não pode ser combinado com signing. Uma postagem é julgada pelo corpo como chegou, antes de gastar qualquer orçamento de taxa. O Slack e o Asana também respondem aos handshakes deles (veja WebhookHandshake). |
| handshake (opcional, WebhookHandshake) | Um handshake de fornecedor que a URL responde, para um fornecedor sem esquema de assinatura aqui. microsoft_graph responde a um POST que traz um parâmetro de consulta validationToken devolvendo o token decodificado como text/plain. monday responde a um POST JSON de {"challenge": "..."} com o mesmo JSON. trello responde à sua verificação HEAD com 200. azure_event_grid responde a um SubscriptionValidationEvent (aeg-event-type: SubscriptionValidation) com {"validationResponse": "<validationCode>"}. verify.vendor slack responde ao desafio url_verification assinado do Slack, e verify.vendor asana responde ao handshake X-Hook-Secret do Asana e guarda esse segredo para verificar os eventos dele. Um handshake só é respondido para um webhook configurado para esse fornecedor, não grava nada, nunca é cobrado e não gasta orçamento de taxa, e é registrado no registro de entregas com o resultado handshake. Um webhook desativado não responde a nenhum. Permitido: "microsoft_graph", "monday", "trello", "azure_event_grid" |
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/cards/RESOURCE_ID/kv-webhooks'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 201 | Criado, com sua URL, seu segredo e, se assina, seu segredo de assinatura. | CardKVWebhookWithSecrets (application/json); headers: Cache-Control |
| 400 | invalid_request, incluindo um mapeamento que não compila (errors[0].field indica o lugar nele). | Problema (application/problem+json) |
| 404 | card_not_found — o cartão não está neste projeto. | Problema (application/problem+json) |
| 409 | kv_webhook_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) |
Atualizar webhook de cartão
Altera description, mapping (null o remove), enabled, signing, verify (null o remove; sem segredo, mantém o armazenado quando o fornecedor é o mesmo) e handshake (null o remove). Ligar signing responde o novo signing_secret uma única vez; false o desliga. Um webhook desativado responde a cada postagem como a um segredo errado. Acrescenta kv_webhook.updated.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| id | caminho | obrigatório | |
| webhook_id | caminho | obrigatório | O id de um dos webhooks chave/valor do aplicativo. |
| 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) | maxLength: 200 |
| key_template (opcional, string) | Modelo opcional de chave de dados de cartão com {screen.field.NAME}. No modo por chaves, o mapeamento ou o corpo enviado produz {documents:[{fields:{NAME:VALUE},document:{...}}]}; cada saída usa seus campos para preencher o modelo. As chaves devem ser únicas, válidas e externas aos espaços de nomes de instâncias de cartão e feeds. Cada saída é verificada de acordo com seu cartão antes do início das gravações. Uma string vazia restaura o modo de documento único ao atualizar. |
| mapping (opcional, inline) | Substitui o modelo; null o remove. |
| habilitado (opcional, boolean) | |
| signing (opcional, boolean) | |
| verify (opcional, em linha) | Substitui a verificação do fornecedor; null a remove, e o segredo dela junto. Sem segredo, mantém o armazenado quando o fornecedor é o mesmo, de modo que um cabeçalho ou uma janela pode mudar sozinho; um fornecedor diferente precisa do próprio segredo. Uma verificação asana só aceita um novo handshake depois de removida e definida de novo. |
| handshake (opcional, em linha) | Define o handshake que a URL responde; null o remove. |
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/cards/RESOURCE_ID/kv-webhooks/WEBHOOK_ID'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | O webhook, com signing_secret quando esta requisição ativou a assinatura. | CardKVWebhookWithSecrets (application/json); headers: Cache-Control |
| 400 | invalid_request, incluindo um mapeamento que não compila. | Problema (application/problem+json) |
| 404 | card_not_found ou not_found — o webhook não está neste cartão. | 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) |
Excluir webhook de cartão
Exclui o webhook. A URL dele deixa de funcionar imediatamente; o cartão mantém o documento. Adiciona kv_webhook.deleted.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| id | caminho | obrigatório | |
| webhook_id | caminho | obrigatório | O id de um dos webhooks chave/valor do aplicativo. |
| 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/cards/RESOURCE_ID/kv-webhooks/WEBHOOK_ID'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 204 | Excluído. | sem corpo |
| 404 | card_not_found ou not_found — o webhook não está neste cartã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) |
Rotacionar segredo de webhook de cartão
Substitui o segredo do webhook e retorna o novo uma única vez; com signing true, substitui o segredo de assinatura. O antigo deixa de funcionar imediatamente. Adiciona kv_webhook.secret_rotated.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| id | caminho | obrigatório | |
| webhook_id | caminho | obrigatório | O id de um dos webhooks chave/valor do aplicativo. |
| 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 |
|---|---|
| signing (opcional, boolean) | 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/cards/RESOURCE_ID/kv-webhooks/WEBHOOK_ID/rotate-secret'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | O webhook com o novo segredo ou o novo segredo de assinatura. | CardKVWebhookWithSecrets (application/json); headers: Cache-Control |
| 400 | invalid_request — signing true em um webhook que não assina. | Problema (application/problem+json) |
| 404 | card_not_found ou not_found — o webhook não está neste cartã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 entregas de webhook de cartão
O registro de entregas do webhook, das mais recentes para as mais antigas, no máximo 100, guardado por sete dias.
Cada postagem que nomeou este webhook é uma linha com a hora, o resultado (written, unchanged, refused, invalid ou handshake), o motivo (credentials, signature, signature_missing, signature_invalid, timestamp_missing, timestamp_stale, secret_pending, handshake_invalid, disabled, body, mapping, card_data_invalid, rate_limited, payment_required, internal), um detalhe curto, como o caminho dos dados do cartão que falhou, o status da resposta, o tamanho do corpo e o número de partes de arquivo que uma postagem multipart trazia (ignoradas).
Nenhum corpo, cabeçalho ou credencial é armazenado. É aqui que um projeto vê por que uma postagem recebeu o 404 que toda recusa compartilha.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| id | caminho | obrigatório | |
| webhook_id | caminho | obrigatório | O id de um dos webhooks chave/valor do aplicativo. |
| limite | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/cards/RESOURCE_ID/kv-webhooks/WEBHOOK_ID/deliveries'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | As entregas. | KVWebhookDeliveryList (application/json) |
| 404 | card_not_found ou not_found — o webhook não está neste cartã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) |
Receber webhook de cartão
A URL para a qual um sistema externo envia o documento de dados de um cartão. Ela se autentica com o segredo próprio do webhook no cabeçalho Authorization: Bearer <secret>, ou HTTP Basic com o ID do webhook como nome de usuário.
Quando o webhook foi criado com verify, uma assinatura válida no cabeçalho próprio desse fornecedor (veja WebhookVerifyWrite) autentica a postagem no lugar do segredo, que continua funcionando ao lado.
Quando o webhook assina, também é exigido ScreenRig-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>" under the signing secret>, e t deve estar a no máximo cinco minutos do relógio do servidor.
Um cartão ou webhook desconhecido, um segredo ou uma assinatura errados ou ausentes, um carimbo de data e hora vencido, um webhook desativado e todo GET recebem o mesmo 404 not_found; o projeto vê o motivo no registro de entregas.
Um webhook configurado para um handshake de fornecedor o responde primeiro, antes de qualquer credencial ser pedida, a uma solicitação que é esse handshake: o desafio url_verification do Slack (assinado, respondido com o desafio), o validationToken do Microsoft Graph (devolvido como text/plain), o X-Hook-Secret do Asana (devolvido e guardado selado como o segredo de assinatura dos eventos dele), o challenge do monday.com, o SubscriptionValidationEvent do Azure Event Grid (respondido com o validationResponse dele) e a verificação HEAD do Trello (a operação head desta url).
Um handshake não grava dados de cartão, nunca é cobrado e não gasta orçamento de taxa, e é registrado no registro de entregas com o resultado handshake.
O corpo, de no máximo 1 MiB, é JSON, application/x-www-form-urlencoded (um nome repetido é um array) ou multipart/form-data (cada campo de texto é body.<field>, um nome repetido é um array, e as partes de arquivo são ignoradas e contadas no registro de entregas). Sem mapeamento, o objeto é o documento; com um, o modelo o monta a partir de body e query.
O documento é verificado como os dados do cartão (card_data_invalid nomeia o caminho), e um igual ao documento atual não é gravado (status unchanged). Uma postagem aceita é uma requisição de API cobrada e acrescenta os eventos de dados do cartão. Idempotency-Key (8 a 200 caracteres) deduplica as novas tentativas de um remetente por vinte e quatro horas.
No máximo 120 postagens por minuto por webhook; cada uma também conta para as taxas de gravação da organização e do cartão (PUT /api/card-data/{key}).
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| id | caminho | obrigatório | |
| webhook_id | caminho | obrigatório | O id de um dos webhooks chave/valor do aplicativo. |
| 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. |
| ScreenRig-Signature | cabeçalho | opcional | t=<unix seconds>,v1=<hex HMAC-SHA256 over "<t>.<raw body>">; obrigatório quando o webhook assina. |
Modelo e respostas da solicitação
curl --request POST --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/cards/RESOURCE_ID/kv-webhooks/WEBHOOK_ID/write'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | Se o documento do cartão mudou, ou a resposta ao handshake de um fornecedor. | CardKVWebhookWriteResult (application/json); headers: RateLimit-Policy, RateLimit, Cache-Control |
| 400 | invalid_request — o corpo é grande demais, está vazio, não é JSON nem um formulário, ou o mapeamento falhou nele. | Problema (application/problem+json) |
| 402 | payment_required — o projeto foi excluído. Um envio nunca é recusado por causa do saldo do projeto. | Problema (application/problem+json) |
| 404 | not_found — a única resposta a cada envio recusado e a cada GET. | Problema (application/problem+json) |
| 409 | idempotency_mismatch ou card_data_invalid — o cartão recusou o documento; errors[0].field indica o caminho. | 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) |
Head Card KVWebhook
A verificação que o Trello faz de um novo webhook. Ela responde 200 sem corpo para um webhook cujo handshake é trello, e o único 404 not_found para qualquer outro webhook, endereço e solicitação, então um visualizador de links não descobre nada. Ela não grava nada, nunca é cobrada e não gasta orçamento de taxa; a verificação respondida fica no registro de entregas com o resultado handshake.
Todo GET responde o 404 e não lê nada.
Parâmetros
| Nome | Enviar | Obrigatório? | Descrição |
|---|---|---|---|
| id | caminho | obrigatório | |
| webhook_id | caminho | obrigatório | O id de um dos webhooks chave/valor do aplicativo. |
Modelo e respostas da solicitação
curl --request HEAD 'https://api.screenrig.ai/api/cards/RESOURCE_ID/kv-webhooks/WEBHOOK_ID/write'Respostas
| Status | Significado | Corpo e cabeçalhos |
|---|---|---|
| 200 | O webhook responde ao handshake do Trello. | sem corpo; cabeçalhos: Cache-Control |
| 404 | not_found — a única resposta a qualquer outra solicitaçã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 dados de cartões
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 |
|---|---|---|---|
| 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. |
| depois | consulta | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/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) |
Obter 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 |
|---|---|---|---|
| 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]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/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) |
Colocar 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 |
|---|---|---|---|
| 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/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) |
Excluir 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 |
|---|---|---|---|
| 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/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) |
Obter 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); cap (screenrig.cap/v1) os alertas CAP que correspondem a uma tela: url (repetível, até 5 URLs de alerta CAP ou de índice ATOM/RSS), public (lê também os feeds públicos que cobrem lat e lon; o padrão quando não há url), lat e lon, geocode (códigos de área NAME:VALUE repetíveis), min_severity, max_severity, min_urgency, min_certainty, event, exclude_event, sender, status (Actual por padrão), scope (Public por padrão), language (repetível, em ordem de preferência) e area_unknown (hide ou show); 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); almanac (screenrig.almanac/v1) as datas comemorativas, os eventos de On This Day, o sol e a lua de uma data para o cartão today: country (um código ISO 3166-1 alfa-2, para os feriados dele), language (uma edição de On This Day: ar, bs, cs, de, en, es, fr, it, pt, ru, sv, tr, uk ou zh; en por padrão), opcionalmente lat e lon (arredondados para uma célula de 0,1 grau, para o sol) e date (um dia fixo; por padrão os dias em torno de hoje); outdoorsafety (screenrig.outdoorsafety/v1) o calor para o cartão outdoor-safety, uma estimativa da temperatura de bulbo úmido e globo, a partir de lat e lon (a célula de 0,25 grau do clima); ele não informa raios; departures (screenrig.departures/v1) as próximas partidas em uma a quatro paradas de um provedor de dados abertos: provider (tfl, entur ou digitransit) e stops (IDs separados por vírgula, no máximo 4: IDs StopPoint da TfL, IDs de local de parada ou plataforma NSR da Entur, gtfsIds da Digitransit), reunidos em um único painel na ordem de partida e consultados a cada minuto; bikeshare (screenrig.bikeshare/v1) as estações de bicicletas compartilhadas GBFS mais próximas de lat e lon (arredondados para uma célula de 0,001 grau, cerca de 100 m), cada uma com a distância até essa célula, a partir de system (um ID de sistema listado) ou, sem ele, do sistema listado mais próximo que cobre o lugar (invalid_request em system onde nenhum cobre).
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 |
|---|---|---|---|
| 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 | manchetes: a URL do feed. limite: repetir até 5 vezes. |
| público | consulta | opcional | |
| geocódigo | consulta | opcional | cap: NOME:VALOR, repetível (UGC:WAC033). |
| min_severity | consulta | opcional | |
| max_severity | consulta | opcional | |
| min_urgency | consulta | opcional | |
| min_certainty | consulta | opcional | |
| evento | consulta | opcional | cap: repetível; * corresponde a qualquer sequência de caracteres. |
| exclude_event | consulta | opcional | |
| remetente | consulta | opcional | |
| status | consulta | opcional | |
| escopo | consulta | opcional | |
| language | consulta | opcional | |
| area_unknown | consulta | opcional | |
| country | consulta | opcional | drugalerts: us, ca ou gb; respiratory: us ou gb (os dois exigem). almanac: o país ISO 3166-1 alfa-2 cujos feriados o documento lista. |
| 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. |
| date | consulta | opcional | almanac: um dia fixo em vez dos dias em torno de hoje. |
| provider | consulta | opcional | departures: o provedor de transporte das paradas. |
| stops | consulta | opcional | departures: de um a quatro IDs de parada, separados por vírgula (TfL 940GZZLUOXC, Entur NSR:StopPlace:337 ou NSR:Quay:568, Digitransit HSL:1040129). |
| system | consulta | opcional | bikeshare: um ID de sistema GBFS listado; sem ele, o sistema listado mais próximo que cobre lat e lon. |
| If-None-Match | cabeçalho | opcional |
Modelo e respostas da solicitação
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/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) |