Referência da API

API de Conexões

Conexões: o acesso reutilizável de um projeto à Microsoft e ao Google

Referência HTTP. Gerada a partir do contrato backend. Navegue pelos endpoints abaixo ou baixe o OpenAPI.

Este grupo tem 9 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.

Conexões: o acesso reutilizável de um projeto à Microsoft e ao Google

GET/api/connections

Listar conexões

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.

Uma conexão é o acesso reutilizável do projeto à Microsoft ou ao Google para fontes que rodam sem supervisão: uma fonte de dados microsoft365 ou google_calendar, uma conexão do Power BI e uma conta de sincronização de mídia do SharePoint nomeiam uma em config.connection_id em vez de levar credenciais próprias (docs/connections.md).

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.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
listConnections

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
depoisconsultaopcionalnext_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
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma página de conexões.ConnectionList (application/json); cabeçalhos: Cache-Control
400invalid_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)
POST/api/connections

Criar conexão

Cria uma conexão com a Microsoft (provider microsoft) ou o Google (provider google). O modo own_app é o aplicativo próprio do cliente: para a Microsoft, config.tenant_id (o ID do diretório ou o domínio primário; common, organizations e consumers são recusados), config.client_id e secret (o valor de um dos segredos de cliente do aplicativo); para o Google, secret é o arquivo de chave JSON da conta de serviço.

O segredo é selado e nunca devolvido. O modo screenrig_app usa o aplicativo próprio do screenRIG e não aceita config nem secret: a conexão é criada como pending_consent e a resposta traz consent_url, um link de uso único (válido até consent_expires_at) para a pessoa que o conclui.

Para a Microsoft, é um administrador do Microsoft 365, que dá consentimento ao aplicativo do screenRIG para o tenant; o navegador então faz login no tenant que a Microsoft nomeia, de modo que a conexão registra o tenant confirmado, nunca um que um callback apenas afirme.

Para o Google, é o titular da conta, que concede acesso somente leitura às agendas que a conta pode ver; o screenRIG guarda o token de atualização selado e o endereço da conta. O link é uma credencial de um único consentimento: envie-o somente a essa pessoa.

Um servidor sem o aplicativo do screenRIG para o provedor responde 409 connection_app_not_configured, e as conexões own_app continuam funcionando. Uma organização tem no máximo 50 conexões em todos os seus projetos (connection_limit_reached). Adiciona connection.created.

Uma nova tentativa exata com a mesma Idempotency-Key devolve a mesma conexão (uma nova tentativa de screenrig_app recebe um novo link de consentimento, que substitui o primeiro).

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
ConnectionWrite
ID da operação
createConnection

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto 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-KeycabeçalhoopcionalOmitir 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

CampoDescriçã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
shell · modelo de requisiçã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/connections'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criada. Uma conexão no modo screenrig_app traz consent_url e consent_expires_at.ConnectionConsent (application/json); cabeçalhos: ETag, Location, Cache-Control
400invalid_request, nomeando o campo que não é válido.Problema (application/problem+json)
409connection_app_not_configured (este servidor não tem aplicativo do screenRIG para o provedor), 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)
GET/api/connections/{id}

Obter conexão

Uma conexão, com seu status, seu último erro e seu último teste.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
getConnection

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma conexão.Connection (application/json); cabeçalhos: ETag, Cache-Control
404not_found.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)
PATCH/api/connections/{id}

Atualizar conexão

Altera o nome de uma conexão ou, no modo own_app, as credenciais dela: config.tenant_id e config.client_id (Microsoft) ou secret (um segredo enviado substitui o selado; um omitido é mantido). Uma conexão no modo screenrig_app só pode ser renomeada: conecte-a de novo (POST /api/connections/{id}/connect) para mudar quem deu o consentimento.

Uma mudança nas credenciais devolve a conexão a ready, limpa last_error e last_test e aposenta todos os tokens emitidos para as credenciais antigas. Adiciona connection.updated. If-Match protege a revisão.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
ConnectionPatch
ID da operação
updateConnection

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
idcaminhoobrigatório
If-MatchcabeçalhoopcionalRevisão positiva opcional do recurso. Omitir para escrever o recurso atual; uma revisão obsoleta fornecida é revision_conflict.
Idempotency-KeycabeçalhoopcionalOmitir 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

CampoDescrição
nome (opcional, 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)Substitui o segredo ou a chave armazenados; omita para manter o armazenado. Somente modo own_app. minLength: 1 maxLength: 16384
Modelo e respostas da solicitação
shell · modelo de requisiçã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/connections/RESOURCE_ID'

Respostas

StatusSignificadoCorpo e cabeçalhos
200A conexão atualizada.Connection (application/json); cabeçalhos: ETag, Cache-Control
400invalid_request, nomeando o campo que não é válido; config e secret não se aplicam a uma conexão no modo screenrig_app.Problema (application/problem+json)
404not_found.Problema (application/problem+json)
412revision_conflict.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/api/connections/{id}

Excluir conexão

Exclui uma conexão pela qual nada lê. Enquanto uma fonte de dados, uma conexão do Power BI ou uma conta de sincronização de mídia a usa, a resposta é resource_conflict, nomeando-as (used_by lista o tipo e o ID delas).

Excluir não encerra o lado do fornecedor: um tenant do Microsoft 365 mantém o aplicativo do screenRIG até que o administrador o remova, e uma conta do Google mantém a concessão até que o titular a revogue. Adiciona connection.deleted. If-Match protege a revisão.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
deleteConnection

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
idcaminhoobrigatório
If-MatchcabeçalhoopcionalRevisão positiva opcional do recurso. Omitir para escrever o recurso atual; uma revisão obsoleta fornecida é revision_conflict.
Idempotency-KeycabeçalhoopcionalOmitir 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
shell · modelo de requisição
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID'

Respostas

StatusSignificadoCorpo e cabeçalhos
204Excluído.sem corpo
404not_found.Problema (application/problem+json)
409resource_conflict, algo ainda lê pela conexão.Problema (application/problem+json)
412revision_conflict.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)
POST/api/connections/{id}/test

Testar conexão

Faz login com a conexão e guarda a resposta como last_test.

Para a Microsoft, as verificações são credentials (a Microsoft emitiu um token de aplicativo para o tenant) e permissions (quais entre Calendars.Read, Sites.Selected, Files.Read.All, Sites.Read.All e Place.Read.All o token do aplicativo traz; um aplicativo sem nenhuma delas não passa na verificação, e Sites.Selected sozinha é um aviso, porque cada site do SharePoint precisa de uma concessão).

Para o Google, a verificação é credentials: o Google aceitou a conta de serviço ou o token de atualização da conta que concedeu o acesso, e a resposta nomeia a conta para a qual as agendas devem estar visíveis. Uma recusa é uma verificação que falhou e move a conexão para error com last_error; um sucesso a devolve a ready.

Ela não julga o compartilhamento de uma agenda, uma política de acesso a caixa de correio nem uma concessão de site, o que uma fonte ou sincronização prova quando roda. No máximo 30 por minuto por organização.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
testConnection

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir 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
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID/test'

Respostas

StatusSignificadoCorpo e cabeçalhos
200As verificações.ConnectionTest (application/json); cabeçalhos: Cache-Control
404not_found.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)
POST/api/connections/{id}/connect

Conectar uma conexão

Gera um novo link de consentimento de uso único (consent_url, válido até consent_expires_at) para uma conexão no modo screenrig_app, para enviar à pessoa que o conclui: o administrador do Microsoft 365 ou o titular da conta do Google. Ele substitui qualquer link anterior.

Uma conexão que funciona fica como está até o novo consentimento ser concluído, então isso também renova uma que passou a error (consentimento removido, acesso revogado) ou a move para outro tenant ou conta. O link é uma credencial do consentimento: envie-o somente a essa pessoa.

Quando a pessoa termina, o navegador volta a GET /oauth/connections/{provider}/callback e é encaminhado à página da conexão no dashboard, que lê status e last_error. Uma conexão no modo own_app não tem etapa de consentimento (409 resource_conflict); um servidor sem o aplicativo do screenRIG para o provedor responde 409 connection_app_not_configured.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
connectConnection

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir 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
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID/connect'

Respostas

StatusSignificadoCorpo e cabeçalhos
200A conexão com um novo consent_url.ConnectionConsent (application/json); cabeçalhos: ETag, Cache-Control
404not_found.Problema (application/problem+json)
409resource_conflict (a conexão está no modo own_app) ou connection_app_not_configured.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)
GET/oauth/connections/microsoft/callback

Concluir o consentimento de uma conexão da Microsoft

Para onde a Microsoft envia o navegador de um administrador do Microsoft 365 depois da página de consentimento do administrador (e de novo depois da etapa de login que vem em seguida) para uma conexão no modo screenrig_app.

Ela não leva nenhuma credencial: o state assinado na consulta é a única autoridade, é verificado antes de ler qualquer coisa que ele nomeie e só é aceito enquanto for o consentimento pendente da conexão.

O primeiro retorno nomeia um tenant, que não é autenticado: a resposta é um redirecionamento para o login desse tenant, cujo código é resgatado com o segredo do aplicativo e um verificador PKCE que só este servidor consegue derivar, e o tenant que o token de ID traz é o que a conexão registra depois que um token de credenciais de cliente prova que o aplicativo tem lá as suas permissões.

Todo resultado após um state verificado redireciona para a página da conexão no dashboard (/dashboard/connections/{id}?consent=connected ou ?consent=failed), que lê status e last_error; o texto do erro é montado a partir de frases fixas e da própria resposta de erro da Microsoft (o código AADSTS dela), nunca do que a consulta do callback trazia.

Um state desconhecido, expirado, usado, substituído ou de uma conexão excluída mostra uma página que não nomeia nada. Responde apenas no host da API sob o qual os callbacks estão registrados.

Autenticação
nenhum
Corpo da solicitação
nenhum
ID da operação
completeMicrosoftConnectionConsent

Parâmetros

NomeEnviarObrigatório?Descrição
estadoconsultaopcional
admin_consentconsultaopcional
tenantconsultaopcional
códigoconsultaopcional
erroconsultaopcional
error_descriptionconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET 'https://api.screenrig.ai/oauth/connections/microsoft/callback'

Respostas

StatusSignificadoCorpo e cabeçalhos
302Para o login da Microsoft do tenant que consentiu, ou para a página da conexão no dashboard.sem corpo
200Onde nenhum dashboard está configurado, uma página que diz que a conexão está concluída.string (text/html)
400Uma página que diz que o link já foi usado ou expirou, ou, onde nenhum dashboard está configurado, por que nada foi conectado.string (text/html)
429Callbacks demais deste endereço.sem corpo
GET/oauth/connections/google/callback

Concluir o consentimento de uma conexão do Google

Para onde o Google envia o navegador do titular da conta depois da página de consentimento para uma conexão no modo screenrig_app.

Ela não leva nenhuma credencial: o state assinado na consulta é a única autoridade, é verificado antes de ler qualquer coisa que ele nomeie e só é aceito enquanto for o consentimento pendente da conexão. O screenRIG resgata o código com o segredo do aplicativo e um verificador PKCE que só este servidor consegue derivar, exige que o escopo de agenda tenha sido concedido (a pessoa pode desmarcá-lo na página de consentimento) e um token de atualização, lê a conta que concedeu o acesso no token de ID que o Google devolveu nessa chamada, sela o token de atualização e adiciona connection.connected.

Todo resultado após um state verificado redireciona para a página da conexão no dashboard (/dashboard/connections/{id}?consent=connected ou ?consent=failed), que lê status e last_error. Um state desconhecido, expirado, usado, substituído ou de uma conexão excluída mostra uma página que não nomeia nada.

Responde apenas no host da API sob o qual os callbacks estão registrados.

Autenticação
nenhum
Corpo da solicitação
nenhum
ID da operação
completeGoogleConnectionConsent

Parâmetros

NomeEnviarObrigatório?Descrição
estadoconsultaopcional
códigoconsultaopcional
erroconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET 'https://api.screenrig.ai/oauth/connections/google/callback'

Respostas

StatusSignificadoCorpo e cabeçalhos
302Para a página da conexão no dashboard.sem corpo
200Onde nenhum dashboard está configurado, uma página que diz que a conexão está concluída.string (text/html)
400Uma página que diz que o link já foi usado ou expirou, ou, onde nenhum dashboard está configurado, por que nada foi conectado.string (text/html)
429Callbacks demais deste endereço.sem corpo