API リファレンス

請求 API

プラン、クレジット残高、明細

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

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

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

プラン、クレジット残高、明細

GET/api/billing/balance

請求残高を取得

呼び出しプロジェクトのソース認識残高スナップショット。すべてのミリクレジット額は標準的な10進文字列です。これはスナップショットであり支払い権限ではありません;カード、税金、現金引き出しレールが利用不可の間は rails_available は false です。

認証
projectBearer または dashboardSession
リクエスト本文
なし
操作ID
getBillingBalance

パラメーター

名前送信する必須?説明
ScreenRig-Projectヘッダーオプション1リリースの間非推奨。JWTプロジェクトの権限と整合性が必要。Deprecation と Warning ヘッダーを追加。トークン交換なし。
リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/billing/balance'

レスポンス

ステータス意味本文とヘッダー
200残高スナップショット。BillingBalance(application/json)
デフォルト

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

問題 (application/problem+json)
GET/api/billing/statement

請求明細を取得

呼び出しプロジェクトの不変の投稿済みジャーナルエントリーに対する安定したカーソルページネーション。保留は投稿済みエントリーではありません。修正は元のイベントへのリンクで書き換えません。この表面には任意の付与や支払いの変更はありません。

認証
projectBearer または dashboardSession
リクエスト本文
なし
操作ID
getBillingStatement

パラメーター

名前送信する必須?説明
ScreenRig-Projectヘッダーオプション1リリースの間非推奨。JWTプロジェクトの権限と整合性が必要。Deprecation と Warning ヘッダーを追加。トークン交換なし。
カーソルクエリオプション
制限クエリオプション
リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/billing/statement'

レスポンス

ステータス意味本文とヘッダー
200明細ページ。BillingStatement(application/json)
400invalid_request - 制限が範囲外です。問題 (application/problem+json)
デフォルト

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

問題 (application/problem+json)
GET/api/billing/usage

請求使用量を取得

呼び出し元プロジェクトの 1 UTC か月間の使用状況。提供および受信したバイト(課金されることはありません)、支払者のプランの無料ストレージを超えて課金されるストレージ(allowance.storage_bytes)、ならびに月あたり無料の 10,000件にカウントされる API リクエスト、課金対象のプロジェクトストリームイベント、Webhook 配信の試行。自ら支払うプロジェクトは独自のプールを読み取ります。

別の支払者が支払うプロジェクトは、その支払者の他のプロジェクトとプールを共有します。自身のシェアを読み取り、payer は支払者を示します。支払者のプール合計は支払者の請求読み取りに残ります。

認証
projectBearer または dashboardSession
リクエスト本文
なし
操作ID
getBillingUsage

パラメーター

名前送信する必須?説明
ScreenRig-Projectヘッダーオプション1リリースの間非推奨。JWTプロジェクトの権限と整合性が必要。Deprecation と Warning ヘッダーを追加。トークン交換なし。
期間クエリオプションYYYY-MM形式のUTC月。デフォルトは現在の月。
リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/billing/usage'

レスポンス

ステータス意味本文とヘッダー
200プロジェクトの使用状況。ProjectBillingUsage(application/json);ヘッダー:Cache-Control
400invalid_request - 期間が YYYY-MM 形式の UTC 月ではありません。問題 (application/problem+json)
デフォルト

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

問題 (application/problem+json)
GET/api/organizations/{organization_id}/app-store/offer

App Store 購入オプションを取得

組織が screenRIG の iPhone と iPad のアプリ(バンドル ai.screenrig.app)から App Store を通じて購入できるもの、およびその購入に付くアカウントトークン。

有効な組織の指定管理者(プランと請求を管理する人)が必要です。スタッフと、組織の委任先リセラーの管理者は、products やトークンなしで購入オプションを読み取れます。それ以外の人には 404 not_found が返ります。

リセラーに委任されている組織には products が一覧されません。リセラーが組織のプランを支払うためです。account_token は、サーバーが組織ごとに1回作成して保持するランダムな UUID です。アプリはこれを appAccountToken として StoreKit に渡すので、すべてのトランザクションとサーバー通知が組織を特定します。

購入できない読み取り者に対しては、account_token はすべてゼロの UUID です。products には、呼び出し元が今購入できるプランが App Store 製品1つずつで並びます:plus、education(education_eligible が true の間のみ)、premium。education_eligible は、スタッフが K-12 の学校または学区を認証した場合、またはオファーを読み取る管理者の認証済みアカウントメールアドレスが K-12 学校ドメインのものである場合に true になります(education_eligibility_source が school_email)。そのような管理者がオファーを開くか取引を記録すると、組織は一度だけ対象となり、一致したドメインを記した組織の監査エントリが書き込まれ、同じオファーに Education が含まれます。

スタッフの判断は、どちらの結果であっても最終的なもので、自動判定で上書きされることはありません。

組織が別の経路(スタッフ、請求書払い、別のサブスクリプション)ですでに同じレベルまたは上位のプランを持っている場合、そのプランは提示されません。ただし、そのプランを保持している App Store サブスクリプションの本人には、サブスクリプショングループ内でプランを変更できるよう提示されます。products が空でないとき、can_purchase は true です。subscription は組織の App Store サブスクリプションで、ない場合は null です。

レスポンスは private かつ no-store です。

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

パラメーター

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

レスポンス

ステータス意味本文とヘッダー
200組織の App Store プラン購入オプション。AppStoreOffer(application/json);ヘッダー:Cache-Control
デフォルト

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

問題 (application/problem+json)
POST/api/organizations/{organization_id}/app-store/transactions

App Store トランザクションを記録

組織のために購入された StoreKit 2 の署名付きトランザクション(Transaction.jwsRepresentation)を1件記録し、組織をそのプランにします。有効な組織の指定管理者、同一オリジンの Cookie 認証、JWT セッションの場合は CSRF ヘッダーが必要です。

サーバーは、JWS を、x5c チェーンから Apple Root CA - G3(本番以外では Xcode の StoreKit テスト用ルートも)まで、バンドル ID ai.screenrig.app、製品 ID、環境(Production は本番のみ。App Review と TestFlight は本番に対してサンドボックスアカウントで購入するため、Sandbox はどこでも。Xcode は本番以外のみ)、そして appAccountToken が組織の account_token(getAppStoreOffer)と等しいことで検証します。リクエストには、誰が支払ったかを示すものはありません。

プランは、サブスクリプションの最新のトランザクションの製品に従います。上位のプランはすぐに適用され、下位のプランは、プラン変更と同様に、請求の次の UTC 月境界に達したときに適用されます。トランザクションまたはそれより古いものを再送しても何も変わらず、サブスクリプションは現状のまま返されます。期限切れのトランザクションは記録されますが、プランは変更されません。

アプリは、2xx または確定的な 4xx 問題の後にトランザクションを完了します。問題:app_store_transaction_invalid(422)、app_store_account_mismatch(409)、education_not_eligible(403)、app_store_plan_conflict(409)、billed_by_reseller(409。組織はリセラーに委任されており、リセラーがそのプランを支払います)。

認証
dashboardSession
リクエスト本文
AppStoreTransactionRequest
操作ID
recordAppStoreTransaction

パラメーター

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

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

フィールド説明
signed_transaction(必須、文字列)トランザクションの StoreKit 2 jwsRepresentation。StoreKit が返したままの値です。minLength: 1 maxLength: 65536
リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORGANIZATION_ID/app-store/transactions'

レスポンス

ステータス意味本文とヘッダー
200トランザクション後の App Store サブスクリプション。AppStoreSubscription(application/json);ヘッダー:Cache-Control
デフォルト

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

問題 (application/problem+json)
POST/api/app-store/notifications

App Store 通知を受信

Apple の App Store Server Notifications V2(signedPayload ボディ)。本番環境とサンドボックス環境について App Store Connect で設定する URL です。公開:署名付きペイロードが資格情報であり、recordAppStoreTransaction がトランザクションを検証するのと同じ方法で、その中の署名付きトランザクションと更新情報とともに検証されます。

SUBSCRIBED、DID_RENEW、DID_CHANGE_RENEWAL_PREF、DID_CHANGE_RENEWAL_STATUS(および OFFER_REDEEMED、RENEWAL_EXTENDED、REFUND_REVERSED)は最新のトランザクションを適用します。更新ではサブスクリプションが延長され、アップグレードではプランがすぐに変わり、ダウングレードでは下位の製品が期間終了時に更新されたときに変わります。

EXPIRED、GRACE_PERIOD_EXPIRED、REFUND、REVOKE はサブスクリプションを終了し、それが設定したプランを、請求がプランを削除するときと同じく、次の UTC 月境界で削除します。すでに付与されたものは取り戻しません。その後にスタッフまたは請求書払いで組織に設定されたプランが削除されることはありません。

それ以外のタイプ、プランではない製品の通知、組織を特定しない通知は、受理されてログに記録されます。200 は受理を示します。検証できないペイロードは 422 の app_store_transaction_invalid 問題になります。サーバー側の障害は 5xx で、Apple が再送します。クライアントアドレスごとに制限されます。

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

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

フィールド説明
signedPayload(必須、文字列)Apple の署名付き通知(JWS)。minLength: 1
リクエストテンプレートとレスポンス
シェル・リクエストテンプレート
curl --request POST --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/app-store/notifications'

レスポンス

ステータス意味本文とヘッダー
200通知は受理されました。AppStoreNotificationAcknowledgement(application/json);ヘッダー:Cache-Control
422app_store_transaction_invalid — ペイロードは、このサーバー向けの有効な App Store 通知ではありません。問題 (application/problem+json)
429

安定した rate_limited 問題。権威ある Retry-After 間隔後にのみリトライしてください。固定ウィンドウ拒否は適用される RateLimit-Policy と RateLimit メンバーも含みます。並行性とバイト予算拒否はこれらの開示を省略します。

問題 (application/problem+json); ヘッダー: Retry-After, RateLimit-Policy, RateLimit
デフォルト

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

問題 (application/problem+json)