OpenAPI YAMLOpenAPI JSONproblemi YAMLPanoramica dell’API
Questo gruppo ha 9 operazioni, generate da api/openapi.yaml. Filtra per percorso, azione o autenticazione. Ogni endpoint elenca i suoi input; espandilo per vedere un modello di richiesta e i codici di risposta. I modelli richiedono i tuoi valori e un corpo valido secondo lo schema.
Sostituisci i segnaposto maiuscoli con i tuoi valori. Per una richiesta JSON, salva un corpo che corrisponde allo schema in request.json. Gli esempi di cookie usano un cookie jar locale da una sessione autenticata.
Connessioni: l’accesso riutilizzabile di un progetto a Microsoft e Google
Elencare le connessioni
Elenca le connessioni del progetto, le più recenti per prime, al massimo 200 per pagina; restituisci next_cursor come after per la successiva.
Una connessione è l’accesso riutilizzabile del progetto a Microsoft o a Google per le origini che funzionano senza supervisione: un’origine dati microsoft365 o google_calendar, una connessione Power BI e un account di sincronizzazione dei media SharePoint ne indicano una in config.connection_id invece di portare credenziali proprie (docs/connections.md).
Un segreto, una chiave o un token di aggiornamento non viene mai restituito: secret indica se ne è conservato uno e un indizio che non è segreto. Una lettura non porta mai un link di consenso.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| dopo | query | opzionale | next_cursor della pagina precedente della stessa lista, con gli stessi filtri. Omettere inizia dalla riga più recente. Un valore che non è tale cursore è invalid_request. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una pagina di connessioni. | ConnectionList (application/json); intestazioni: Cache-Control |
| 400 | invalid_request, compreso un cursore malformato. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Creare una connessione
Crea una connessione a Microsoft (provider microsoft) o a Google (provider google). La modalità own_app è l’app propria del cliente: per Microsoft, config.tenant_id (l’ID della directory o il dominio principale; common, organizations e consumers vengono rifiutati), config.client_id e secret (il valore di uno dei segreti client dell’app); per Google, secret è il file di chiave JSON dell’account di servizio.
Il segreto è sigillato e non viene mai restituito. La modalità screenrig_app usa l’app propria di screenRIG e non accetta né config né secret: la connessione viene creata pending_consent e la risposta porta consent_url, un link monouso (valido fino a consent_expires_at) per la persona che lo completa.
Per Microsoft è un amministratore Microsoft 365, che dà il consenso all’app di screenRIG per il tenant; il browser poi accede al tenant che Microsoft indica, così la connessione registra il tenant confermato, mai uno che un callback si limita a dichiarare.
Per Google è il titolare dell’account, che concede l’accesso in sola lettura ai calendari che l’account può vedere; screenRIG conserva sigillato il token di aggiornamento e l’indirizzo dell’account. Il link è una credenziale di un solo consenso: invialo solo a quella persona.
Un server senza l’app di screenRIG per il provider risponde 409 connection_app_not_configured, e le connessioni own_app continuano a funzionare. Un’organizzazione ha al massimo 50 connessioni in tutti i suoi progetti (connection_limit_reached). Aggiunge connection.created.
Un nuovo tentativo identico con la stessa Idempotency-Key restituisce la stessa connessione (un nuovo tentativo screenrig_app riceve un nuovo link di consenso, che sostituisce il primo).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| Idempotency-Key | intestazione | opzionale | Ometti per un’operazione fresca. Fornisci e riutilizza una chiave per deduplicare i retry; la CLI gestisce automaticamente le chiavi. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| provider (obbligatorio, stringa) | Consentito: "microsoft", "google" |
| mode (obbligatorio, stringa) | Consentito: "own_app", "screenrig_app" |
| nome (obbligatorio, stringa) | minLength: 1 maxLength: 80 |
| config (opzionale, ConnectionConfigWrite) | Microsoft, modalità own_app: entrambi i membri. Non accettato per una connessione Google né per la modalità screenrig_app. |
| secret (opzionale, stringa) | Modalità own_app. Microsoft: il valore di uno dei segreti client dell’app (non il suo ID; al massimo 1024 caratteri), con config.tenant_id e config.client_id. Google: il file di chiave JSON dell’account di servizio, per intero (al massimo 16384 byte). Sigillato all’arrivo e mai restituito; la CLI lo legge da un file o da stdin, mai da un argomento. Non accettato in modalità screenrig_app. minLength: 1 maxLength: 16384 |
Modello richiesta e risposte
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'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creata. Una connessione in modalità screenrig_app porta consent_url e consent_expires_at. | ConnectionConsent (application/json); intestazioni: ETag, Location, Cache-Control |
| 400 | invalid_request, che indica il campo non valido. | Problema (application/problem+json) |
| 409 | connection_app_not_configured (questo server non ha un’app di screenRIG per il provider), connection_limit_reached o idempotency_mismatch. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Ottenere una connessione
Una connessione, con il suo stato, il suo ultimo errore e il suo ultimo test.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una connessione. | Connection (application/json); intestazioni: ETag, Cache-Control |
| 404 | not_found. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Aggiornare una connessione
Modifica il nome di una connessione o, in modalità own_app, le sue credenziali: config.tenant_id e config.client_id (Microsoft) oppure secret (un segreto inviato sostituisce quello sigillato; uno omesso viene conservato). Una connessione in modalità screenrig_app può solo essere rinominata: collegala di nuovo (POST /api/connections/{id}/connect) per cambiare chi ha dato il consenso.
Una modifica delle credenziali riporta la connessione a ready, cancella last_error e last_test e ritira ogni token emesso per le vecchie credenziali. Aggiunge connection.updated. If-Match protegge la revisione.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| id | path | obbligatorio | |
| If-Match | intestazione | opzionale | Revisione positiva opzionale della risorsa. Ometti per scrivere la risorsa corrente; una revisione obsoleta fornita è revision_conflict. |
| Idempotency-Key | intestazione | opzionale | Ometti per un’operazione fresca. Fornisci e riutilizza una chiave per deduplicare i retry; la CLI gestisce automaticamente le chiavi. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (opzionale, stringa) | minLength: 1 maxLength: 80 |
| config (opzionale, ConnectionConfigWrite) | Microsoft, modalità own_app: entrambi i membri. Non accettato per una connessione Google né per la modalità screenrig_app. |
| secret (opzionale, stringa) | Sostituisce il segreto o la chiave memorizzati; omettilo per conservare quello memorizzato. Solo modalità own_app. minLength: 1 maxLength: 16384 |
Modello richiesta e risposte
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'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | La connessione aggiornata. | Connection (application/json); intestazioni: ETag, Cache-Control |
| 400 | invalid_request, che indica il campo non valido; config e secret non si applicano a una connessione in modalità screenrig_app. | Problema (application/problem+json) |
| 404 | not_found. | Problema (application/problem+json) |
| 412 | revision_conflict. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Eliminare una connessione
Elimina una connessione da cui non legge nulla. Finché un’origine dati, una connessione Power BI o un account di sincronizzazione dei media la usa, la risposta è resource_conflict, che li indica (used_by elenca il loro tipo e ID).
L’eliminazione non pone fine al lato del fornitore: un tenant Microsoft 365 mantiene l’app di screenRIG finché il suo amministratore non la rimuove, e un account Google mantiene la sua concessione finché il titolare non la revoca. Aggiunge connection.deleted. If-Match protegge la revisione.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| id | path | obbligatorio | |
| If-Match | intestazione | opzionale | Revisione positiva opzionale della risorsa. Ometti per scrivere la risorsa corrente; una revisione obsoleta fornita è revision_conflict. |
| Idempotency-Key | intestazione | opzionale | Ometti per un’operazione fresca. Fornisci e riutilizza una chiave per deduplicare i retry; la CLI gestisce automaticamente le chiavi. |
Modello richiesta e risposte
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 204 | Eliminato. | nessun corpo |
| 404 | not_found. | Problema (application/problem+json) |
| 409 | resource_conflict, qualcosa legge ancora attraverso la connessione. | Problema (application/problem+json) |
| 412 | revision_conflict. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Testare una connessione
Accede con la connessione e memorizza la risposta come last_test.
Per Microsoft i controlli sono credentials (Microsoft ha emesso un token app per il tenant) e permissions (quali tra Calendars.Read, Sites.Selected, Files.Read.All, Sites.Read.All e Place.Read.All il token dell’app porta; un’app che non ne ha nessuna non supera il controllo, e Sites.Selected da sola è un avviso, perché ogni sito SharePoint richiede una concessione).
Per Google il controllo è credentials: Google ha accettato l’account di servizio o il token di aggiornamento dell’account che ha concesso l’accesso, e la risposta indica l’account a cui i calendari devono essere visibili. Un rifiuto è un controllo fallito e porta la connessione a error con last_error; un successo la riporta a ready.
Non giudica la condivisione di un calendario, una policy di accesso a una casella di posta né una concessione su un sito, cosa che un’origine o una sincronizzazione dimostra quando viene eseguita. Al massimo 30 al minuto per organizzazione.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| id | path | obbligatorio | |
| Idempotency-Key | intestazione | opzionale | Ometti per un’operazione fresca. Fornisci e riutilizza una chiave per deduplicare i retry; la CLI gestisce automaticamente le chiavi. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID/test'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | I controlli. | ConnectionTest (application/json); intestazioni: Cache-Control |
| 404 | not_found. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Collegare una connessione
Crea un nuovo link di consenso monouso (consent_url, valido fino a consent_expires_at) per una connessione in modalità screenrig_app, da inviare alla persona che lo completa: l’amministratore Microsoft 365 o il titolare dell’account Google. Sostituisce qualsiasi link precedente.
Una connessione funzionante resta com’è finché il nuovo consenso non è completato, quindi questo rinnova anche una passata a error (consenso rimosso, accesso revocato) o la sposta su un altro tenant o account. Il link è una credenziale del consenso: invialo solo a quella persona.
Quando la persona ha finito, il browser torna a GET /oauth/connections/{provider}/callback e viene inoltrato alla pagina della connessione nella dashboard, che legge status e last_error. Una connessione in modalità own_app non ha un passaggio di consenso (409 resource_conflict); un server senza l’app di screenRIG per il provider risponde 409 connection_app_not_configured.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| id | path | obbligatorio | |
| Idempotency-Key | intestazione | opzionale | Ometti per un’operazione fresca. Fornisci e riutilizza una chiave per deduplicare i retry; la CLI gestisce automaticamente le chiavi. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID/connect'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | La connessione con un nuovo consent_url. | ConnectionConsent (application/json); intestazioni: ETag, Cache-Control |
| 404 | not_found. | Problema (application/problem+json) |
| 409 | resource_conflict (la connessione è in modalità own_app) o connection_app_not_configured. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Completare il consenso di una connessione Microsoft
Dove Microsoft invia il browser di un amministratore Microsoft 365 dopo la pagina di consenso dell’amministratore (e di nuovo dopo il passaggio di accesso che la segue) per una connessione in modalità screenrig_app.
Non porta alcuna credenziale: lo state firmato nella query è l’unica autorità, viene verificato prima di leggere qualsiasi cosa nomini, e viene rispettato solo finché è il consenso in sospeso della connessione.
Il primo ritorno indica un tenant, che non è autenticato: la risposta è un reindirizzamento all’accesso di quel tenant, il cui codice viene riscattato con il segreto dell’app e un verifier PKCE che solo questo server può derivare, e il tenant che porta il token ID è quello che la connessione registra dopo che un token di credenziali client dimostra che l’app vi detiene le sue autorizzazioni.
Ogni esito dopo uno state verificato reindirizza alla pagina della connessione nella dashboard (/dashboard/connections/{id}?consent=connected o ?consent=failed), che legge status e last_error; il testo dell’errore è costruito da frasi fisse e dalla risposta di errore di Microsoft (il suo codice AADSTS), mai da ciò che la query del callback portava.
Uno state sconosciuto, scaduto, usato, sostituito o di una connessione eliminata mostra una pagina che non indica nulla. Risponde solo sull’host dell’API sotto cui sono registrati i callback.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| stato | query | opzionale | |
| admin_consent | query | opzionale | |
| tenant | query | opzionale | |
| codice | query | opzionale | |
| errore | query | opzionale | |
| error_description | query | opzionale |
Modello richiesta e risposte
curl --request GET 'https://api.screenrig.ai/oauth/connections/microsoft/callback'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 302 | All’accesso di Microsoft per il tenant che ha dato il consenso, oppure alla pagina della connessione nella dashboard. | nessun corpo |
| 200 | Dove non è configurata alcuna dashboard, una pagina che indica che la connessione è completa. | stringa (text/html) |
| 400 | Una pagina che indica che il link è già stato usato o è scaduto, oppure, dove non è configurata alcuna dashboard, perché non è stato collegato nulla. | stringa (text/html) |
| 429 | Troppi callback da questo indirizzo. | nessun corpo |
Completare il consenso di una connessione Google
Dove Google invia il browser del titolare dell’account dopo la pagina di consenso per una connessione in modalità screenrig_app.
Non porta alcuna credenziale: lo state firmato nella query è l’unica autorità, viene verificato prima di leggere qualsiasi cosa nomini, e viene rispettato solo finché è il consenso in sospeso della connessione. screenRIG riscatta il codice con il segreto dell’app e un verifier PKCE che solo questo server può derivare, richiede che lo scope del calendario sia stato concesso (una persona può deselezionarlo nella pagina di consenso) e un token di aggiornamento, legge l’account che ha concesso l’accesso dal token ID restituito da Google in quella chiamata, sigilla il token di aggiornamento e aggiunge connection.connected.
Ogni esito dopo uno state verificato reindirizza alla pagina della connessione nella dashboard (/dashboard/connections/{id}?consent=connected o ?consent=failed), che legge status e last_error. Uno state sconosciuto, scaduto, usato, sostituito o di una connessione eliminata mostra una pagina che non indica nulla.
Risponde solo sull’host dell’API sotto cui sono registrati i callback.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| stato | query | opzionale | |
| codice | query | opzionale | |
| errore | query | opzionale |
Modello richiesta e risposte
curl --request GET 'https://api.screenrig.ai/oauth/connections/google/callback'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 302 | Alla pagina della connessione nella dashboard. | nessun corpo |
| 200 | Dove non è configurata alcuna dashboard, una pagina che indica che la connessione è completa. | stringa (text/html) |
| 400 | Una pagina che indica che il link è già stato usato o è scaduto, oppure, dove non è configurata alcuna dashboard, perché non è stato collegato nulla. | stringa (text/html) |
| 429 | Troppi callback da questo indirizzo. | nessun corpo |