API リファレンス

OAuth API

OAuthサインイン、トークン、取り消し

HTTP リファレンス。 バックエンド契約から生成。以下のエンドポイントを参照するか、OpenAPI をダウンロードしてください。

このグループには 10 件のオペレーションがあり、api/openapi.yaml から生成されています。パス、アクション、認証で絞り込めます。各エンドポイントには入力が一覧され、展開するとリクエストテンプレートとレスポンスコードを確認できます。テンプレートには、ご自身の値とスキーマに適合する本文が必要です。

大文字のプレースホルダーをあなたの値に置き換えます。JSONリクエストの場合、request.jsonのスキーマに合うボディを保存します。Cookie例は認証済みセッションのローカルCookieジャーを使用します。

OAuthサインイン、トークン、取り消し

POST/oauth/token

Oauthトークン

OAuth 2.0トークンエンドポイント(RFC 6749 §3.2、エージェントJWT用)。grant_type refresh_tokenは不透明なリフレッシュ認証情報をローテーションします(RFC 9700):使用ごとに新しいペアを返し、request_id(16~200文字)があると正確なリトライは同じレスポンスを返します。認証情報と権限が有効で、後続がまだ現在の場合、経過時間によるリトライ期限なし。

失効したリフレッシュトークンの他の再利用はファミリー全体を取り消します(invalid_grant)。選択されたメンバーシップまたはプロジェクトが削除されると、invalid_scopeと"project_selection_inactive:"で始まるerror_descriptionを返し、リフレッシュ資格情報は消費されません。

GET /api/projects でライブメンバーシップを検出し、以前に同意した選択と交差させ、projects= と新しい request_id で再試行します。この選択エラーのために更新ファミリーを終了しないでください。

要求されたスコープの絞り込みは、各プロジェクトおよびアイデンティティ権限に独立して適用されます。アイデンティティなしの明示的なスコープはアイデンティティ権限を除外します。grant_type urn:ietf:params:oauth:grant-type:token-exchange(RFC 8693)でsubject_token_typeがurn:screenrig:token-type:identity-credentialまたはurn:screenrig:token-type:project-tokenの場合、unsupported_token_typeを返します。レガシー資格情報は廃止され、インストールはscreenrig loginで再サインインします。resource(RFC 8707)はhttps://api.<domain>/apiか省略されます。projectsは最大64の同意済みプロジェクトIDを選択します。

省略はセットが収まる場合のみ全選択します。そうでなければクライアントが部分集合を選択する必要があります。project_id は互換リリース中に一つを選択します。接続アプリの権限は単一リソース https://api.<domain>/mcp を持ち、リフレッシュは省略する場合があります。

クライアントは公開(client_id のみ)か、メタデータで private_key_jwt を宣言し client_assertion_type urn:ietf:params:oauth:client-assertion-type:jwt-bearer と client_assertion(iss と sub は client_id、aud は発行者またはこのエンドポイントを一つの文字列として、exp は iat から5分以内、jti は一度だけ使用、kid はキーの一つを示す;EdDSA、ES256 または RS256)で認証する接続アプリです。grant_type authorization_code は接続アプリのコードを正確な redirect_uri と PKCE code_verifier で60秒以内に交換します。resource は存在しないか許可されたもののみ。二度目の交換はコードが作成した権限を取り消します。grant_type client_credentials はサービスクライアント用で、クライアントアサーション(登録済みキーの一つ)か HTTP Basic(client_secret_basic;本文のシークレットは拒否)で認証し、プロジェクト、audience api または(resource https://api.<domain>/mcp)mcp 用の15分間のサービストークンを受け取り、スコープは能力とアクセスレベル内、リフレッシュトークンなし。クライアントごとに1時間600回。

エラーはRFC 6749 JSON {error, error_description}でCache-Control no-store付きです。サーバーが発行しない場合はtemporarily_unavailable (503)を返します。

レート制限は 429 rate_limited を Retry-After で返します:このエンドポイントおよび失効エンドポイントでクライアントアドレスごとに 1 時間あたり 1200 リクエスト、認可ごとに 1 時間あたり 60 回のリフレッシュ、レガシー認証情報ごとに 1 時間あたり 30 回の交換。grant_type urn:ietf:params:oauth:grant-type:device_code(RFC 8628 §3.4)はデバイスサインインをポーリングします:authorization_pending はユーザーが承認するまで、slow_down は間隔より早くポーリングした場合(その後 5 秒ずつ増加)、access_denied は拒否時、expired_token は 10 分後、その後トークン応答。

新しいインストールはトークンペアを受け取ります。既存のインストールのアクセストークンで開始されたサインインは、その権限に承認されたプロジェクトを追加し、リフレッシュトークンを回転させずにアクセストークンのみを受け取ります。同じdevice_codeを再度ポーリングすると、権限が最初に回転するか10分経過するまで同じ応答が返り、その後invalid_grantになります。

POSTのみ、フォームエンコード、クエリ文字列なし。

認証
なし
リクエスト本文
object
操作ID
oauthToken

リクエスト本文フィールド

フィールド説明
grant_type(必須、文字列)許可:"authorization_code"、"client_credentials"、"refresh_token"、"urn:ietf:params:oauth:grant-type:token-exchange"、"urn:ietf:params:oauth:grant-type:device_code"
client_id(任意、文字列)
client_assertion_type(任意、文字列)許可されている値: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"。
client_assertion(任意、文字列)
code(任意、文字列)
redirect_uri(任意、文字列)
code_verifier(任意、文字列)minLength: 43 maxLength: 128
refresh_token(任意、文字列)
device_code(任意、文字列)
request_id(任意、文字列)minLength: 16 maxLength: 200
subject_token(オプション、文字列)
subject_token_type(オプション、文字列)許可されている値: "urn:screenrig:token-type:identity-credential"、"urn:screenrig:token-type:project-token"。
スコープ(任意、文字列)
リソース(任意、文字列)フォーマット: "uri"
projects(任意、文字列)スペースまたはカンマで区切ったプロジェクトID。設定された上限(デフォルト64)までのすべての同意済みプロジェクトは省略可能です。project_id と併用できません。
project_id(任意、文字列)
リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request POST --header 'Content-Type: application/x-www-form-urlencoded' --data-binary '@request.bin' 'https://api.screenrig.ai/oauth/token'

レスポンス

ステータス意味本文とヘッダー
200トークンレスポンス(RFC 6749 §5.1)。OAuthTokenResponse(application/json)
デフォルトRFC 6749 §5.2 のエラー。OAuthError(application/json)
POST/oauth/device_authorization

Oauthデバイス認証

RFC 8628 §3.1 `screenrig login` のデバイス認証。scope は access:manage(デフォルト)、access:propose または access:read。project_id は承認するプロジェクトを示唆。name、agent_type、platform、version はインストールを記述し、デバイスから報告されたものとして承認者に表示されます。install_source(任意)はインストール元を示し、承認によって作成されるエージェントに保持されます。

Authorization がなければ新しいインストールを開始します。Authorization: Bearer と identity スコープを持つエージェントアクセストークンで、そのインストールの権限にプロジェクトを追加するか、読み取り専用プロジェクトを管理に昇格させるよう要求します。

その人はverification_uri(またはverification_uri_complete)でuser_codeを入力し、ダッシュボードで承認します。デバイスはdevice_codeを使い、指定間隔でトークンエンドポイントをポーリングします。

レート制限は 429 rate_limited を Retry-After で返します:クライアントアドレスごとに 1 時間あたり 10 回、全体で 1 時間あたり 600 回。エンドポイントごとの 1 時間あたり 1200 回の制限もあります。エラーは RFC 6749 の JSON 形式で Cache-Control no-store です。サーバーが発行しない場合は temporarily_unavailable(503)で応答します。POST のみ、フォームエンコード、クエリ文字列なし。

認証
なし
リクエスト本文
object
操作ID
oauthDeviceAuthorization

リクエスト本文フィールド

フィールド説明
client_id(必須、文字列)
スコープ(任意、文字列)許可:"access:manage"、"access:propose"、"access:read"
project_id(任意、文字列)maxLength:200
name(任意、文字列)maxLength: 80
agent_type(任意、文字列)maxLength: 32
プラットフォーム(任意、文字列)maxLength: 80
version(任意、文字列)maxLength: 40
install_source(任意、文字列)

任意。統合のインストール元で、ホスト、およびスラッシュに続けてマーケットプレイス(claude/screenrig、codex/screenrig、grok/screenrig)、または npm のようなホストのみを指定します。欠落している値や形式が正しくない値は無視され、リクエストが失敗することはありません。パターン: "^[a-z][a-z0-9-]{0,31}(/[a-z0-9][a-z0-9._-]{0,63})?$"

リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request POST --header 'Content-Type: application/x-www-form-urlencoded' --data-binary '@request.bin' 'https://api.screenrig.ai/oauth/device_authorization'

レスポンス

ステータス意味本文とヘッダー
200デバイス認証応答(RFC 8628 §3.2)です。オブジェクト(application/json)
デフォルトRFC 6749 §5.2 のエラー。OAuthError(application/json)
GET/oauth/authorize

Oauth認可

OAuth 2.0認可エンドポイント(接続済みアプリ用、MCPクライアント)。client_idはクライアントIDメタデータドキュメントのURL(https、ポート443、リダイレクトなしで取得、最大64KiB、5秒以内、パブリックアドレスのみ)か登録済みクライアントIDです。

リクエストは次の順に検証されます: クライアント、完全一致の redirect_uri(127.0.0.1、[::1]、localhost への http ループバックのリダイレクトは任意のポートで一致)、response_type code、code_challenge と code_challenge_method S256、resource(https://api.<domain>/mcp、保護リソースのメタデータがこのサーバーを示すほかの MCP リソース、または省略)、そして scope(access:read(デフォルト)、access:propose、access:manage と機能名)。

不明なクライアントまたはredirect_uriはHTMLエラーページを返し、リダイレクトしません。後のエラーはredirect_uriにerror、error_description、state、iss(RFC 9207)を付けてリダイレクトします。

成功はダッシュボード同意ページへの303応答です。ここでユーザーはプロジェクト、アクセスレベル(デフォルトは読み取り専用、提案または管理)、機能を選択します。承認はコード、状態、issを含むリダイレクトです。クライアントアドレスごとに1分間に30リクエストまで。

認証
なし
リクエスト本文
なし
操作ID
oauthAuthorize

パラメーター

名前送信する必須?説明
client_idクエリ必須
redirect_uriクエリ必須
response_typeクエリ必須
code_challengeクエリ必須
code_challenge_methodクエリ必須
状態クエリオプション
リソースクエリオプション
スコープクエリオプション
リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request GET 'https://api.screenrig.ai/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&response_type=RESPONSE_TYPE&code_challenge=CODE_CHALLENGE&code_challenge_method=CODE_CHALLENGE_METHOD'

レスポンス

ステータス意味本文とヘッダー
303同意ページへ、またはクライアントのredirect_uriにエラー、state、iss付きで戻ります。本文なし
400不明なクライアントまたは redirect_uri に対する HTML エラーページです。リダイレクトは行いません。string (text/html)
429このアドレスからの認可リクエストが多すぎます。本文なし
POST/oauth/revoke

Oauth取り消し

RFC 7009 の失効処理です。クライアントに発行された不透明なリフレッシュ認証情報(または旧バージョンのリフレッシュ JWT)、またはエージェントアクセス JWT により、その権限が失効し、権限のアクセストークンは数秒以内に拒否されます。不明、期限切れ、または他のトークンも 200 を返します。POST のみ、フォームエンコードです。

認証
なし
リクエスト本文
object
操作ID
oauthRevoke

リクエスト本文フィールド

フィールド説明
client_id(任意、文字列)
client_assertion_type(任意、文字列)許可されている値: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"。
client_assertion(任意、文字列)
トークン(必須、文字列)
token_type_hint(任意、文字列)
リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request POST --header 'Content-Type: application/x-www-form-urlencoded' --data-binary '@request.bin' 'https://api.screenrig.ai/oauth/revoke'

レスポンス

ステータス意味本文とヘッダー
200取り消されたか、取り消すものがありません。本文なし
デフォルトRFC 6749 §5.2 のエラー。OAuthError(application/json)
GET/.well-known/oauth-authorization-server

Oauth認証サーバーメタデータ

エージェント認可サーバーの RFC 8414 認可サーバーメタデータです。

認証
なし
リクエスト本文
なし
操作ID
oauthAuthorizationServerMetadata
リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request GET 'https://api.screenrig.ai/.well-known/oauth-authorization-server'

レスポンス

ステータス意味本文とヘッダー
200メタデータドキュメント。オブジェクト(application/json)
GET/.well-known/oauth-protected-resource/mcp

Oauth保護リソースMCP

/mcp の RFC 9728 保護リソースメタデータです。すべての /mcp 401 の resource_metadata で名前が付けられます。

認証
なし
リクエスト本文
なし
操作ID
oauthProtectedResourceMCP
リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request GET 'https://api.screenrig.ai/.well-known/oauth-protected-resource/mcp'

レスポンス

ステータス意味本文とヘッダー
200メタデータドキュメント。オブジェクト(application/json)
GET/.well-known/oauth-protected-resource/api

Oauth保護リソースAPI

/api の RFC 9728 保護リソースメタデータです。

認証
なし
リクエスト本文
なし
操作ID
oauthProtectedResourceAPI
リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request GET 'https://api.screenrig.ai/.well-known/oauth-protected-resource/api'

レスポンス

ステータス意味本文とヘッダー
200メタデータドキュメント。オブジェクト(application/json)
GET/api/oauth/authorizations/{id}

ダッシュボードOAuth認証を取得

同意ページの接続済みアプリ承認保留:クライアントの名前とドメイン(ロゴは取得しません)、登録クライアントかどうか、リダイレクトホスト、要求されたアクセスレベルと機能。未知、期限切れ、解決済み承認は not_found です。

認証
dashboardSession
リクエスト本文
なし
操作ID
getDashboardOAuthAuthorization

パラメーター

名前送信する必須?説明
IDパス必須
リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/oauth/authorizations/RESOURCE_ID'

レスポンス

ステータス意味本文とヘッダー
200認可。OAuthAuthorization(application/json)
デフォルト

安定した RFC 9457 問題応答。421 server_draining は Retry-After 1秒、500 not_ready または dependency_unavailable は 5秒、500 manifest_degraded は 60秒を持ちます。ハンドラーがより具体的な値を設定していない場合。

問題 (application/problem+json)
POST/api/oauth/authorizations/{id}/approve

ダッシュボード OAuth 承認を承認

新しい証明(oauth_authorization_approval 種類、承認 ID を主題)後に、人物のプロジェクトの1つの接続アプリを承認します:アプリのエージェントID(agent タイプ mcp_client、責任者)、メンバーシップ、選択されたアクセス(読み取りまたは管理;省略は要求レベルを保持しデフォルトは読み取り)と機能(要求のサブセット)を作成し、ページが移動する code、state、iss を含む redirect_uri に応答します。

コードは60秒間有効です。スクリーンに限定されたメンバーは、エージェントの接続、資格情報の発行、プロジェクトのユーザー管理を行えません:outside_screen_scope(プロジェクトオーナーに依頼してください)。

認証
dashboardSession
リクエスト本文
ダッシュボードエージェントアクション
操作ID
approveDashboardOAuthAuthorization

パラメーター

名前送信する必須?説明
IDパス必須

リクエスト本文フィールド

フィールド説明
project_id(必須、文字列)minLength: 1
proof(任意、DashboardProof)
機能(任意、配列)

オプションのエージェント接続および接続済みアプリ承認のみ。省略は要求されたセット全体を承認します。接続の機能の非空部分集合は付与された資格情報を狭めます。それ以外はinvalid_requestです。

user_code(任意、文字列)

デバイスサインイン(フローデバイス)を承認する際に必要です:本人が確認するコードが端末と一致すること。不一致はagent_connection_code_mismatchです。5回目はサインインの有効期限切れ(agent_connection_expired)です。それ以外は無視されます。maxLength:32

アクセス(任意、文字列)

デバイスのサインインまたは接続されたアプリの承認されたアクセスレベル(読み取り専用、提案、管理)。省略時は要求されたレベルを維持。他の接続では無視。レビューを承認できない人は管理を承認できません(403 approver_required)。許可される値:「read」「propose」「manage」

リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/oauth/authorizations/RESOURCE_ID/approve'

レスポンス

ステータス意味本文とヘッダー
200アプリケーションへのリダイレクト。OAuthAuthorizationRedirect(application/json)
403

outside_screen_scope - 呼び出し元がスクリーンに限定されており、リクエストが指定する、または及ぶスクリーン、スクリーンフォルダー、セレクター、対象がその範囲外です(docs/screen-scope.md)。スコープ外のIDと存在しないIDには同じ応答が返されます。errors[0].screen_scope には呼び出し元のスコープが含まれ、書き込みは絞り込まれることなく全体が拒否されます。

問題 (application/problem+json)
デフォルト

安定した RFC 9457 問題応答。421 server_draining は Retry-After 1秒、500 not_ready または dependency_unavailable は 5秒、500 manifest_degraded は 60秒を持ちます。ハンドラーがより具体的な値を設定していない場合。

問題 (application/problem+json)
POST/api/oauth/authorizations/{id}/deny

ダッシュボードOAuth認可を拒否

新しい証明後に接続アプリを拒否し(kind oauth_authorization_denial)、ページが遷移する、error=access_denied、state、iss を含む redirect_uri を返します。スクリーンに限定されたメンバーは、エージェントの接続、資格情報の発行、プロジェクトのユーザー管理を行えません:outside_screen_scope(プロジェクトオーナーに依頼してください)。

認証
dashboardSession
リクエスト本文
ダッシュボードエージェントアクション
操作ID
denyDashboardOAuthAuthorization

パラメーター

名前送信する必須?説明
IDパス必須

リクエスト本文フィールド

フィールド説明
project_id(必須、文字列)minLength: 1
proof(任意、DashboardProof)
機能(任意、配列)

オプションのエージェント接続および接続済みアプリ承認のみ。省略は要求されたセット全体を承認します。接続の機能の非空部分集合は付与された資格情報を狭めます。それ以外はinvalid_requestです。

user_code(任意、文字列)

デバイスサインイン(フローデバイス)を承認する際に必要です:本人が確認するコードが端末と一致すること。不一致はagent_connection_code_mismatchです。5回目はサインインの有効期限切れ(agent_connection_expired)です。それ以外は無視されます。maxLength:32

アクセス(任意、文字列)

デバイスのサインインまたは接続されたアプリの承認されたアクセスレベル(読み取り専用、提案、管理)。省略時は要求されたレベルを維持。他の接続では無視。レビューを承認できない人は管理を承認できません(403 approver_required)。許可される値:「read」「propose」「manage」

リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/oauth/authorizations/RESOURCE_ID/deny'

レスポンス

ステータス意味本文とヘッダー
200アプリケーションへのリダイレクト。OAuthAuthorizationRedirect(application/json)
403

outside_screen_scope - 呼び出し元がスクリーンに限定されており、リクエストが指定する、または及ぶスクリーン、スクリーンフォルダー、セレクター、対象がその範囲外です(docs/screen-scope.md)。スコープ外のIDと存在しないIDには同じ応答が返されます。errors[0].screen_scope には呼び出し元のスコープが含まれ、書き込みは絞り込まれることなく全体が拒否されます。

問題 (application/problem+json)
デフォルト

安定した RFC 9457 問題応答。421 server_draining は Retry-After 1秒、500 not_ready または dependency_unavailable は 5秒、500 manifest_degraded は 60秒を持ちます。ハンドラーがより具体的な値を設定していない場合。

問題 (application/problem+json)