{
  "components": {
    "schemas": {
      "AccountClosure": {
        "additionalProperties": false,
        "properties": {
          "case_id": {
            "format": "uuid",
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "confirmed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "due_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "scope": {
            "enum": [
              "account",
              "workspace"
            ],
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "AccountClosureInput": {
        "additionalProperties": false,
        "properties": {
          "confirm": {
            "const": true,
            "type": "boolean"
          },
          "current_password": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "scope": {
            "enum": [
              "account",
              "workspace"
            ],
            "type": "string"
          }
        },
        "required": [
          "scope",
          "current_password",
          "confirm",
          "request_id"
        ],
        "type": "object"
      },
      "AccountClosureList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/AccountClosure"
            },
            "type": "array"
          },
          "now": {
            "format": "date-time",
            "type": "string"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "AccountClosureReview": {
        "additionalProperties": false,
        "properties": {
          "acknowledge_finance": {
            "type": "boolean"
          },
          "approve": {
            "type": "boolean"
          },
          "decision": {
            "type": "string"
          }
        },
        "required": [
          "approve",
          "decision"
        ],
        "type": "object"
      },
      "AccountCorrection": {
        "additionalProperties": false,
        "properties": {
          "current_password": {
            "type": "string"
          },
          "email": {
            "format": "email",
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "type": "string"
          }
        },
        "required": [
          "name",
          "current_password"
        ],
        "type": "object"
      },
      "Activation": {
        "additionalProperties": false,
        "example": {
          "created_at": "2026-10-18T00:00:00Z",
          "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
          "device_name": "Office PC",
          "generation": 1,
          "id": "44444444-4444-4444-8444-444444444444",
          "last_seen_at": "2026-10-18T00:00:00Z",
          "license_id": "33333333-3333-4333-8333-333333333333",
          "product_id": "11111111-1111-4111-8111-111111111111",
          "released_at": null,
          "status": "active",
          "virtual_machine": false
        },
        "properties": {
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "device_id": {
            "description": "製品単位のデバイスフィンガープリント。通常は SDK が導出する 64 文字の小文字 16 進数。",
            "type": "string"
          },
          "device_name": {
            "description": "人が読めるデバイスラベル。セキュリティ上の ID ではありません。",
            "type": "string"
          },
          "generation": {
            "description": "古いデバイス認証情報を無効にするためのアクティベーション世代。",
            "type": "integer"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "last_seen_at": {
            "description": "サーバーが観測した最後のデバイス活動タイムスタンプ（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "lease_expires_at": {
            "anyOf": [
              {
                "description": "フローティング席のリース期限。期限切れの席は回収できます。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "フローティング席のリース期限。期限切れの席は回収できます。",
                "type": "null"
              }
            ],
            "description": "フローティング席のリース期限。期限切れの席は回収できます。"
          },
          "license_id": {
            "description": "ライセンス UUID。lv_lic_ シークレットとは異なります。",
            "format": "uuid",
            "type": "string"
          },
          "product_id": {
            "description": "現在のワークスペースの製品 UUID。",
            "format": "uuid",
            "type": "string"
          },
          "released_at": {
            "anyOf": [
              {
                "description": "解放タイムスタンプ。解放までは null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "解放タイムスタンプ。解放までは null。",
                "type": "null"
              }
            ],
            "description": "解放タイムスタンプ。解放までは null。"
          },
          "session_id": {
            "description": "フローティングインスタンスのセッション識別子。node-locked ライセンスでは省略できます。",
            "type": "string"
          },
          "status": {
            "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
            "enum": [
              "active",
              "released"
            ],
            "type": "string"
          },
          "virtual_machine": {
            "description": "SDK が仮想マシンを検出したかどうか。",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "product_id",
          "license_id",
          "device_id",
          "virtual_machine",
          "device_name",
          "status",
          "generation",
          "created_at",
          "last_seen_at",
          "released_at"
        ],
        "type": "object"
      },
      "ActivationList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/Activation"
            },
            "type": "array"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "AdminPlanList": {
        "additionalProperties": false,
        "properties": {
          "currencies": {
            "items": {
              "pattern": "^[A-Z]{3}$",
              "type": "string"
            },
            "type": "array"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/Price"
            },
            "type": "array"
          },
          "settings": {
            "$ref": "#/components/schemas/DefaultPlan"
          }
        },
        "required": [],
        "type": "object"
      },
      "AttemptList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "anyOf": [
              {
                "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
                "items": {
                  "$ref": "#/components/schemas/WebhookAttempt"
                },
                "type": "array"
              },
              {
                "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
                "type": "null"
              }
            ],
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。"
          }
        },
        "required": [],
        "type": "object"
      },
      "Audit": {
        "additionalProperties": false,
        "properties": {
          "action": {
            "description": "監査操作の識別子。例：product.create または license.renew。",
            "type": "string"
          },
          "actor_id": {
            "description": "操作の責任者のアカウント UUID。",
            "format": "uuid",
            "type": "string"
          },
          "actor_kind": {
            "description": "操作の発生元：session、api_key または system。",
            "enum": [
              "session",
              "api_key",
              "system"
            ],
            "type": "string"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "request_id": {
            "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
            "type": "string"
          },
          "resource_id": {
            "description": "影響を受けたリソースの UUID。",
            "maxLength": 36,
            "type": "string"
          }
        },
        "required": [
          "id",
          "action",
          "resource_id",
          "created_at"
        ],
        "type": "object"
      },
      "AuditList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/Audit"
            },
            "type": "array"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "AutoRenewal": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "金額（100 分の 1 単位）。台帳明細は正の入金または負の引き落としになります。",
            "minimum": 0,
            "type": "integer"
          },
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "type": "string"
          },
          "enabled": {
            "description": "Webhook エンドポイントが有効かどうか。",
            "type": "boolean"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "description": "公開カタログの安定した請求プラン識別子。",
            "type": "string"
          },
          "plan_name": {
            "description": "プランの表示名。",
            "type": "string"
          },
          "policy_version": {
            "description": "自動更新の保存時に同意したサービスポリシーのリビジョン。",
            "type": "string"
          },
          "price_version": {
            "description": "固定された価格リビジョン。古い入力は PLAN_VERSION_CONFLICT を引き起こすことがあります。",
            "type": "string"
          },
          "status": {
            "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
            "enum": [
              "disabled",
              "enabled",
              "insufficient_balance",
              "price_changed",
              "plan_changed",
              "plan_unavailable",
              "account_unavailable"
            ],
            "type": "string"
          },
          "term_months": {
            "description": "購入期間の月数。",
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "updated_at": {
            "description": "最終更新タイムスタンプ（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "description": "自動更新設定のリビジョン。",
            "type": "string"
          }
        },
        "required": [
          "mode",
          "enabled",
          "plan",
          "plan_name",
          "currency",
          "price_version",
          "term_months",
          "amount_cents",
          "status",
          "version",
          "updated_at"
        ],
        "type": "object"
      },
      "AutoRenewalInput": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "expected_version": {
            "type": "string"
          },
          "overage_accepted": {
            "description": "表示された課金対象の超過に対する別個の明示的な許可。",
            "type": "boolean"
          },
          "plan": {
            "type": "string"
          },
          "policy_version": {
            "description": "現在公開されている変更不可のポリシーバージョン。運営者がポリシーを公開した後は、いずれの決済環境でも同意で保護された操作に必要です。",
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "term_months": {
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "terms_accepted": {
            "description": "デフォルトで未チェックの明示的な同意。",
            "type": "boolean"
          }
        },
        "required": [
          "enabled",
          "expected_version"
        ],
        "type": "object"
      },
      "AutoRenewalResult": {
        "additionalProperties": false,
        "properties": {
          "next_renewal_at": {
            "anyOf": [
              {
                "description": "次回更新予定タイムスタンプ（UTC）。無効または不要な場合は null になることがあります。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "次回更新予定タイムスタンプ（UTC）。無効または不要な場合は null になることがあります。",
                "type": "null"
              }
            ],
            "description": "次回更新予定タイムスタンプ（UTC）。無効または不要な場合は null になることがあります。"
          },
          "setting": {
            "$ref": "#/components/schemas/AutoRenewal",
            "description": "現在の自動更新設定。"
          }
        },
        "required": [
          "setting",
          "next_renewal_at"
        ],
        "type": "object"
      },
      "BatchInput": {
        "additionalProperties": false,
        "properties": {
          "days": {
            "description": "renew に必須：追加の有効日数、1–36500。他の操作では使用しません。",
            "maximum": 36500,
            "minimum": 1,
            "type": "integer"
          },
          "duration_days": {
            "description": "duration_days を省略した create エントリーの共通期間。各エントリーで上書きできます。独自期間のない timed/trial エントリーには必須で、perpetual 作成では省略します。",
            "maximum": 36500,
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "entries": {
            "description": "create に必須：1–100 件の顧客エントリー。他の操作では省略します。",
            "items": {
              "additionalProperties": false,
              "properties": {
                "customer": {
                  "description": "ベンダーが定義する顧客ラベル。顧客ポータルのメールアドレスとは別です。",
                  "maxLength": 120,
                  "type": "string"
                },
                "customer_email": {
                  "description": "紐付いた顧客ポータルのメールアドレス。未割り当ての場合は空。",
                  "maxLength": 254,
                  "type": "string"
                },
                "duration_days": {
                  "description": "ライセンスごとの作成期間。BatchInput.duration_days を上書きします。共通の作成期間を使用するには省略します。",
                  "maximum": 36500,
                  "minimum": 1,
                  "type": [
                    "integer",
                    "null"
                  ]
                }
              },
              "required": [],
              "type": "object"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          },
          "ids": {
            "description": "renew、revoke、apply_policy に必須：重複しない 1–100 個のライセンス UUID。create では省略します。",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "operation": {
            "description": "操作名。一括処理は create/renew/revoke/apply_policy を、オフラインリクエストは activate/deactivate をサポートします。",
            "enum": [
              "create",
              "renew",
              "revoke",
              "apply_policy"
            ],
            "type": "string"
          },
          "policy_id": {
            "description": "create と apply_policy に必須：対象ライセンスポリシー UUID。",
            "format": "uuid",
            "type": "string"
          },
          "preview_token": {
            "description": "apply_policy に必要な暗号化されたプレビュー確認トークン。600 秒間有効で、リソースの変更により無効になります。",
            "type": "string",
            "writeOnly": true
          },
          "product_id": {
            "description": "create に必須：新しいライセンスの製品 UUID。",
            "format": "uuid",
            "type": "string"
          },
          "request_id": {
            "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "operation"
        ],
        "type": "object"
      },
      "BatchItem": {
        "additionalProperties": false,
        "example": {
          "customer": "Order #1001",
          "customer_email": "buyer@example.com",
          "duration_days": 30,
          "expires_at": null,
          "first_activated_at": null,
          "id": "33333333-3333-4333-8333-333333333333",
          "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
        },
        "properties": {
          "customer": {
            "description": "ベンダーが定義する顧客ラベル。顧客ポータルのメールアドレスとは別です。",
            "type": "string"
          },
          "customer_email": {
            "description": "紐付いた顧客ポータルのメールアドレス。未割り当ての場合は空。",
            "type": "string"
          },
          "duration_days": {
            "description": "初回アクティベーションからのライセンスごとの日数。timed/trial 発行では 1–36500 が必須、perpetual では省略／null。ポリシーには保存されません。",
            "type": [
              "integer",
              "null"
            ]
          },
          "expires_at": {
            "anyOf": [
              {
                "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                "type": "null"
              }
            ],
            "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。"
          },
          "first_activated_at": {
            "anyOf": [
              {
                "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "初回の正常なアクティベーションのタイムスタンプ。アクティベーション前は null で、更新や移転によって変更されません。",
                "type": "null"
              }
            ],
            "description": "初回の正常なアクティベーションのタイムスタンプ。アクティベーション前は null で、更新や移転によって変更されません。"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "license_key": {
            "description": "アクティベーション時に指定する完全な顧客ライセンスキー。製品初期化コードとサンプルのダウンロードにはこの秘密情報は含まれません。オフラインリクエストは SDK が提供する認証情報を使用します。",
            "type": "string"
          },
          "operation": {
            "description": "操作名。一括処理は create/renew/revoke/apply_policy を、オフラインリクエストは activate/deactivate をサポートします。",
            "enum": [
              "create",
              "renew",
              "revoke",
              "apply_policy"
            ],
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "BatchResult": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "description": "現在のグループの件数、または一括処理で処理されたレコード数。",
            "type": "integer"
          },
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/BatchItem"
            },
            "type": "array"
          },
          "operation": {
            "description": "操作名。一括処理は create/renew/revoke/apply_policy を、オフラインリクエストは activate/deactivate をサポートします。",
            "enum": [
              "create",
              "renew",
              "revoke",
              "apply_policy"
            ],
            "type": "string"
          },
          "request_id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "operation",
          "items",
          "count"
        ],
        "type": "object"
      },
      "BillingEmailPreview": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "link": {
            "format": "uri",
            "type": "string"
          },
          "reply_to": {
            "description": "公開サポートメールと請求メールの Reply-To。空の場合は連絡先を非表示にします。既存の SMTP From アドレスは変更せず、受信箱も作成しません。",
            "maxLength": 254,
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "to": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "id",
          "to",
          "subject",
          "body",
          "link"
        ],
        "type": "object"
      },
      "BillingEmailTestInput": {
        "additionalProperties": false,
        "properties": {
          "kind": {
            "enum": [
              "purchase_success",
              "expiry_reminder",
              "auto_renewal_success",
              "auto_renewal_problem"
            ],
            "type": "string"
          },
          "locale": {
            "default": "zh",
            "enum": [
              "zh",
              "zh-hant",
              "en",
              "es",
              "hi",
              "ar",
              "fr",
              "bn",
              "pt",
              "id",
              "ur"
            ],
            "type": "string"
          },
          "to": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "to"
        ],
        "type": "object"
      },
      "BillingJob": {
        "additionalProperties": false,
        "properties": {
          "attempts": {
            "description": "タスクの累積試行回数。",
            "type": "integer"
          },
          "available_at": {
            "description": "タスクを実行できる最も早い UTC 時刻。",
            "format": "date-time",
            "type": "string"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "last_error": {
            "description": "直近の失敗カテゴリ。空の場合があります。",
            "type": "string"
          },
          "month": {
            "description": "UTC の月 YYYY-MM。クエリ値を省略すると現在の月を使用します。請求ジョブには締め済みの月が必要です。",
            "type": "string"
          },
          "status": {
            "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
            "enum": [
              "pending",
              "running",
              "done",
              "failed"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "month",
          "status"
        ],
        "type": "object"
      },
      "BillingJobList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/BillingJob"
            },
            "type": "array"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "BillingNotificationPreference": {
        "additionalProperties": false,
        "properties": {
          "auto_renewal_problem": {
            "default": true,
            "type": "boolean"
          },
          "auto_renewal_success": {
            "default": true,
            "type": "boolean"
          },
          "expiry_reminder": {
            "default": true,
            "type": "boolean"
          },
          "locale": {
            "enum": [
              "zh",
              "zh-hant",
              "en",
              "es",
              "hi",
              "ar",
              "fr",
              "bn",
              "pt",
              "id",
              "ur"
            ],
            "type": "string"
          },
          "purchase_success": {
            "default": true,
            "type": "boolean"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "purchase_success",
          "expiry_reminder",
          "auto_renewal_success",
          "auto_renewal_problem",
          "locale",
          "version",
          "updated_at"
        ],
        "type": "object"
      },
      "BillingNotificationPreferenceInput": {
        "additionalProperties": false,
        "properties": {
          "auto_renewal_problem": {
            "default": true,
            "type": "boolean"
          },
          "auto_renewal_success": {
            "default": true,
            "type": "boolean"
          },
          "expected_version": {
            "description": "GET の version。未保存の設定では空。古い値は BILLING_EMAIL_PREFERENCE_CONFLICT を返します。",
            "type": "string"
          },
          "expiry_reminder": {
            "default": true,
            "type": "boolean"
          },
          "locale": {
            "enum": [
              "zh",
              "zh-hant",
              "en",
              "es",
              "hi",
              "ar",
              "fr",
              "bn",
              "pt",
              "id",
              "ur"
            ],
            "type": "string"
          },
          "purchase_success": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "expected_version"
        ],
        "type": "object"
      },
      "BillingNotificationPreferencesResult": {
        "additionalProperties": false,
        "properties": {
          "platform": {
            "$ref": "#/components/schemas/BillingNotificationSettings"
          },
          "preferences": {
            "$ref": "#/components/schemas/BillingNotificationPreference"
          },
          "recipient": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "preferences",
          "platform",
          "recipient"
        ],
        "type": "object"
      },
      "BillingNotificationSettings": {
        "additionalProperties": false,
        "properties": {
          "auto_renewal_problem": {
            "default": true,
            "type": "boolean"
          },
          "auto_renewal_success": {
            "default": true,
            "type": "boolean"
          },
          "expiry_reminder": {
            "default": true,
            "type": "boolean"
          },
          "purchase_success": {
            "default": true,
            "type": "boolean"
          },
          "reminder_days": {
            "default": [
              7
            ],
            "description": "継続期間の終了前のしきい値（24 時間を 1 日とする日数）。昇順で保存されます。遅れて開始したワーカーは、逃したすべてのリマインダーではなく、残っている最も近いしきい値のみを選択します。",
            "items": {
              "maximum": 90,
              "minimum": 1,
              "type": "integer"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "support_email": {
            "description": "公開サポートメールと請求メールの Reply-To。空の場合は連絡先を非表示にします。既存の SMTP From アドレスは変更せず、受信箱も作成しません。",
            "maxLength": 254,
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "purchase_success",
          "expiry_reminder",
          "auto_renewal_success",
          "auto_renewal_problem",
          "reminder_days",
          "support_email",
          "version"
        ],
        "type": "object"
      },
      "BillingNotificationSettingsInput": {
        "additionalProperties": false,
        "properties": {
          "auto_renewal_problem": {
            "default": true,
            "type": "boolean"
          },
          "auto_renewal_success": {
            "default": true,
            "type": "boolean"
          },
          "expected_version": {
            "description": "GET の version。古い値は BILLING_EMAIL_SETTINGS_CONFLICT を返します。",
            "type": "string"
          },
          "expiry_reminder": {
            "default": true,
            "type": "boolean"
          },
          "purchase_success": {
            "default": true,
            "type": "boolean"
          },
          "reminder_days": {
            "default": [
              7
            ],
            "description": "継続期間の終了前のしきい値（24 時間を 1 日とする日数）。昇順で保存されます。遅れて開始したワーカーは、逃したすべてのリマインダーではなく、残っている最も近いしきい値のみを選択します。",
            "items": {
              "maximum": 90,
              "minimum": 1,
              "type": "integer"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "support_email": {
            "description": "公開サポートメールと請求メールの Reply-To。空の場合は連絡先を非表示にします。既存の SMTP From アドレスは変更せず、受信箱も作成しません。",
            "maxLength": 254,
            "type": "string"
          }
        },
        "required": [
          "expected_version"
        ],
        "type": "object"
      },
      "BundleInput": {
        "additionalProperties": false,
        "properties": {
          "language": {
            "description": "ダウンロードバンドルの SDK 言語識別子。",
            "enum": [
              "go",
              "java",
              "c",
              "cpp",
              "csharp",
              "python",
              "javascript",
              "rust",
              "ruby"
            ],
            "type": "string"
          }
        },
        "required": [
          "language"
        ],
        "type": "object"
      },
      "BuyPlan": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "overage_accepted": {
            "description": "表示された課金対象の超過に対する別個の明示的な許可。",
            "type": "boolean"
          },
          "plan": {
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          },
          "policy_version": {
            "description": "現在公開されている変更不可のポリシーバージョン。運営者がポリシーを公開した後は、いずれの決済環境でも同意で保護された操作に必要です。",
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "renewal": {
            "default": false,
            "description": "明示的な事前更新。支払いは今すぐ回収され、前払いサービス期間が直ちに延長されます。次の枠サイクルは既存の支払い済みまたはギフトの期間に続きます。現在の使用量はリセットされません。最新の支払い済みプランと通貨を更新します。期限切れの顧客も通常どおり購入できます。",
            "type": "boolean"
          },
          "request_id": {
            "maxLength": 80,
            "type": "string"
          },
          "term_months": {
            "default": 1,
            "description": "契約期間。省略時は 1 か月。再利用した request_id で期間を変更すると 409 を返します。",
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "terms_accepted": {
            "description": "デフォルトで未チェックの明示的な同意。",
            "type": "boolean"
          }
        },
        "required": [
          "plan",
          "currency",
          "price_version",
          "request_id"
        ],
        "type": "object"
      },
      "CSRF": {
        "additionalProperties": false,
        "properties": {
          "csrf_token": {
            "type": "string"
          }
        },
        "required": [
          "csrf_token"
        ],
        "type": "object"
      },
      "CancelCustomerRefund": {
        "additionalProperties": false,
        "properties": {
          "confirm_service_stays_cancelled": {
            "description": "審査前にサービスキャンセルが既に実行された場合に必須。明示的に範囲指定された保留中の申請は、サービスを停止または復元せずに撤回できます。",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ChangePassword": {
        "additionalProperties": false,
        "properties": {
          "current_password": {
            "description": "12–128 UTF-8 バイト。文字数ではありません",
            "type": "string",
            "writeOnly": true
          },
          "password": {
            "description": "12–128 UTF-8 バイト。文字数ではありません",
            "type": "string",
            "writeOnly": true
          },
          "password_confirmation": {
            "description": "必須。password と完全に一致する必要があります",
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "current_password",
          "password",
          "password_confirmation"
        ],
        "type": "object"
      },
      "ClosureExportCredential": {
        "additionalProperties": false,
        "properties": {
          "download_url": {
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "type": "string"
          },
          "export_deadline": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "ClosureExportLogin": {
        "additionalProperties": false,
        "properties": {
          "current_password": {
            "type": "string"
          },
          "email": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "email",
          "current_password"
        ],
        "type": "object"
      },
      "CommerceNotice": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "description": "サービス通知の本文。",
            "type": "string"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "effective_at": {
            "anyOf": [
              {
                "description": "通知された変更の有効時刻、または null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "通知された変更の有効時刻、または null。",
                "type": "null"
              }
            ],
            "description": "通知された変更の有効時刻、または null。"
          },
          "emailed_at": {
            "anyOf": [
              {
                "description": "通知メールの配信タイムスタンプ、または null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "通知メールの配信タイムスタンプ、または null。",
                "type": "null"
              }
            ],
            "description": "通知メールの配信タイムスタンプ、または null。"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "kind": {
            "description": "台帳明細または通知のカテゴリ識別子。",
            "type": "string"
          },
          "read_at": {
            "anyOf": [
              {
                "description": "通知の既読タイムスタンプ、または null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "通知の既読タイムスタンプ、または null。",
                "type": "null"
              }
            ],
            "description": "通知の既読タイムスタンプ、または null。"
          },
          "reference": {
            "description": "追跡に使用する関連業務参照。",
            "type": "string"
          },
          "title": {
            "description": "サービス通知のタイトル。",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "CommerceNoticeList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/CommerceNotice"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "CommercePolicy": {
        "additionalProperties": false,
        "properties": {
          "documents": {
            "properties": {
              "privacy": {
                "type": "string"
              },
              "refunds": {
                "type": "string"
              },
              "terms": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "locale": {
            "type": "string"
          },
          "pending": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "created_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "effective_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "version": {
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "profile": {
            "$ref": "#/components/schemas/OperatorProfile"
          },
          "published": {
            "type": "boolean"
          },
          "ready": {
            "type": "boolean"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "CommercePolicyInput": {
        "additionalProperties": false,
        "properties": {
          "expected_version": {
            "type": "string"
          },
          "profile": {
            "$ref": "#/components/schemas/OperatorProfile"
          },
          "published": {
            "type": "boolean"
          }
        },
        "required": [
          "profile",
          "published",
          "expected_version"
        ],
        "type": "object"
      },
      "CommerceResult": {
        "additionalProperties": true,
        "type": "object"
      },
      "Confirmation": {
        "additionalProperties": false,
        "properties": {
          "confirm": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "confirm"
        ],
        "type": "object"
      },
      "Consumption": {
        "additionalProperties": false,
        "properties": {
          "feature": {
            "description": "消費する機能識別子。",
            "type": "string"
          },
          "limit": {
            "description": "この枠期間の機能使用上限。",
            "type": "integer"
          },
          "overage": {
            "description": "この期間の上限を超えた単位数。金額ではありません。ポリシーが機能の超過上限を制御します。",
            "type": "integer"
          },
          "period": {
            "description": "計量期間：月次は YYYY-MM、日次は YYYY-MM-DD、合計は lifetime。日次／月次の境界には UTC を使用します。",
            "type": "string"
          },
          "quantity": {
            "description": "この操作で要求する単位数。整数 1–1000000000。",
            "type": "integer"
          },
          "remaining": {
            "description": "remaining = max(0, limit - used - reserved)。超過単位は除外します。",
            "type": "integer"
          },
          "reserved": {
            "description": "この期間の期限切れでない予約済み単位数。まだ課金されていません。",
            "type": "integer"
          },
          "reset_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "次のリセット、UTC ISO 8601。lifetime 計量では null。"
          },
          "used": {
            "description": "この期間の確定済み単位数。予約は除外します。",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "ConsumptionResult": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "デバイス紐付けまたはランタイムセッション UUID。今後のライセンスリクエスト用に保存します。ライセンスキーではありません。",
            "format": "uuid",
            "type": "string"
          },
          "consumption": {
            "$ref": "#/components/schemas/Consumption"
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0
              },
              {
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "現在のハートビート間隔（秒）。計量によって署名やタイマーは更新されません。",
            "type": "integer"
          }
        },
        "required": [
          "activation_id",
          "consumption"
        ],
        "type": "object"
      },
      "CustomerAssignment": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "description": "空欄にするとポータルの紐付けを解除",
            "type": "string"
          },
          "name": {
            "description": "人が読める名前。長さの制約を参照してください。",
            "maxLength": 120,
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "CustomerControlsInput": {
        "additionalProperties": false,
        "anyOf": [
          {
            "required": [
              "device_enabled"
            ]
          },
          {
            "required": [
              "api_enabled"
            ]
          }
        ],
        "properties": {
          "api_enabled": {
            "type": "boolean"
          },
          "device_enabled": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "CustomerControlsResult": {
        "additionalProperties": false,
        "properties": {
          "api_enabled": {
            "type": "boolean"
          },
          "device_enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "device_enabled",
          "api_enabled"
        ],
        "type": "object"
      },
      "CustomerDataExportInput": {
        "additionalProperties": false,
        "properties": {
          "current_password": {
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "type": "string"
          },
          "scope": {
            "enum": [
              "account",
              "workspace"
            ],
            "type": "string"
          }
        },
        "required": [
          "scope",
          "current_password",
          "reason"
        ],
        "type": "object"
      },
      "CustomerLicenses": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "items": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "email",
          "items"
        ],
        "type": "object"
      },
      "CustomerOverageConsent": {
        "additionalProperties": false,
        "properties": {
          "overage_accepted": {
            "description": "表示された課金対象の超過に対する別個の明示的な許可。",
            "type": "boolean"
          },
          "policy_version": {
            "description": "現在公開されている変更不可のポリシーバージョン。運営者がポリシーを公開した後は、いずれの決済環境でも同意で保護された操作に必要です。",
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "terms_accepted": {
            "description": "デフォルトで未チェックの明示的な同意。",
            "type": "boolean"
          }
        },
        "required": [
          "price_version",
          "policy_version",
          "terms_accepted",
          "overage_accepted"
        ],
        "type": "object"
      },
      "CustomerRefundInput": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "type": "string"
          },
          "change_id": {
            "type": "string"
          },
          "confirm_termination": {
            "type": "boolean"
          },
          "incident_id": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "order_id": {
            "type": "string"
          },
          "purchase_id": {
            "type": "string"
          },
          "quote_hash": {
            "type": "string"
          },
          "quoted_at": {
            "format": "date-time",
            "type": "string"
          },
          "reason": {
            "enum": [
              "customer_request",
              "future",
              "wallet",
              "usage_change",
              "platform_failure",
              "statutory",
              "billing_error",
              "failed_delivery"
            ],
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "scope": {
            "description": "明示的な範囲では承認時にキャンセルします。省略すると明示的な確認後に条件を満たす即時キャンセルが可能です。",
            "enum": [
              "purchase",
              "service"
            ],
            "type": "string"
          }
        },
        "required": [
          "reason",
          "message",
          "request_id"
        ],
        "type": "object"
      },
      "CustomerRefundQuote": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/RefundQuote"
          },
          {
            "$ref": "#/components/schemas/ScopedRefundPreview"
          }
        ]
      },
      "CustomerRefundQuoteInput": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "type": "string"
          },
          "change_id": {
            "type": "string"
          },
          "confirm_termination": {
            "type": "boolean"
          },
          "incident_id": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "order_id": {
            "type": "string"
          },
          "purchase_id": {
            "type": "string"
          },
          "quote_hash": {
            "type": "string"
          },
          "quoted_at": {
            "format": "date-time",
            "type": "string"
          },
          "reason": {
            "enum": [
              "customer_request",
              "future",
              "wallet",
              "usage_change",
              "platform_failure",
              "statutory",
              "billing_error",
              "failed_delivery"
            ],
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "scope": {
            "description": "明示的な範囲では承認時にキャンセルします。省略すると明示的な確認後に条件を満たす即時キャンセルが可能です。",
            "enum": [
              "purchase",
              "service"
            ],
            "type": "string"
          }
        },
        "required": [
          "reason",
          "message"
        ],
        "type": "object"
      },
      "CustomerReleaseInput": {
        "additionalProperties": false,
        "description": "送信前に解放を確認してください。send_email は任意で確認済み顧客アドレスに一時コードを送るキューを追加します。generation は古いデバイス表示を防ぎます。",
        "properties": {
          "generation": {
            "minimum": 1,
            "type": "integer"
          },
          "send_email": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "CustomerReleaseResult": {
        "additionalProperties": false,
        "properties": {
          "email_queued": {
            "type": "boolean"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "const": "released",
            "type": "string"
          },
          "transfer": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TransferCode"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "status",
          "transfer",
          "email_queued"
        ],
        "type": "object"
      },
      "CustomerSession": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "DatabaseStatus": {
        "additionalProperties": false,
        "properties": {
          "connected": {
            "type": "boolean"
          },
          "database": {
            "type": "string"
          },
          "host": {
            "type": "string"
          },
          "open_connections": {
            "type": "integer"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "connected",
          "host",
          "database"
        ],
        "type": "object"
      },
      "DefaultPlan": {
        "additionalProperties": false,
        "properties": {
          "allow_customer_api_overage": {
            "default": false,
            "description": "顧客による API 超過の選択のみを許可します。デバイス権限とは独立しています。false の場合、API 使用は管理者ルールに従います。無制限の API は無制限のままです。",
            "type": "boolean"
          },
          "allow_customer_device_overage": {
            "default": false,
            "description": "顧客によるデバイス超過の選択のみを許可します。false の場合、デバイス使用は管理者ルールに従い、保存済みの顧客のデバイス選択は再度有効化するまで無視されます。",
            "type": "boolean"
          },
          "default_currency": {
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "default_plan": {
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          }
        },
        "required": [
          "default_plan",
          "default_currency"
        ],
        "type": "object"
      },
      "DeliveryList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "anyOf": [
              {
                "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
                "items": {
                  "$ref": "#/components/schemas/WebhookDelivery"
                },
                "type": "array"
              },
              {
                "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
                "type": "null"
              }
            ],
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "DeviceProfile": {
        "additionalProperties": false,
        "properties": {
          "hardware_id": {
            "description": "製品とハードウェア ID の SHA-256。利用できない場合は空。ハードウェアを必須とするポリシーでは拒否されます。",
            "type": "string"
          },
          "platform": {
            "description": "ローカル OS：windows、linux または darwin（macOS）。",
            "enum": [
              "windows",
              "linux",
              "darwin"
            ],
            "type": "string"
          },
          "system_id": {
            "description": "製品とシステム ID の SHA-256：64 文字の小文字 16 進数。",
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "version": {
            "const": 3,
            "description": "デバイスフィンガープリントのプロトコルバージョン。現在は 3。",
            "type": "integer"
          },
          "virtual_machine": {
            "description": "真偽値：SDK が仮想マシンを検出したかどうか。",
            "type": "boolean"
          }
        },
        "required": [
          "version",
          "system_id",
          "hardware_id",
          "virtual_machine",
          "platform"
        ],
        "type": "object"
      },
      "DeviceReleaseOperation": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "attempts": {
            "description": "Licentivo が保持する処理失敗の試行回数。",
            "type": "integer"
          },
          "available_at": {
            "description": "レコード作成時刻（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "レコード作成時刻（UTC）。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "操作が完了した時刻。保留中は省略されます。",
                "type": "null"
              }
            ],
            "description": "操作が完了した時刻。保留中は省略されます。"
          },
          "connection_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "created_at": {
            "description": "レコード作成時刻（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "error_code": {
            "description": "安定した処理または審査の理由。成功後は空。",
            "type": "string"
          },
          "expected_generation": {
            "description": "失効トランザクション内で比較する、期待されるデバイス紐付け世代。",
            "minimum": 1,
            "type": "integer"
          },
          "license_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "operation_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "source": {
            "description": "この失効操作の発生元。",
            "enum": [
              "logout",
              "launch",
              "admin"
            ],
            "type": "string"
          },
          "status": {
            "description": "サーバーが管理する現在のライフサイクルまたは処理状態。",
            "enum": [
              "pending",
              "succeeded",
              "stale",
              "manual_review"
            ],
            "type": "string"
          }
        },
        "required": [
          "operation_id",
          "license_id",
          "activation_id",
          "expected_generation",
          "source",
          "status"
        ],
        "type": "object"
      },
      "EligibleReleases": {
        "additionalProperties": false,
        "properties": {
          "authorization": {
            "additionalProperties": true,
            "type": "object"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/Release"
            },
            "type": "array"
          }
        },
        "required": [],
        "type": "object"
      },
      "Email": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "EmailChangeConfirmation": {
        "additionalProperties": false,
        "properties": {
          "token": {
            "maxLength": 2048,
            "minLength": 32,
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "type": "object"
      },
      "Empty": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "EmptyRefundPreviewInput": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "Error": {
        "additionalProperties": false,
        "example": {
          "error": {
            "code": "UNAUTHENTICATED",
            "message": "Please sign in again"
          },
          "request_id": "55555555-5555-4555-8555-555555555555"
        },
        "properties": {
          "error": {
            "additionalProperties": false,
            "description": "エラーオブジェクトまたは配信失敗の分類。子フィールドまたは現在の型を参照してください。",
            "properties": {
              "code": {
                "description": "安定した機械可読のエラーコード。",
                "type": "string"
              },
              "message": {
                "description": "人が読めるエラーメッセージ。分岐には code を使用してください。",
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "request_id": {
            "description": "ログ検索用のサーバー生成 HTTP リクエスト UUID。ライセンス ID や冪等性 ID ではありません。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "FeatureReservation": {
        "additionalProperties": false,
        "properties": {
          "consumption": {
            "$ref": "#/components/schemas/Consumption",
            "description": "使用量レシート：減算された単位、累積使用量、残り枠、次のリセット。"
          },
          "expires_at": {
            "description": "予約期限（UTC）。この時刻より前に確定してください。",
            "format": "date-time",
            "type": "string"
          },
          "operation_id": {
            "description": "予約に使用した元のジョブ ID。再試行のために保持します。",
            "type": "string"
          },
          "reservation_id": {
            "description": "予約 ID。この値を確定またはキャンセルに送信します。",
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "description": "pending：操作を実行、committed：課金済み、canceled と expired：課金せず終了。",
            "enum": [
              "pending",
              "committed",
              "canceled",
              "expired"
            ],
            "type": "string"
          }
        },
        "required": [
          "reservation_id",
          "operation_id",
          "status",
          "expires_at",
          "consumption"
        ],
        "type": "object"
      },
      "FeatureUsage": {
        "additionalProperties": false,
        "properties": {
          "feature": {
            "description": "従量制機能の識別子。ポリシーの機能に存在する必要があります。",
            "type": "string"
          },
          "license_id": {
            "description": "ライセンス UUID。lv_lic_ シークレットとは異なります。",
            "format": "uuid",
            "type": "string"
          },
          "period": {
            "description": "デフォルトの UTC 月次請求スナップショット。計量ルールは month/day/lifetime を使用し、使用量の行は具体的な期間キーを使用します。",
            "type": "string"
          },
          "quantity": {
            "description": "この機能と期間の累計使用数量。",
            "type": "integer"
          },
          "updated_at": {
            "description": "最終更新タイムスタンプ（UTC）。",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "license_id",
          "feature",
          "period",
          "quantity",
          "updated_at"
        ],
        "type": "object"
      },
      "ForumAuthor": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "ForumImage": {
        "additionalProperties": false,
        "properties": {
          "height": {
            "type": "integer"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "size": {
            "type": "integer"
          },
          "url": {
            "type": "string"
          },
          "width": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "url",
          "width",
          "height",
          "size"
        ],
        "type": "object"
      },
      "ForumModerationInput": {
        "additionalProperties": false,
        "description": "プラットフォーム管理者のブラウザーセッションが必要です。少なくとも 1 フィールドを指定し、省略したフィールドは現在の値を保持します。固定は公開済みまたは非表示のトピックに適用され、削除済みコンテンツを復元しません。",
        "minProperties": 1,
        "properties": {
          "hidden": {
            "type": "boolean"
          },
          "locked": {
            "type": "boolean"
          },
          "pinned": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "ForumReply": {
        "additionalProperties": false,
        "properties": {
          "author": {
            "$ref": "#/components/schemas/ForumAuthor"
          },
          "body": {
            "type": "string"
          },
          "can_delete": {
            "type": "boolean"
          },
          "can_edit": {
            "type": "boolean"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "images": {
            "items": {
              "$ref": "#/components/schemas/ForumImage"
            },
            "type": "array"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "body",
          "author",
          "images",
          "created_at",
          "updated_at",
          "can_edit",
          "can_delete"
        ],
        "type": "object"
      },
      "ForumReplyInput": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "maxLength": 12000,
            "minLength": 1,
            "type": "string"
          },
          "image_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 6,
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "body"
        ],
        "type": "object"
      },
      "ForumTopic": {
        "additionalProperties": false,
        "properties": {
          "author": {
            "$ref": "#/components/schemas/ForumAuthor"
          },
          "body": {
            "type": "string"
          },
          "can_delete": {
            "type": "boolean"
          },
          "can_edit": {
            "type": "boolean"
          },
          "can_moderate": {
            "type": "boolean"
          },
          "category": {
            "enum": [
              "integration",
              "help",
              "ideas",
              "showcase"
            ],
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "images": {
            "items": {
              "$ref": "#/components/schemas/ForumImage"
            },
            "type": "array"
          },
          "language": {
            "enum": [
              "en",
              "zh",
              "zh-hant",
              "hi",
              "es",
              "ar",
              "fr",
              "bn",
              "pt",
              "id",
              "ur"
            ],
            "type": "string"
          },
          "last_reply_at": {
            "format": "date-time",
            "type": "string"
          },
          "locked": {
            "type": "boolean"
          },
          "pinned": {
            "type": "boolean"
          },
          "reply_count": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "body",
          "category",
          "language",
          "locked",
          "pinned",
          "author",
          "images",
          "reply_count",
          "created_at",
          "updated_at",
          "last_reply_at",
          "can_edit",
          "can_delete",
          "can_moderate"
        ],
        "type": "object"
      },
      "ForumTopicDetail": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "replies": {
            "items": {
              "$ref": "#/components/schemas/ForumReply"
            },
            "type": "array"
          },
          "topic": {
            "$ref": "#/components/schemas/ForumTopic"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "topic",
          "replies",
          "total",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "ForumTopicInput": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "maxLength": 12000,
            "minLength": 1,
            "type": "string"
          },
          "category": {
            "enum": [
              "integration",
              "help",
              "ideas",
              "showcase"
            ],
            "type": "string"
          },
          "image_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 6,
            "type": "array",
            "uniqueItems": true
          },
          "language": {
            "enum": [
              "en",
              "zh",
              "zh-hant",
              "hi",
              "es",
              "ar",
              "fr",
              "bn",
              "pt",
              "id",
              "ur"
            ],
            "type": "string"
          },
          "title": {
            "maxLength": 180,
            "minLength": 2,
            "type": "string"
          }
        },
        "required": [
          "title",
          "body",
          "category",
          "language"
        ],
        "type": "object"
      },
      "ForumTopicList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ForumTopic"
            },
            "type": "array"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "ForumTranslationInput": {
        "additionalProperties": false,
        "properties": {
          "reply_id": {
            "format": "uuid",
            "type": "string"
          },
          "target_language": {
            "description": "GET /forum/translation が返す言語を選択します。",
            "type": "string"
          }
        },
        "required": [
          "target_language"
        ],
        "type": "object"
      },
      "ForumTranslationResult": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "description": "翻訳されたプレーンテキスト。textContent で描画し、HTML としては決して描画しません。",
            "type": "string"
          },
          "cached": {
            "type": "boolean"
          },
          "provider": {
            "type": "string"
          },
          "source_language": {
            "description": "DeepL が報告した検出済みの原文言語。",
            "type": "string"
          },
          "target_language": {
            "description": "選択したプロバイダーの翻訳先言語。",
            "type": "string"
          },
          "title": {
            "description": "翻訳されたトピックのタイトル。返信では空。",
            "type": "string"
          }
        },
        "required": [
          "title",
          "body",
          "source_language",
          "target_language",
          "cached",
          "provider"
        ],
        "type": "object"
      },
      "Health": {
        "additionalProperties": false,
        "properties": {
          "status": {
            "enum": [
              "ok",
              "ready"
            ],
            "type": "string"
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "ID": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "Invite": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "role": {
            "enum": [
              "owner",
              "read_only"
            ],
            "type": "string"
          }
        },
        "required": [
          "email",
          "name",
          "role"
        ],
        "type": "object"
      },
      "Invited": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "message"
        ],
        "type": "object"
      },
      "Invoice": {
        "additionalProperties": false,
        "properties": {
          "active_devices": {
            "description": "デフォルト期間の占有ピークから請求用に固定されたデバイス数。現在の占有数でも累積デバイス使用一覧でもありません。",
            "type": "integer"
          },
          "base_covered": {
            "description": "購入したパッケージが既に基本料金をカバーしているかどうか。",
            "type": "boolean"
          },
          "base_micros": {
            "description": "通貨単位の 100 万分の 1 で表した基本料金。",
            "type": "integer"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "finalized_at": {
            "anyOf": [
              {
                "description": "請求書の確定タイムスタンプ、または null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "請求書の確定タイムスタンプ、または null。",
                "type": "null"
              }
            ],
            "description": "請求書の確定タイムスタンプ、または null。"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "included_devices": {
            "description": "含まれるアクティブデバイス枠。",
            "type": "integer"
          },
          "month": {
            "description": "UTC の月 YYYY-MM。クエリ値を省略すると現在の月を使用します。請求ジョブには締め済みの月が必要です。",
            "type": "string"
          },
          "overage_devices": {
            "description": "付属枠を超えるデバイス。",
            "type": "integer"
          },
          "paid_at": {
            "anyOf": [
              {
                "description": "請求書の支払いタイムスタンプ、または null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "請求書の支払いタイムスタンプ、または null。",
                "type": "null"
              }
            ],
            "description": "請求書の支払いタイムスタンプ、または null。"
          },
          "payment_mode": {
            "description": "決済環境、sandbox または live。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "description": "公開カタログの安定した請求プラン識別子。",
            "type": "string"
          },
          "plan_name": {
            "description": "プランの表示名。",
            "type": "string"
          },
          "price_version": {
            "description": "固定された価格リビジョン。古い入力は PLAN_VERSION_CONFLICT を引き起こすことがあります。",
            "type": "string"
          },
          "refunded_at": {
            "anyOf": [
              {
                "description": "請求書の返金タイムスタンプ、または null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "請求書の返金タイムスタンプ、または null。",
                "type": "null"
              }
            ],
            "description": "請求書の返金タイムスタンプ、または null。"
          },
          "status": {
            "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
            "enum": [
              "draft",
              "finalized",
              "void"
            ],
            "type": "string"
          },
          "total_cents": {
            "description": "100 分の 1 単位で表した請求書合計。支払い状態は paid_at を参照してください。",
            "type": "integer"
          },
          "total_micros": {
            "description": "通貨単位の 100 万分の 1 で表した請求書合計。",
            "type": "integer"
          },
          "unit_micros": {
            "description": "超過アクティブデバイス 1 台あたりの価格（100 万分の 1 単位）。",
            "type": "integer"
          },
          "voided_at": {
            "anyOf": [
              {
                "description": "請求書の無効化タイムスタンプ、または null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "請求書の無効化タイムスタンプ、または null。",
                "type": "null"
              }
            ],
            "description": "請求書の無効化タイムスタンプ、または null。"
          }
        },
        "required": [
          "id",
          "month",
          "currency",
          "status",
          "total_cents"
        ],
        "type": "object"
      },
      "InvoiceList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/Invoice"
            },
            "type": "array"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "Key": {
        "additionalProperties": false,
        "properties": {
          "allow_http": {
            "description": "このキーで HTTP Launch サイトのオリジンを登録または更新できるようにします。テストサーバーのドメイン、プライベート IP アドレス、内部ホスト名も対象です。Licentivo API へのリクエストには引き続き HTTPS を使用します。",
            "type": "boolean"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "expires_at": {
            "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "人が読める名前。長さの制約を参照してください。",
            "type": "string"
          },
          "prefix": {
            "description": "管理キーの最初の 14 文字。識別専用です。",
            "type": "string"
          },
          "revoked": {
            "description": "失効済みかどうか。有効期限については expires_at も確認してください。",
            "type": "boolean"
          },
          "scope": {
            "description": "read は読み取り、write は読み取りと書き込みを許可します。書き込みには有効な Owner の作成者も必要です。",
            "enum": [
              "read",
              "write"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "prefix",
          "scope",
          "revoked",
          "allow_http"
        ],
        "type": "object"
      },
      "KeyBundle": {
        "additionalProperties": false,
        "properties": {
          "keys": {
            "items": {
              "$ref": "#/components/schemas/SigningKey"
            },
            "type": "array"
          },
          "product_id": {
            "format": "uuid",
            "type": "string"
          },
          "protocol": {
            "type": "string"
          },
          "runtime_policy_source": {
            "const": "current_license_policy",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "keys"
        ],
        "type": "object"
      },
      "KeyCreate": {
        "additionalProperties": false,
        "properties": {
          "allow_http": {
            "default": false,
            "description": "このキーで HTTP Launch サイトのオリジンを登録または更新できるようにします。テストサーバーのドメイン、プライベート IP アドレス、内部ホスト名も対象です。Licentivo API へのリクエストには引き続き HTTPS を使用します。",
            "type": "boolean"
          },
          "expires_days": {
            "description": "作成から期限までの日数、1–365。",
            "maximum": 365,
            "minimum": 1,
            "type": "integer"
          },
          "name": {
            "description": "人が読める名前。長さの制約を参照してください。",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "scope": {
            "description": "read は読み取り、write は読み取りと書き込みを許可します。書き込みには有効な Owner の作成者も必要です。",
            "enum": [
              "read",
              "write"
            ],
            "type": "string"
          }
        },
        "required": [
          "name",
          "scope",
          "expires_days"
        ],
        "type": "object"
      },
      "KeyList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/Key"
            },
            "type": "array"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "KeyRotated": {
        "additionalProperties": false,
        "example": {
          "id": "33333333-3333-4333-8333-333333333333",
          "key": "lv_api_BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
          "prefix": "lv_api_BBBBBBB"
        },
        "properties": {
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "key": {
            "description": "Full secret returned on creation or rotation. Owners may also view saved license keys on demand in a browser session. Store privately; the prefix cannot authenticate.",
            "type": "string"
          },
          "prefix": {
            "description": "管理キーの最初の 14 文字。識別専用です。",
            "type": "string"
          }
        },
        "required": [
          "id",
          "key",
          "prefix"
        ],
        "type": "object"
      },
      "KeySecret": {
        "additionalProperties": false,
        "example": {
          "expires_at": "2027-01-16T00:00:00Z",
          "id": "33333333-3333-4333-8333-333333333333",
          "key": "lv_api_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
          "prefix": "lv_api_AAAAAAA"
        },
        "properties": {
          "allow_http": {
            "description": "このキーで HTTP Launch サイトのオリジンを登録または更新できるようにします。テストサーバーのドメイン、プライベート IP アドレス、内部ホスト名も対象です。Licentivo API へのリクエストには引き続き HTTPS を使用します。",
            "type": "boolean"
          },
          "expires_at": {
            "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "key": {
            "description": "作成／ローテーション時にのみ表示",
            "type": "string"
          },
          "prefix": {
            "description": "管理キーの最初の 14 文字。識別専用です。",
            "type": "string"
          }
        },
        "required": [
          "id",
          "key",
          "prefix"
        ],
        "type": "object"
      },
      "KeyUpdate": {
        "additionalProperties": false,
        "properties": {
          "allow_http": {
            "description": "このキーで HTTP Launch サイトのオリジンを登録または更新できるようにします。テストサーバーのドメイン、プライベート IP アドレス、内部ホスト名も対象です。Licentivo API へのリクエストには引き続き HTTPS を使用します。",
            "type": "boolean"
          }
        },
        "required": [
          "allow_http"
        ],
        "type": "object"
      },
      "KeyUpdated": {
        "additionalProperties": false,
        "properties": {
          "allow_http": {
            "description": "このキーで HTTP Launch サイトのオリジンを登録または更新できるようにします。テストサーバーのドメイン、プライベート IP アドレス、内部ホスト名も対象です。Licentivo API へのリクエストには引き続き HTTPS を使用します。",
            "type": "boolean"
          },
          "id": {
            "description": "Unique record identifier.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "id",
          "allow_http"
        ],
        "type": "object"
      },
      "LaunchCommerceEvent": {
        "additionalProperties": false,
        "properties": {
          "account_ref": {
            "description": "大文字小文字を区別する変更不可の購入権利参照。",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "entitlement_ref": {
            "description": "大文字小文字を区別する変更不可の購入権利参照。",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "environment": {
            "description": "接続と署名済み許可の両方に固定されたコマース環境。",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "event_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "launch_product_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "legacy_license_id": {
            "description": "entitlement.migrated のみに使用します。既存ライセンス、有効期限、機能、デバイス記録は保持され、古いキーとデバイス認証情報はランタイムアクセスを失います。",
            "format": "uuid",
            "type": "string"
          },
          "plan_ref": {
            "description": "大文字小文字を区別する変更不可の購入権利参照。",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "type": {
            "description": "バージョン付き完全スナップショットのコマースイベント種別。",
            "enum": [
              "entitlement.created",
              "entitlement.renewed",
              "entitlement.upgraded",
              "entitlement.downgraded",
              "entitlement.refunded",
              "entitlement.suspended",
              "entitlement.expired",
              "entitlement.resumed",
              "entitlement.migrated"
            ],
            "type": "string"
          },
          "valid_from": {
            "description": "レコード作成時刻（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "valid_until": {
            "anyOf": [
              {
                "description": "レコード作成時刻（UTC）。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "購入の絶対的な有効期限（UTC）。perpetual ポリシーの場合のみ null。",
                "type": "null"
              }
            ],
            "description": "購入の絶対的な有効期限（UTC）。perpetual ポリシーの場合のみ null。"
          },
          "version": {
            "description": "この権利参照の単調増加する完全スナップショットバージョン。配信試行番号ではありません。",
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "event_id",
          "environment",
          "type",
          "entitlement_ref",
          "account_ref",
          "launch_product_id",
          "plan_ref",
          "version",
          "valid_from"
        ],
        "type": "object"
      },
      "LaunchConnection": {
        "additionalProperties": false,
        "properties": {
          "audience": {
            "description": "Launch ログインアサーションの正確な想定受信者。",
            "type": "string"
          },
          "created_at": {
            "description": "レコード作成時刻（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "enabled": {
            "description": "この信頼接続が新しいランタイム使用を認可できるかどうか。",
            "type": "boolean"
          },
          "environment": {
            "description": "接続と署名済み許可の両方に固定されたコマース環境。",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "heartbeat_seconds": {
            "description": "サーバーが選択するオンライン検証間隔（秒）。",
            "type": "integer"
          },
          "id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "issuer": {
            "description": "正確に信頼された Launch オリジン。",
            "type": "string"
          },
          "offline_seconds": {
            "description": "許可される有限のオフライン間隔（秒）。ゼロはオンライン検証を必須にします。",
            "type": "integer"
          },
          "session_seconds": {
            "description": "認可セッションの最大有効期間（秒）。",
            "type": "integer"
          },
          "updated_at": {
            "description": "レコード作成時刻（UTC）。",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "issuer",
          "audience",
          "environment",
          "enabled"
        ],
        "type": "object"
      },
      "LaunchConnectionInput": {
        "additionalProperties": false,
        "properties": {
          "audience": {
            "description": "Launch ログインアサーションの正確な想定受信者。",
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "enabled": {
            "description": "この信頼接続が新しいランタイム使用を認可できるかどうか。",
            "type": "boolean"
          },
          "environment": {
            "description": "接続と署名済み許可の両方に固定されたコマース環境。",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "heartbeat_seconds": {
            "default": 600,
            "description": "サーバーが選択するオンライン検証間隔（秒）。",
            "maximum": 86400,
            "minimum": 600,
            "type": "integer"
          },
          "issuer": {
            "description": "パスや末尾スラッシュのない、正確に信頼された Launch オリジン。デフォルトは HTTPS。HTTP にはこのリクエストを行う API キーの allow_http が必要です。プライベート IP と内部ホスト名に対応します。このオリジンへのコールバックやディスカバリーリクエストは行いません。",
            "format": "uri",
            "type": "string"
          },
          "offline_seconds": {
            "default": 0,
            "description": "0 はオンライン検証が必須です。正のオフライン有効期間は少なくとも 3 × heartbeat_seconds 必要です。アカウント認可の永久オフライン利用は無効です。",
            "maximum": 86400,
            "minimum": 0,
            "type": "integer"
          },
          "public_keys": {
            "additionalProperties": {
              "description": "固定された正規の Base64URL Ed25519 公開鍵、32 バイト。",
              "type": "string"
            },
            "description": "キー ID で索引付けされた Launch Ed25519 公開鍵の固定済み完全セット。",
            "maxProperties": 16,
            "minProperties": 1,
            "type": "object"
          },
          "session_seconds": {
            "default": 86400,
            "description": "少なくとも 3 × heartbeat_seconds。",
            "maximum": 2592000,
            "minimum": 1800,
            "type": "integer"
          }
        },
        "required": [
          "issuer",
          "audience",
          "environment",
          "public_keys",
          "enabled"
        ],
        "type": "object"
      },
      "LaunchDeviceReleaseInput": {
        "additionalProperties": false,
        "properties": {
          "account_ref": {
            "description": "大文字小文字を区別する変更不可の購入権利参照。",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "entitlement_ref": {
            "description": "大文字小文字を区別する変更不可の購入権利参照。",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "environment": {
            "description": "接続と署名済み許可の両方に固定されたコマース環境。",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "expected_generation": {
            "description": "失効トランザクション内で比較する、期待されるデバイス紐付け世代。",
            "minimum": 1,
            "type": "integer"
          },
          "operation_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "operation_id",
          "account_ref",
          "entitlement_ref",
          "environment",
          "expected_generation"
        ],
        "type": "object"
      },
      "LaunchEvent": {
        "additionalProperties": false,
        "properties": {
          "applied_at": {
            "anyOf": [
              {
                "description": "レコード作成時刻（UTC）。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "スナップショットが適用されたか stale に分類された時刻。",
                "type": "null"
              }
            ],
            "description": "スナップショットが適用されたか stale に分類された時刻。"
          },
          "attempts": {
            "description": "Licentivo が保持する処理失敗の試行回数。",
            "type": "integer"
          },
          "available_at": {
            "description": "レコード作成時刻（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "connection_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "created_at": {
            "description": "レコード作成時刻（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "error_code": {
            "description": "安定した処理または審査の理由。成功後は空。",
            "type": "string"
          },
          "event_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "description": "サーバーが管理する現在のライフサイクルまたは処理状態。",
            "enum": [
              "pending",
              "applied",
              "stale",
              "manual_review"
            ],
            "type": "string"
          }
        },
        "required": [
          "connection_id",
          "event_id",
          "status",
          "attempts",
          "available_at"
        ],
        "type": "object"
      },
      "LaunchExchangeInput": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "最後に成功したアクティベーションの data.activation_id。検証、ハートビート、consume、非アクティベーションに必要です。初回 activate のみ省略します。",
            "format": "uuid",
            "type": "string"
          },
          "app_version": {
            "description": "現在のアプリバージョン、major.minor.patch。例：1.0.0。メンテナンスまたはバージョン範囲ルールに必要です。新しいアプリを古いバージョンと偽って報告してはいけません。",
            "pattern": "^$|^(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})$",
            "type": "string"
          },
          "device_id": {
            "description": "SDK が製品、システム、ハードウェア ID から計算した 64 文字の小文字 16 進 SHA-256。固定値に置き換えないでください。",
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "device_name": {
            "description": "ダッシュボードの表示名、最大 120 文字。デバイス ID を決定するものではありません。",
            "maxLength": 120,
            "type": "string"
          },
          "device_profile": {
            "$ref": "#/components/schemas/DeviceProfile",
            "description": "SDK が生成するマシンプロファイル。ハードウェア ID、VM 拒否、ハードウェア移行のポリシーで必要に応じて指定します。"
          },
          "environment": {
            "description": "接続と署名済み許可の両方に固定されたコマース環境。",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "feature": {
            "description": "消費する機能識別子。",
            "maxLength": 64,
            "type": "string"
          },
          "identity_token": {
            "description": "1 回限りの型付き Ed25519 Launch ID JWT。権利クレームを購入権として信頼しません。",
            "maxLength": 12288,
            "type": "string",
            "writeOnly": true
          },
          "launch_connection_id": {
            "description": "この Launch 認可操作の launch connection id。",
            "format": "uuid",
            "type": "string"
          },
          "license_key": {
            "const": "",
            "description": "省略または空欄にします。アカウント交換では長期ライセンスキーを使用しません。",
            "type": "string"
          },
          "product_id": {
            "description": "製品 UUID。ライセンスの製品と一致する必要があります。",
            "format": "uuid",
            "type": "string"
          },
          "quantity": {
            "description": "この操作で要求する単位数。整数 1–1000000000。",
            "maximum": 1000000000,
            "minimum": 1,
            "type": "integer"
          },
          "request_logout_ticket": {
            "description": "SDK 機能ネゴシエーション。現在の紐付けについてチケットが保持されていない場合は紐付け解除専用ログアウトチケットを要求します。有効なログアウトチケットが既に保持されている場合は省略します。定常状態のハートビートでは追加のチケット検索を回避します。",
            "type": "boolean"
          },
          "reservation_id": {
            "description": "予約 ID。この値を確定またはキャンセルに送信します。",
            "format": "uuid",
            "type": "string"
          },
          "reservation_seconds": {
            "default": 900,
            "description": "任意の予約有効期間、30–3600 秒。デフォルトは 900。期間のリセット時にはそれより早く終了します。",
            "maximum": 3600,
            "minimum": 30,
            "type": "integer"
          },
          "session_id": {
            "description": "フローティングライセンスでは必須：実行中のインスタンスごとに UUID を生成し、そのインスタンスのリクエストで再利用します。デバイス固定ライセンスでは任意です。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "device_id",
          "identity_token",
          "launch_connection_id",
          "environment"
        ],
        "type": "object"
      },
      "LaunchPlanMappingInput": {
        "additionalProperties": false,
        "properties": {
          "launch_product_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "policy_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "policy_version": {
            "description": "マッピングされた認可ポリシーの期待される現在のバージョン。",
            "minimum": 1,
            "type": "integer"
          },
          "product_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "launch_product_id",
          "product_id",
          "policy_id",
          "policy_version"
        ],
        "type": "object"
      },
      "LaunchSessionRevocation": {
        "additionalProperties": false,
        "properties": {
          "account_ref": {
            "description": "大文字小文字を区別する変更不可の購入権利参照。",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "completed_at": {
            "description": "レコード作成時刻（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "connection_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "created_at": {
            "description": "レコード作成時刻（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "environment": {
            "description": "接続と署名済み許可の両方に固定されたコマース環境。",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "event_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "reason": {
            "description": "任意の監査理由。空は省略と同等です。forced_logout は session 範囲、password_changed と account_disabled は account 範囲が必要です。",
            "enum": [
              "",
              "forced_logout",
              "password_changed",
              "account_disabled"
            ],
            "type": "string"
          },
          "released_devices": {
            "description": "解放された現在のデバイス紐付け世代。新しいログインは保持されます。",
            "minimum": 0,
            "type": "integer"
          },
          "revoked_before": {
            "description": "account 範囲で存在します。新しい認証の auth_time は、この UTC カットオフより厳密に後である必要があり、Unix 秒の精度で比較されます。既知の sid 値は永久に失効したままです。",
            "format": "date-time",
            "type": "string"
          },
          "revoked_credentials": {
            "description": "元のイベントで新たに失効したデバイス認証情報。",
            "minimum": 0,
            "type": "integer"
          },
          "revoked_sessions": {
            "description": "元のイベントで新たに失効した認可セッション。",
            "minimum": 0,
            "type": "integer"
          },
          "scope": {
            "description": "session はこの接続の全製品とデバイスにわたる Launch sid を 1 件失効させます。account は既存の全アカウントセッションを失効させ、古い認証アサーションを拒否します。",
            "enum": [
              "session",
              "account"
            ],
            "type": "string"
          },
          "sid": {
            "description": "session 範囲では必須かつ空不可。account 範囲では省略または空欄にします。これは Launch ログインの sid であり、Licentivo 認可セッションやデバイス ID ではありません。",
            "pattern": "^[A-Za-z0-9_-]{0,128}$",
            "type": "string"
          },
          "status": {
            "const": "succeeded",
            "description": "サーバーが管理する現在のライフサイクルまたは処理状態。",
            "type": "string"
          }
        },
        "required": [
          "connection_id",
          "event_id",
          "environment",
          "account_ref",
          "scope",
          "status",
          "revoked_sessions",
          "revoked_credentials",
          "released_devices",
          "created_at",
          "completed_at"
        ],
        "type": "object"
      },
      "LaunchSessionRevocationInput": {
        "additionalProperties": false,
        "oneOf": [
          {
            "properties": {
              "reason": {
                "enum": [
                  "",
                  "forced_logout"
                ]
              },
              "scope": {
                "const": "session"
              },
              "sid": {
                "description": "大文字小文字を区別する変更不可の購入権利参照。",
                "pattern": "^[A-Za-z0-9_-]{1,128}$",
                "type": "string"
              }
            },
            "required": [
              "sid"
            ]
          },
          {
            "properties": {
              "reason": {
                "enum": [
                  "",
                  "password_changed",
                  "account_disabled"
                ]
              },
              "scope": {
                "const": "account"
              },
              "sid": {
                "const": ""
              }
            }
          }
        ],
        "properties": {
          "account_ref": {
            "description": "大文字小文字を区別する変更不可の購入権利参照。",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "environment": {
            "description": "任意の整合性チェック。省略または空欄の場合は接続環境を使用し、空でない値は一致する必要があります。このフィールドは請求を変更せず、無料の認可テストを提供しません。",
            "enum": [
              "",
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "event_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "reason": {
            "description": "任意の監査理由。空は省略と同等です。forced_logout は session 範囲、password_changed と account_disabled は account 範囲が必要です。",
            "enum": [
              "",
              "forced_logout",
              "password_changed",
              "account_disabled"
            ],
            "type": "string"
          },
          "scope": {
            "description": "session はこの接続の全製品とデバイスにわたる Launch sid を 1 件失効させます。account は既存の全アカウントセッションを失効させ、古い認証アサーションを拒否します。",
            "enum": [
              "session",
              "account"
            ],
            "type": "string"
          },
          "sid": {
            "description": "session 範囲では必須かつ空不可。account 範囲では省略または空欄にします。これは Launch ログインの sid であり、Licentivo 認可セッションやデバイス ID ではありません。",
            "pattern": "^[A-Za-z0-9_-]{0,128}$",
            "type": "string"
          }
        },
        "required": [
          "event_id",
          "account_ref",
          "scope"
        ],
        "type": "object"
      },
      "Lease": {
        "additionalProperties": false,
        "properties": {
          "key_id": {
            "description": "署名公開鍵 UUID。製品の trusted_keys に存在する必要があります。",
            "format": "uuid",
            "type": "string"
          },
          "payload": {
            "description": "元のライセンス JSON バイトのパディングなし Base64URL。デコードは読み取り専用であり、署名検証が必要です。",
            "type": "string"
          },
          "signature": {
            "description": "Base64URL の Ed25519 署名。テキスト LicenovaLease/v1、1 つの改行、デコードされた元のペイロード JSON バイトを検証します。JSON を再シリアライズしてはいけません。デコード済み署名は 64 バイトです。",
            "type": "string"
          },
          "version": {
            "const": 1,
            "description": "署名エンベロープのプロトコルバージョン。現在は 1。",
            "type": "integer"
          }
        },
        "required": [
          "version",
          "key_id",
          "payload",
          "signature"
        ],
        "type": "object"
      },
      "LeaseClaims": {
        "additionalProperties": false,
        "description": "元の署名済みペイロードバイトをデコードします。runtime_policy がない場合 TTL は最大 86400 秒に制限され、それ以外は署名済みポリシーを適用します。署名／コンテキストを検証せずにペイロードを信頼してはいけません。",
        "properties": {
          "activation_id": {
            "format": "uuid",
            "type": "string"
          },
          "capabilities": {
            "$ref": "#/components/schemas/SignedCapabilities"
          },
          "device_id": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "expires_at": {
            "maximum": 253402300799,
            "type": "integer"
          },
          "features": {
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "issued_at": {
            "type": "integer"
          },
          "key_id": {
            "format": "uuid",
            "type": "string"
          },
          "license_id": {
            "format": "uuid",
            "type": "string"
          },
          "max_devices": {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "offline_request_id": {
            "format": "uuid",
            "type": "string"
          },
          "product_id": {
            "format": "uuid",
            "type": "string"
          },
          "runtime_policy": {
            "$ref": "#/components/schemas/RuntimePolicy"
          },
          "tenant_id": {
            "format": "uuid",
            "type": "string"
          },
          "version": {
            "const": 1,
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "LegalAcceptance": {
        "additionalProperties": false,
        "properties": {
          "accepted_at": {
            "format": "date-time",
            "type": "string"
          },
          "api_overage_accepted": {
            "type": "boolean"
          },
          "device_overage_accepted": {
            "type": "boolean"
          },
          "digest": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "type": "string"
          },
          "overage_accepted": {
            "type": "boolean"
          },
          "price_version": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "LegalAcceptanceList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/LegalAcceptance"
            },
            "type": "array"
          },
          "now": {
            "format": "date-time",
            "type": "string"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "LegalConsent": {
        "additionalProperties": false,
        "properties": {
          "overage_accepted": {
            "description": "表示された課金対象の超過に対する別個の明示的な許可。",
            "type": "boolean"
          },
          "policy_version": {
            "description": "現在公開されている変更不可のポリシーバージョン。運営者がポリシーを公開した後は、いずれの決済環境でも同意で保護された操作に必要です。",
            "type": "string"
          },
          "terms_accepted": {
            "description": "デフォルトで未チェックの明示的な同意。",
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "License": {
        "additionalProperties": false,
        "description": "初回の正常なアクティベーションまで期限は null です。期間は発行時にスナップショットされ、再アクティベーションでリセットされることはありません。",
        "example": {
          "created_at": "2026-10-18T00:00:00Z",
          "customer": "Order #1001",
          "duration_days": 30,
          "expires_at": null,
          "features": [
            "export"
          ],
          "first_activated_at": null,
          "id": "33333333-3333-4333-8333-333333333333",
          "key_prefix": "lv_lic_AAAAAAA",
          "max_devices": 1,
          "mode": "timed",
          "policy_id": "22222222-2222-4222-8222-222222222222",
          "policy_version": 1,
          "product_id": "11111111-1111-4111-8111-111111111111",
          "status": "active",
          "updated_at": "2026-10-18T00:00:00Z"
        },
        "properties": {
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "customer": {
            "description": "ベンダーが定義する顧客ラベル。顧客ポータルのメールアドレスとは別です。",
            "type": "string"
          },
          "duration_days": {
            "description": "初回アクティベーションからのライセンスごとの日数。timed/trial 発行では 1–36500 が必須、perpetual では省略／null。ポリシーには保存されません。",
            "type": [
              "integer",
              "null"
            ]
          },
          "expires_at": {
            "anyOf": [
              {
                "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                "type": "null"
              }
            ],
            "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。"
          },
          "features": {
            "description": "重複しない最大 32 個の機能識別子。それぞれ 1–64 文字の ASCII 英字、数字、ドット、ハイフン、アンダースコア。",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "first_activated_at": {
            "anyOf": [
              {
                "description": "初回の正常なアクティベーションのタイムスタンプ。アクティベーション前は null で、更新や移転によって変更されません。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "初回の正常なアクティベーションのタイムスタンプ。アクティベーション前は null で、更新や移転によって変更されません。",
                "type": "null"
              }
            ],
            "description": "初回の正常なアクティベーションのタイムスタンプ。アクティベーション前は null で、更新や移転によって変更されません。"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "key_prefix": {
            "description": "識別／検索用の短いライセンスキープレフィックス。認証には使用しません。",
            "type": "string"
          },
          "max_devices": {
            "description": "ライセンスごとの最大同時デバイス数またはフローティング席数。",
            "type": "integer"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "policy_id": {
            "description": "ポリシー UUID。発行時に製品に属している必要があります。",
            "format": "uuid",
            "type": "string"
          },
          "policy_version": {
            "description": "ポリシーリビジョン。機能全体を編集する際に古い書き込みを防ぐため現在の値を送信します。",
            "type": "integer"
          },
          "product_id": {
            "description": "現在のワークスペースの製品 UUID。",
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
            "enum": [
              "active",
              "expired",
              "suspended",
              "revoked"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "最終更新タイムスタンプ（UTC）。",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "product_id",
          "key_prefix",
          "mode",
          "status"
        ],
        "type": "object"
      },
      "LicenseCapabilities": {
        "additionalProperties": false,
        "example": {
          "license_id": "33333333-3333-4333-8333-333333333333",
          "license_model": "node_locked",
          "maintenance_days": 0,
          "maintenance_until": null,
          "max_version": "",
          "min_version": "",
          "product_id": "11111111-1111-4111-8111-111111111111",
          "updated_at": "2026-10-18T00:00:00Z"
        },
        "properties": {
          "license_id": {
            "description": "ライセンス UUID。lv_lic_ シークレットとは異なります。",
            "format": "uuid",
            "type": "string"
          },
          "license_model": {
            "description": "node_locked デバイス紐付けまたは floating 席。",
            "enum": [
              "node_locked",
              "floating"
            ],
            "type": "string"
          },
          "maintenance_days": {
            "description": "初回アクティベーションからのメンテナンス日数。0 はメンテナンス期限なしを意味します。",
            "type": "integer"
          },
          "maintenance_until": {
            "anyOf": [
              {
                "description": "新しいリリースに対するメンテナンス期限。アクティベーション前または無制限の場合は null になることがあります。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "新しいリリースに対するメンテナンス期限。アクティベーション前または無制限の場合は null になることがあります。",
                "type": "null"
              }
            ],
            "description": "新しいリリースに対するメンテナンス期限。アクティベーション前または無制限の場合は null になることがあります。"
          },
          "max_version": {
            "description": "許可されるアプリの最高バージョン。空の場合は上限なし。",
            "type": "string"
          },
          "min_version": {
            "description": "許可されるアプリの最低バージョン。空の場合は下限なし。",
            "type": "string"
          },
          "product_id": {
            "description": "現在のワークスペースの製品 UUID。",
            "format": "uuid",
            "type": "string"
          },
          "updated_at": {
            "description": "最終更新タイムスタンプ（UTC）。",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "license_id",
          "product_id",
          "license_model",
          "maintenance_days",
          "maintenance_until",
          "min_version",
          "max_version",
          "updated_at"
        ],
        "type": "object"
      },
      "LicenseCapabilityResult": {
        "additionalProperties": false,
        "example": {
          "customer_email": "buyer@example.com",
          "license": {
            "license_id": "33333333-3333-4333-8333-333333333333",
            "license_model": "node_locked",
            "maintenance_days": 0,
            "maintenance_until": null,
            "max_version": "",
            "min_version": "",
            "product_id": "11111111-1111-4111-8111-111111111111",
            "updated_at": "2026-10-18T00:00:00Z"
          },
          "meter_rules": [],
          "usage": null
        },
        "properties": {
          "customer_email": {
            "description": "紐付いた顧客ポータルのメールアドレス。未割り当ての場合は空。",
            "type": "string"
          },
          "license": {
            "$ref": "#/components/schemas/LicenseCapabilities",
            "description": "ライセンス機能のスナップショット。"
          },
          "meter_rules": {
            "description": "機能の計量ルール。空の場合は未設定です。",
            "items": {
              "additionalProperties": false,
              "properties": {
                "allow_overage": {
                  "description": "機能の超過使用が許可されるかどうか。",
                  "type": "boolean"
                },
                "feature": {
                  "description": "従量制機能の識別子。ポリシーの機能に存在する必要があります。",
                  "pattern": "^[A-Za-z0-9_.-]{1,64}$",
                  "type": "string"
                },
                "limit": {
                  "description": "計量期間ごとに含まれる機能使用回数（ページサイズの上限ではありません）。",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "max_overage": {
                  "description": "許可される最大超過使用量。allow_overage が false の場合は無効です。",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "period": {
                  "description": "デフォルトの UTC 月次請求スナップショット。計量ルールは month/day/lifetime を使用し、使用量の行は具体的な期間キーを使用します。",
                  "enum": [
                    "month",
                    "day",
                    "lifetime"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "feature",
                "limit",
                "period"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "usage": {
            "anyOf": [
              {
                "description": "実際の機能使用記録。空の場合は null になることがあります。",
                "items": {
                  "$ref": "#/components/schemas/FeatureUsage"
                },
                "type": "array"
              },
              {
                "description": "実際の機能使用記録。空の場合は null になることがあります。",
                "type": "null"
              }
            ],
            "description": "実際の機能使用記録。空の場合は null になることがあります。"
          }
        },
        "required": [],
        "type": "object"
      },
      "LicenseCreate": {
        "additionalProperties": false,
        "description": "独自の duration_days を持つライセンスを発行します。timed/trial ライセンスには 1–36500 日が必要で、perpetual ライセンスでは省略／null が必要です。期間は初回の正常なアクティベーション時に始まります。",
        "properties": {
          "customer": {
            "description": "ダッシュボード検索用の顧客名または注文参照、最大 254 文字。",
            "maxLength": 254,
            "type": "string"
          },
          "customer_email": {
            "description": "紐付いた顧客ポータルのメールアドレス。未割り当ての場合は空。",
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "duration_days": {
            "description": "初回の正常なアクティベーションから始まるライセンス期間（日数）。timed/trial の発行には必須で、perpetual ライセンスでは省略または null。ポリシーから継承されることはありません。",
            "maximum": 36500,
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "policy_id": {
            "description": "この製品に属するライセンスポリシーの UUID。",
            "format": "uuid",
            "type": "string"
          },
          "product_id": {
            "description": "製品 ID（UUID）。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "policy_id"
        ],
        "type": "object"
      },
      "LicenseKeyReveal": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "key": {
            "description": "Original full license key, revealed only to a current Owner session.",
            "type": "string"
          },
          "key_prefix": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "key",
          "key_prefix"
        ],
        "type": "object"
      },
      "LicenseList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/License"
            },
            "type": "array"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "LicenseSecret": {
        "additionalProperties": false,
        "example": {
          "duration_days": 30,
          "expires_at": null,
          "first_activated_at": null,
          "id": "33333333-3333-4333-8333-333333333333",
          "key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
          "key_prefix": "lv_lic_AAAAAAA"
        },
        "properties": {
          "duration_days": {
            "description": "初回アクティベーションからの有効日数。perpetual ライセンスでは null。",
            "type": [
              "integer",
              "null"
            ]
          },
          "expires_at": {
            "anyOf": [
              {
                "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                "type": "null"
              }
            ],
            "description": "最終的なライセンス有効期限、UTC ISO 8601。初回アクティベーション前および perpetual ライセンスでは null。"
          },
          "first_activated_at": {
            "anyOf": [
              {
                "description": "初回の正常なアクティベーションのタイムスタンプ。アクティベーション前は null で、更新や移転によって変更されません。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "初回の正常なアクティベーションのタイムスタンプ。アクティベーション前は null で、更新や移転によって変更されません。",
                "type": "null"
              }
            ],
            "description": "初回の正常なアクティベーション、UTC ISO 8601。アクティベーション前は null。デバイス移転ではリセットされません。"
          },
          "id": {
            "description": "管理クエリ、更新、失効用のライセンスレコード UUID。アクティベーションキーではありません。",
            "format": "uuid",
            "type": "string"
          },
          "key": {
            "description": "lv_lic_ で始まる完全なライセンスキー。発行時に一度だけ表示されます。ベンダーは非公開で保存し、顧客に渡す必要があります。",
            "type": "string"
          },
          "key_prefix": {
            "description": "ダッシュボードで識別するためのキープレフィックス。ライセンスのアクティベーションには使用できません。",
            "type": "string"
          }
        },
        "required": [
          "id",
          "key",
          "key_prefix"
        ],
        "type": "object"
      },
      "LicenseUpdate": {
        "additionalProperties": false,
        "properties": {
          "customer": {
            "description": "ベンダーが定義する顧客ラベル。顧客ポータルのメールアドレスとは別です。",
            "maxLength": 254,
            "type": "string"
          },
          "features": {
            "description": "重複しない最大 32 個の機能識別子。それぞれ 1–64 文字の ASCII 英字、数字、ドット、ハイフン、アンダースコア。",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "max_devices": {
            "description": "ライセンスごとの最大同時デバイス数またはフローティング席数。",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "policy_id": {
            "description": "このライセンスを同じ製品のポリシーに切り替えます。変更には現在有効な preview_token が必要です。ライセンスキー、元の有効期間、使用量は保持されます。",
            "format": "uuid",
            "type": "string"
          },
          "preview_token": {
            "description": "このライセンスと対象ポリシーに対して POST /licenses/policy-preview が返すトークン。",
            "type": "string"
          },
          "status": {
            "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
            "enum": [
              "active",
              "suspended",
              "revoked"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "LicensingWebhook": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
            "format": "date-time",
            "type": "string"
          },
          "enabled": {
            "description": "HTTP が許可されるかどうか。ローカル開発専用です。",
            "type": "boolean"
          },
          "events": {
            "description": "空でない、重複のない購読イベント種別。",
            "items": {
              "enum": [
                "license.created",
                "license.updated",
                "license.renewed",
                "license.revoked",
                "license.activate",
                "license.deactivate",
                "license.consume",
                "license.expiring",
                "license.expired",
                "license.maintenance_expiring",
                "license.maintenance_expired"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "人が読める名前。長さの制約を参照してください。",
            "type": "string"
          },
          "updated_at": {
            "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
            "format": "date-time",
            "type": "string"
          },
          "url": {
            "description": "イベント受信先 URL。本番では公開 HTTPS を使用してください。",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "url",
          "events",
          "enabled",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "LicensingWebhookInput": {
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "description": "Webhook エンドポイントが有効かどうか。",
            "type": "boolean"
          },
          "events": {
            "description": "空でない、重複のない購読イベント種別。",
            "items": {
              "enum": [
                "license.created",
                "license.updated",
                "license.renewed",
                "license.revoked",
                "license.activate",
                "license.deactivate",
                "license.consume",
                "license.expiring",
                "license.expired",
                "license.maintenance_expiring",
                "license.maintenance_expired"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "人が読める名前。長さの制約を参照してください。",
            "maxLength": 120,
            "type": "string"
          },
          "secret": {
            "description": "Webhook 検証シークレット。指定する場合は 32–200 文字。更新時に省略すると保持されます。出力が空の場合は再発行されていません。",
            "maxLength": 200,
            "minLength": 32,
            "type": "string",
            "writeOnly": true
          },
          "url": {
            "description": "イベント受信先 URL。本番では公開 HTTPS を使用してください。",
            "format": "uri",
            "maxLength": 2000,
            "type": "string"
          }
        },
        "required": [
          "name",
          "url",
          "events",
          "enabled"
        ],
        "type": "object"
      },
      "LicensingWebhookList": {
        "additionalProperties": false,
        "properties": {
          "event_types": {
            "description": "サポートされるすべてのライセンスイベント種別。",
            "items": {
              "enum": [
                "license.created",
                "license.updated",
                "license.renewed",
                "license.revoked",
                "license.activate",
                "license.deactivate",
                "license.consume",
                "license.expiring",
                "license.expired",
                "license.maintenance_expiring",
                "license.maintenance_expired"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/LicensingWebhook"
            },
            "type": "array"
          }
        },
        "required": [],
        "type": "object"
      },
      "LicensingWebhookSecret": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "secret": {
            "description": "新しいエンドポイントでは一度だけ返され、保持された場合は空",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "LoggedOut": {
        "additionalProperties": false,
        "properties": {
          "logged_out": {
            "type": "boolean"
          }
        },
        "required": [
          "logged_out"
        ],
        "type": "object"
      },
      "Login": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          },
          "password": {
            "description": "12–128 UTF-8 バイト。文字数ではありません",
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "email",
          "password"
        ],
        "type": "object"
      },
      "LogoutTicket": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "expected_generation": {
            "description": "失効トランザクション内で比較する、期待されるデバイス紐付け世代。",
            "minimum": 1,
            "type": "integer"
          },
          "operation_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "product_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "release_token": {
            "description": "紐付け解除専用の権限。アクティベーション、検証、更新、機能消費はできません。失効待ちの間は SDK のログアウトジャーナルにのみ保持します。",
            "pattern": "^lv_out_[A-Za-z0-9_-]{43}$",
            "type": "string"
          }
        },
        "required": [
          "operation_id",
          "product_id",
          "activation_id",
          "expected_generation",
          "release_token"
        ],
        "type": "object"
      },
      "MailConnection": {
        "additionalProperties": false,
        "properties": {
          "check_status": {
            "enum": [
              "verified",
              "limited"
            ],
            "type": "string"
          },
          "delivery_mode": {
            "enum": [
              "file",
              "smtp",
              "resend",
              "brevo",
              "postmark",
              "mailgun"
            ],
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "mode": {
            "enum": [
              "file",
              "smtp",
              "resend",
              "brevo",
              "postmark",
              "mailgun"
            ],
            "type": "string"
          },
          "ok": {
            "description": "限定的なチェックでは false。認証情報と配信は確認されていません。",
            "type": "boolean"
          },
          "status": {
            "enum": [
              "connected"
            ],
            "type": "string"
          }
        },
        "required": [
          "status",
          "mode",
          "delivery_mode",
          "ok",
          "check_status"
        ],
        "type": "object"
      },
      "MailInput": {
        "additionalProperties": false,
        "description": "暗号化されたプラットフォームメール設定の部分更新。省略されたフィールドと他のプロバイダー設定は保持され、空の API キーと SMTP パスワードは既存の秘密情報を保持します。選択した有効サービスは完全に設定されている必要があります。本番環境ではファイルモードを利用できません。プラットフォーム管理者セッションと CSRF トークンが必要です。ベンダー管理 API キーではプラットフォームメール設定を変更できません。",
        "properties": {
          "from": {
            "type": "string"
          },
          "host": {
            "maxLength": 253,
            "type": "string"
          },
          "mode": {
            "enum": [
              "file",
              "smtp",
              "resend",
              "brevo",
              "postmark",
              "mailgun"
            ],
            "type": "string"
          },
          "password": {
            "description": "省略または空欄にすると既存の SMTP パスワードを保持します。",
            "maxLength": 1000,
            "type": "string",
            "writeOnly": true
          },
          "port": {
            "maximum": 65535,
            "minimum": 1,
            "type": "integer"
          },
          "providers": {
            "additionalProperties": false,
            "properties": {
              "brevo": {
                "$ref": "#/components/schemas/MailProviderInput"
              },
              "mailgun": {
                "$ref": "#/components/schemas/MailgunInput"
              },
              "postmark": {
                "$ref": "#/components/schemas/MailProviderInput"
              },
              "resend": {
                "$ref": "#/components/schemas/MailProviderInput"
              }
            },
            "required": [],
            "type": "object"
          },
          "tls_mode": {
            "enum": [
              "starttls",
              "implicit"
            ],
            "type": "string"
          },
          "username": {
            "maxLength": 254,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "MailJob": {
        "additionalProperties": false,
        "properties": {
          "attempts": {
            "type": "integer"
          },
          "cancel_reason": {
            "enum": [
              "",
              "platform_disabled",
              "customer_disabled",
              "coverage_changed",
              "reminder_window_changed",
              "renewal_state_changed",
              "purchase_unavailable",
              "workspace_unavailable",
              "recipient_unavailable",
              "unknown_notification"
            ],
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "delivered_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "kind": {
            "enum": [
              "",
              "purchase_success",
              "expiry_reminder",
              "auto_renewal_success",
              "auto_renewal_problem",
              "billing_test"
            ],
            "type": "string"
          },
          "mode": {
            "enum": [
              "",
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "recipient": {
            "type": "string"
          },
          "status": {
            "enum": [
              "pending",
              "running",
              "delivered",
              "failed",
              "cancelled"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "status",
          "attempts"
        ],
        "type": "object"
      },
      "MailJobList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/MailJob"
            },
            "maxItems": 50,
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "MailProviderInput": {
        "additionalProperties": false,
        "properties": {
          "api_key": {
            "description": "プロバイダー API キー。Postmark は Server API Token を使用します。省略または空欄にすると保存済みの秘密情報を保持します。",
            "maxLength": 4096,
            "type": "string",
            "writeOnly": true
          },
          "from": {
            "description": "確認済みの送信者メールアドレス。このプロバイダーを有効として選択する場合は必須です。",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "MailProviderSettings": {
        "additionalProperties": false,
        "properties": {
          "api_key_configured": {
            "type": "boolean"
          },
          "domain": {
            "description": "Mailgun の送信ドメイン。他のプロバイダーでは空。",
            "type": "string"
          },
          "from": {
            "type": "string"
          },
          "region": {
            "description": "Mailgun リージョン。他のプロバイダーでは空。",
            "enum": [
              "",
              "us",
              "eu"
            ],
            "type": "string"
          }
        },
        "required": [
          "from",
          "domain",
          "region",
          "api_key_configured"
        ],
        "type": "object"
      },
      "MailQueued": {
        "additionalProperties": false,
        "properties": {
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "enum": [
              "pending"
            ],
            "type": "string"
          }
        },
        "required": [
          "job_id",
          "status"
        ],
        "type": "object"
      },
      "MailSettings": {
        "additionalProperties": false,
        "properties": {
          "from": {
            "type": "string"
          },
          "host": {
            "type": "string"
          },
          "mode": {
            "enum": [
              "file",
              "smtp",
              "resend",
              "brevo",
              "postmark",
              "mailgun"
            ],
            "type": "string"
          },
          "password_configured": {
            "type": "boolean"
          },
          "port": {
            "type": "integer"
          },
          "providers": {
            "additionalProperties": false,
            "properties": {
              "brevo": {
                "$ref": "#/components/schemas/MailProviderSettings"
              },
              "mailgun": {
                "$ref": "#/components/schemas/MailProviderSettings"
              },
              "postmark": {
                "$ref": "#/components/schemas/MailProviderSettings"
              },
              "resend": {
                "$ref": "#/components/schemas/MailProviderSettings"
              }
            },
            "required": [
              "resend",
              "brevo",
              "postmark",
              "mailgun"
            ],
            "type": "object"
          },
          "tls_mode": {
            "enum": [
              "starttls",
              "implicit"
            ],
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        },
        "required": [
          "mode",
          "port",
          "password_configured",
          "providers"
        ],
        "type": "object"
      },
      "MailgunInput": {
        "additionalProperties": false,
        "properties": {
          "api_key": {
            "description": "Mailgun アカウント API キーまたはドメイン送信キー。省略または空欄にすると保存済みの秘密情報を保持します。",
            "maxLength": 4096,
            "type": "string",
            "writeOnly": true
          },
          "domain": {
            "description": "送信ドメイン。Mailgun が有効な場合は必須です。スキーム、パス、ポートは含めません。",
            "maxLength": 253,
            "type": "string"
          },
          "from": {
            "description": "確認済みの送信者メールアドレス。Mailgun が有効な場合は必須です。",
            "type": "string"
          },
          "region": {
            "default": "us",
            "description": "送信ドメインが配置されるリージョン。US と EU は別々の固定 API エンドポイントを使用します。",
            "enum": [
              "us",
              "eu"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "ManagementKeyBundle": {
        "additionalProperties": false,
        "properties": {
          "keys": {
            "description": "製品の現在および過去の署名公開鍵。",
            "items": {
              "$ref": "#/components/schemas/SigningKey"
            },
            "type": "array"
          },
          "product_id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "keys"
        ],
        "type": "object"
      },
      "ManualRefundInput": {
        "additionalProperties": false,
        "properties": {
          "customer_agreement": {
            "maxLength": 3000,
            "type": "string"
          },
          "evidence": {
            "maxLength": 3000,
            "type": "string"
          }
        },
        "required": [
          "customer_agreement",
          "evidence"
        ],
        "type": "object"
      },
      "Me": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_platform_admin": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "enum": [
              "owner",
              "read_only"
            ],
            "type": "string"
          },
          "tenant_id": {
            "format": "uuid",
            "type": "string"
          },
          "tenant_name": {
            "type": "string"
          }
        },
        "required": [
          "tenant_id",
          "id",
          "role",
          "is_platform_admin"
        ],
        "type": "object"
      },
      "Member": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_platform_admin": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "enum": [
              "owner",
              "read_only"
            ],
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "disabled"
            ],
            "type": "string"
          },
          "verified": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "role",
          "status",
          "verified"
        ],
        "type": "object"
      },
      "MemberList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Member"
            },
            "type": "array"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "MemberUpdate": {
        "additionalProperties": false,
        "properties": {
          "role": {
            "enum": [
              "owner",
              "read_only"
            ],
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "disabled"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "MonthInput": {
        "additionalProperties": false,
        "properties": {
          "month": {
            "description": "UTC の月 YYYY-MM。クエリ値を省略すると現在の月を使用します。請求ジョブには締め済みの月が必要です。",
            "pattern": "^[0-9]{4}-[0-9]{2}$",
            "type": "string"
          }
        },
        "required": [
          "month"
        ],
        "type": "object"
      },
      "Notice": {
        "additionalProperties": false,
        "properties": {
          "message": {
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object"
      },
      "OfflineReleaseResult": {
        "additionalProperties": false,
        "example": {
          "activation_id": "44444444-4444-4444-8444-444444444444",
          "deactivated": true
        },
        "properties": {
          "activation_id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "deactivated": {
            "description": "HTTP が許可されるかどうか。ローカル開発専用です。",
            "type": "boolean"
          }
        },
        "required": [
          "activation_id",
          "deactivated"
        ],
        "type": "object"
      },
      "OfflineRequest": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "デバイスアクティベーションまたはフローティングセッションのレコード UUID。",
            "format": "uuid",
            "type": "string"
          },
          "app_version": {
            "description": "通常のアクティベーションでは空。バージョンまたはメンテナンス制限を使用する場合にのみ、実際に公開されたアプリケーションバージョンを指定します。",
            "pattern": "^$|^(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})$",
            "type": "string"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "type": "integer"
          },
          "device_id": {
            "description": "SDK は LicenovaDevice/v3 を使用して製品単位の OS とハードウェア ID を導出します。設定で現在のマシンを上書きすることはできません。",
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "device_name": {
            "description": "人が読めるデバイスラベル。セキュリティ上の ID ではありません。",
            "maxLength": 120,
            "type": "string"
          },
          "device_profile": {
            "$ref": "#/components/schemas/DeviceProfile",
            "description": "SDK が生成するデバイス ID。存在する場合は必要なすべての子フィールドを指定します。"
          },
          "license_key": {
            "description": "元のライセンスキー。activate のみで使用する 1 回限りの lv_tmp_ コード。その後はランタイム操作にマシンに紐付いた lv_dev_ 認証情報を使用します。SDK は認証情報をリースとは別に永続化します。",
            "pattern": "^lv_(lic|tmp|dev)_[A-Za-z0-9_-]{43}$",
            "type": "string",
            "writeOnly": true
          },
          "operation": {
            "description": "操作名。一括処理は create/renew/revoke/apply_policy を、オフラインリクエストは activate/deactivate をサポートします。",
            "enum": [
              "activate",
              "deactivate"
            ],
            "type": "string"
          },
          "product_id": {
            "description": "現在のワークスペースの製品 UUID。",
            "format": "uuid",
            "type": "string"
          },
          "request_id": {
            "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
            "format": "uuid",
            "type": "string"
          },
          "session_id": {
            "description": "フローティングインスタンスのセッション識別子。node-locked ライセンスでは省略できます。",
            "format": "uuid",
            "type": "string"
          },
          "version": {
            "const": 1,
            "description": "オブジェクトに応じて、ポリシーリビジョン、製品 major.minor.patch バージョン、またはオフラインプロトコルバージョン 1。",
            "type": "integer"
          }
        },
        "required": [
          "version",
          "request_id",
          "created_at",
          "operation",
          "product_id",
          "license_key",
          "device_id"
        ],
        "type": "object"
      },
      "OfflineResponse": {
        "additionalProperties": false,
        "example": {
          "operation": "deactivate",
          "request_id": "55555555-5555-4555-8555-555555555555",
          "result": {
            "activation_id": "44444444-4444-4444-8444-444444444444",
            "deactivated": true
          },
          "version": 1
        },
        "properties": {
          "operation": {
            "description": "操作名。一括処理は create/renew/revoke/apply_policy を、オフラインリクエストは activate/deactivate をサポートします。",
            "enum": [
              "activate",
              "deactivate"
            ],
            "type": "string"
          },
          "request_id": {
            "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
            "format": "uuid",
            "type": "string"
          },
          "result": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RuntimeResult",
                "description": "オフライン操作の結果：アクティベーションは署名済みリースを返し、解放は deactivated を返します。"
              },
              {
                "$ref": "#/components/schemas/OfflineReleaseResult",
                "description": "オフライン操作の結果：アクティベーションは署名済みリースを返し、解放は deactivated を返します。"
              }
            ],
            "description": "オフライン操作の結果：アクティベーションは署名済みリースを返し、解放は deactivated を返します。"
          },
          "version": {
            "const": 1,
            "description": "オブジェクトに応じて、ポリシーリビジョン、製品 major.minor.patch バージョン、またはオフラインプロトコルバージョン 1。",
            "type": "integer"
          }
        },
        "required": [
          "version",
          "request_id",
          "operation",
          "result"
        ],
        "type": "object"
      },
      "OnboardingInput": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "description": "製品の説明。空でも構いません。",
            "maxLength": 1000,
            "type": "string"
          },
          "duration_days": {
            "description": "生成されたテストライセンスのみの期間。timed/trial ではデフォルト 7。生成されたポリシーには保存されません。",
            "maximum": 36500,
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "features": {
            "default": [
              "export"
            ],
            "description": "重複しない最大 32 個の機能識別子。それぞれ 1–64 文字の ASCII 英字、数字、ドット、ハイフン、アンダースコア。",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0,
                "description": "ハートビート間隔（秒）：0 は無効、それ以外は 600–86400。省略時はサーバーのデフォルトを使用し、オフライン許可とは独立しています。"
              },
              {
                "description": "ハートビート間隔（秒）：0 は無効、それ以外は 600–86400。省略時はサーバーのデフォルトを使用し、オフライン許可とは独立しています。",
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "0 は定期ハートビートを明示的に無効にします。それ以外は 600–86400 秒（最低 10 分）。オフライン許可とは独立しています。",
            "type": "integer"
          },
          "license_model": {
            "default": "node_locked",
            "description": "node_locked デバイス紐付けまたは floating 席。",
            "enum": [
              "node_locked",
              "floating"
            ],
            "type": "string"
          },
          "max_devices": {
            "default": 1,
            "description": "ライセンスごとの最大同時デバイス数またはフローティング席数。",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "default": "trial",
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "name": {
            "description": "人が読める名前。長さの制約を参照してください。",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "offline_mode": {
            "description": "limited、none、または permanent のオフライン許可。ライセンスの有効期限は引き続き適用されます。",
            "enum": [
              "limited",
              "none",
              "permanent"
            ],
            "type": "string"
          },
          "offline_seconds": {
            "description": "Limited：1–31536000 秒。ハートビートが有効な場合は少なくとも 3 × heartbeat_seconds。none/permanent：0",
            "maximum": 31536000,
            "minimum": 0,
            "type": "integer"
          },
          "request_id": {
            "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "name"
        ],
        "type": "object"
      },
      "OnboardingResult": {
        "additionalProperties": false,
        "example": {
          "config": {
            "allow_http": false,
            "app_version": "1.0.0",
            "base_url": "https://license.example.com",
            "cache_path": "",
            "device_name": "My application",
            "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "product_id": "11111111-1111-4111-8111-111111111111",
            "trusted_keys": {
              "66666666-6666-4666-8666-666666666666": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
            }
          },
          "license_id": "33333333-3333-4333-8333-333333333333",
          "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
          "next": "Choose a language and download the configured SDK bundle.",
          "policy_id": "22222222-2222-4222-8222-222222222222",
          "product_id": "11111111-1111-4111-8111-111111111111"
        },
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SDKConfig",
            "description": "ライセンス秘密情報を含む非公開テスト SDK 設定。"
          },
          "license_id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "license_key": {
            "description": "アクティベーション時に指定する完全な顧客ライセンスキー。製品初期化コードとサンプルのダウンロードにはこの秘密情報は含まれません。オフラインリクエストは SDK が提供する認証情報を使用します。",
            "type": "string"
          },
          "next": {
            "description": "予約済みの翌月のデフォルトプラン、または null。",
            "type": "string"
          },
          "policy_id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "product_id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "policy_id",
          "license_id",
          "license_key",
          "config",
          "next"
        ],
        "type": "object"
      },
      "OperatorProfile": {
        "additionalProperties": false,
        "properties": {
          "backup_region": {
            "maxLength": 500,
            "type": "string"
          },
          "contact": {
            "maxLength": 500,
            "type": "string"
          },
          "country": {
            "maxLength": 500,
            "type": "string"
          },
          "financial_retention_years": {
            "description": "ゼロまたは省略は未確認を意味し、公開文書に含まれません。",
            "maximum": 30,
            "minimum": 0,
            "type": "integer"
          },
          "hosting_provider": {
            "maxLength": 500,
            "type": "string"
          },
          "mail_provider": {
            "maxLength": 500,
            "type": "string"
          },
          "markets": {
            "maxLength": 500,
            "type": "string"
          },
          "operator": {
            "maxLength": 500,
            "type": "string"
          },
          "processing_grounds": {
            "maxLength": 500,
            "type": "string"
          },
          "server_region": {
            "maxLength": 500,
            "type": "string"
          },
          "transfer_safeguards": {
            "maxLength": 500,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "OriginalRefundInput": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
            "type": "string"
          },
          "reason": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "reason",
          "request_id"
        ],
        "type": "object"
      },
      "OriginalRefundResult": {
        "additionalProperties": false,
        "properties": {
          "case_id": {
            "format": "uuid",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/ProviderRefund"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "OveragePlan": {
        "additionalProperties": false,
        "properties": {
          "api_hard_limit": {
            "description": "API 枠の上限でランタイム呼び出しを停止するかどうか。",
            "type": "boolean"
          },
          "api_unit_micros": {
            "description": "超過ランタイム呼び出し 1 回あたりの価格（100 万分の 1 単位）。",
            "minimum": 0,
            "type": "integer"
          },
          "base_micros": {
            "description": "通貨単位の 100 万分の 1 で表した基本料金。",
            "type": "integer"
          },
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "type": "string"
          },
          "description": {
            "description": "請求オファーの説明。",
            "type": "string"
          },
          "enabled": {
            "description": "請求オファーが購入可能かどうか。",
            "type": "boolean"
          },
          "hard_limit": {
            "description": "枠の上限に達した時点で新しい課金対象デバイスを拒否するかどうか。",
            "type": "boolean"
          },
          "included_api_calls": {
            "description": "null = 無制限、0 = 成功した呼び出しの付属枠なし",
            "maximum": 1000000000000,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "included_devices": {
            "description": "含まれるアクティブデバイス枠。",
            "type": "integer"
          },
          "name": {
            "description": "請求オファーの表示名。",
            "type": "string"
          },
          "plan": {
            "description": "公開カタログの安定した請求プラン識別子。",
            "type": "string"
          },
          "price_version": {
            "description": "固定された価格リビジョン。古い入力は PLAN_VERSION_CONFLICT を引き起こすことがあります。",
            "type": "string"
          },
          "public": {
            "description": "請求オファーが公開一覧に掲載されるかどうか。",
            "type": "boolean"
          },
          "renewal_only": {
            "description": "既存の支払い済みまたはギフトの顧客は、同じ環境と通貨で事前または期限切れ後に更新できます。新規の公開購入には表示されません。",
            "type": "boolean"
          },
          "sort_order": {
            "description": "請求オファーの表示順。",
            "type": "integer"
          },
          "terms": {
            "anyOf": [
              {
                "description": "利用可能な購入期間とその価格。",
                "items": {
                  "$ref": "#/components/schemas/PlanTermPrice"
                },
                "type": "array"
              },
              {
                "description": "利用可能な購入期間とその価格。",
                "type": "null"
              }
            ],
            "description": "利用可能な購入期間とその価格。"
          },
          "unit_micros": {
            "description": "超過アクティブデバイス 1 台あたりの価格（100 万分の 1 単位）。",
            "type": "integer"
          },
          "updated_at": {
            "description": "最終更新タイムスタンプ（UTC）。",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "OveragePreference": {
        "additionalProperties": false,
        "properties": {
          "block_api_overage": {
            "description": "付属枠を超えるランタイム API 呼び出しをブロックするかどうか。",
            "type": "boolean"
          },
          "block_device_overage": {
            "description": "付属枠を超える新しい課金対象デバイスをブロックするかどうか。",
            "type": "boolean"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "最終更新タイムスタンプ（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "description": "超過設定のリビジョン。",
            "type": "string"
          }
        },
        "required": [
          "mode",
          "block_device_overage",
          "block_api_overage",
          "version",
          "updated_at"
        ],
        "type": "object"
      },
      "OverageSettings": {
        "additionalProperties": false,
        "properties": {
          "customer_api_settings_enabled": {
            "description": "顧客が API 超過のブロックを設定できるかどうか。",
            "type": "boolean"
          },
          "customer_device_settings_enabled": {
            "description": "顧客がデバイス超過のブロックを設定できるかどうか。",
            "type": "boolean"
          },
          "plan": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OveragePlan",
                "description": "公開カタログの安定した請求プラン識別子。"
              },
              {
                "description": "公開カタログの安定した請求プラン識別子。",
                "type": "null"
              }
            ],
            "description": "超過の判断に使用する現在の購入済み／デフォルト枠ルール。利用できない場合は null。"
          },
          "preference": {
            "$ref": "#/components/schemas/OveragePreference",
            "description": "保存された顧客の超過設定。"
          }
        },
        "required": [
          "preference",
          "plan",
          "customer_device_settings_enabled",
          "customer_api_settings_enabled"
        ],
        "type": "object"
      },
      "OverageSettingsInput": {
        "additionalProperties": false,
        "properties": {
          "block_api_overage": {
            "type": "boolean"
          },
          "block_device_overage": {
            "type": "boolean"
          },
          "expected_version": {
            "description": "GET の preference.version を使用します。初回保存では空。他のタブからの変更は 409 を返します。少なくとも 1 つの超過選択が必要です。",
            "type": "string"
          }
        },
        "required": [
          "expected_version"
        ],
        "type": "object"
      },
      "PaddleCheck": {
        "additionalProperties": false,
        "properties": {
          "connected": {
            "description": "このチャネルが新しいチェックアウトを受け付けるかどうか。認証情報を保持していれば過去の照合は引き続き可能です。",
            "type": "boolean"
          },
          "mode": {
            "description": "決済環境。Sandbox と live の記録は分離されています。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          }
        },
        "required": [
          "connected",
          "mode"
        ],
        "type": "object"
      },
      "PaddleOrder": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "固定されたサービス全体の価格（最小通貨単位）。ウォレットチャージや混合決済はありません。",
            "type": "integer"
          },
          "applied_at": {
            "anyOf": [
              {
                "description": "ローカルのチェックアウトインテントを保存した UTC 時刻。",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "検証済み支払いがサービスを有効化またはウォレットチャージを入金した UTC 時刻。purchase_id と upgrade_id が null の場合はチャージを示します。"
          },
          "created_at": {
            "description": "ローカルのチェックアウトインテントを保存した UTC 時刻。",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "id": {
            "description": "ローカルのサービス決済識別子。",
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "description": "決済環境。Sandbox と live の記録は分離されています。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "paid_at": {
            "anyOf": [
              {
                "description": "ローカルのチェックアウトインテントを保存した UTC 時刻。",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "バックエンドが完了済み Paddle 取引を検証した UTC 時刻。"
          },
          "purchase_id": {
            "anyOf": [
              {
                "description": "ローカルのサービス決済識別子。",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "既存の保留中サービス購入または更新。upgrade_id と同時には指定できません。"
          },
          "refunded_cents": {
            "description": "固定されたサービス全体の価格（最小通貨単位）。ウォレットチャージや混合決済はありません。",
            "type": "integer"
          },
          "request_id": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "status": {
            "description": "決済ライフサイクル。回収済み資金に運営者の審査と返金が必要な場合の paid_unapplied を含みます。",
            "enum": [
              "creating",
              "created",
              "completed",
              "paid_unapplied",
              "partially_refunded",
              "refunded"
            ],
            "type": "string"
          },
          "transaction_id": {
            "anyOf": [
              {
                "description": "決済サービスの表示名。",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "紐付いた Paddle Billing 取引識別子。元の作成結果が保留中の場合は null。"
          },
          "upgrade_id": {
            "anyOf": [
              {
                "description": "ローカルのサービス決済識別子。",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "既存の保留中アップグレード見積もり。purchase_id と同時には指定できません。"
          }
        },
        "required": [
          "id",
          "request_id",
          "mode",
          "transaction_id",
          "purchase_id",
          "upgrade_id",
          "currency",
          "amount_cents",
          "refunded_cents",
          "status",
          "paid_at",
          "applied_at",
          "created_at"
        ],
        "type": "object"
      },
      "PaddleOrderInput": {
        "additionalProperties": false,
        "description": "固定された購入／アップグレード 1 件を支払うか、サービス ID を指定せず金額と通貨でウォレットチャージを作成します。安定した request_id は元の決済を返し、意図、金額、通貨の変更は拒否されます。独立して検証された完了済み支払いのみがウォレットに入金またはサービスを有効化します。チャージの戻り先はウォレットです。作成結果が不明な場合は元の Webhook から復旧し、盲目的に再作成しません。",
        "oneOf": [
          {
            "not": {
              "anyOf": [
                {
                  "required": [
                    "amount"
                  ]
                },
                {
                  "required": [
                    "currency"
                  ]
                }
              ]
            },
            "properties": {
              "purchase_id": {
                "format": "uuid",
                "type": "string"
              },
              "upgrade_id": {
                "type": "null"
              }
            },
            "required": [
              "purchase_id"
            ]
          },
          {
            "not": {
              "anyOf": [
                {
                  "required": [
                    "amount"
                  ]
                },
                {
                  "required": [
                    "currency"
                  ]
                }
              ]
            },
            "properties": {
              "purchase_id": {
                "type": "null"
              },
              "upgrade_id": {
                "format": "uuid",
                "type": "string"
              }
            },
            "required": [
              "upgrade_id"
            ]
          },
          {
            "properties": {
              "purchase_id": {
                "type": "null"
              },
              "upgrade_id": {
                "type": "null"
              }
            },
            "required": [
              "amount",
              "currency"
            ]
          }
        ],
        "properties": {
          "amount": {
            "description": "ウォレットチャージにのみ必須。設定された範囲内の表示用小数金額。サービス注文はクライアントの金額を拒否します。",
            "pattern": "^\\d+(?:\\.\\d{1,2})?$",
            "type": "string"
          },
          "currency": {
            "description": "ウォレットチャージにのみ必須で、このプロバイダーで有効になっている必要があります。",
            "type": "string"
          },
          "overage_accepted": {
            "description": "表示された課金対象の超過に対する別個の明示的な許可。",
            "type": "boolean"
          },
          "policy_version": {
            "description": "現在公開されている変更不可のポリシーバージョン。運営者がポリシーを公開した後は、いずれの決済環境でも同意で保護された操作に必要です。",
            "type": "string"
          },
          "purchase_id": {
            "anyOf": [
              {
                "description": "ローカルのサービス決済識別子。",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "既存の保留中サービス購入または更新。upgrade_id と同時には指定できません。"
          },
          "request_id": {
            "description": "呼び出し元が生成する安定したリクエストキー。再実行では元のチェックアウトを返します。",
            "maxLength": 80,
            "type": "string"
          },
          "terms_accepted": {
            "description": "デフォルトで未チェックの明示的な同意。",
            "type": "boolean"
          },
          "upgrade_id": {
            "anyOf": [
              {
                "description": "ローカルのサービス決済識別子。",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "既存の保留中アップグレード見積もり。purchase_id と同時には指定できません。"
          }
        },
        "required": [
          "request_id"
        ],
        "type": "object"
      },
      "PaddleOrderList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "この管理者またはワークスペースに表示されるレコード。",
            "items": {
              "$ref": "#/components/schemas/PaddleOrder"
            },
            "type": "array"
          },
          "total": {
            "description": "固定されたサービス全体の価格（最小通貨単位）。ウォレットチャージや混合決済はありません。",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "PaddleOrderResult": {
        "additionalProperties": false,
        "properties": {
          "approval_url": {
            "description": "紐付いた Paddle 取引を開くローカルチェックアウトページ。",
            "format": "uri",
            "type": "string"
          },
          "client_token": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "order": {
            "$ref": "#/components/schemas/PaddleOrder",
            "description": "ワークスペース単位の Paddle サービス決済レコード。"
          },
          "return_url": {
            "description": "チャージの場合はウォレットダッシュボード URL、サービス決済の場合は価格照合 URL。戻り URL のみでは支払いを証明しません。",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "order",
          "client_token",
          "approval_url",
          "return_url"
        ],
        "type": "object"
      },
      "PaddleReconcileInput": {
        "additionalProperties": false,
        "properties": {
          "transaction_id": {
            "description": "任意の元の txn_ ID。作成レスポンスの喪失からの復旧に使用します。バックエンドはローカル注文、テナント、製品、通貨、金額を独立して検証します。既に紐付いた取引を置き換えることはできません。",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "PaddleSettings": {
        "additionalProperties": false,
        "properties": {
          "api_key_configured": {
            "description": "このチャネルが新しいチェックアウトを受け付けるかどうか。認証情報を保持していれば過去の照合は引き続き可能です。",
            "type": "boolean"
          },
          "checkout_url": {
            "description": "承認済みドメインのこのページを Paddle のデフォルト決済リンクとして使用します。",
            "format": "uri",
            "type": "string"
          },
          "client_token": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "currencies": {
            "description": "このチャネルが受け付ける重複しない通貨。金額は小数点以下 2 桁を使用します。",
            "items": {
              "description": "決済サービスの表示名。",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "description": "このチャネルが新しいチェックアウトを受け付けるかどうか。認証情報を保持していれば過去の照合は引き続き可能です。",
            "type": "boolean"
          },
          "maximum_cents": {
            "description": "ウォレットの最大チャージ額（最小通貨単位）。デフォルトは 100000 で、minimum_cents 以上である必要があります。",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "minimum_cents": {
            "description": "ウォレットの最低チャージ額（最小通貨単位）。デフォルトは 100。",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "description": "決済環境。Sandbox と live の記録は分離されています。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "product_id": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "version": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "webhook_secret_configured": {
            "description": "このチャネルが新しいチェックアウトを受け付けるかどうか。認証情報を保持していれば過去の照合は引き続き可能です。",
            "type": "boolean"
          },
          "webhook_url": {
            "description": "この絶対 URL を Paddle の通知先として登録します。",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "mode",
          "client_token",
          "product_id",
          "currencies",
          "api_key_configured",
          "webhook_secret_configured",
          "version",
          "webhook_url",
          "checkout_url"
        ],
        "type": "object"
      },
      "PaddleSettingsInput": {
        "additionalProperties": false,
        "properties": {
          "api_key": {
            "description": "保存時に暗号化されます。clear_api_key が true でない限り、空欄は既存の値を保持します。",
            "maxLength": 1000,
            "type": "string",
            "writeOnly": true
          },
          "clear_api_key": {
            "description": "このチャネルが新しいチェックアウトを受け付けるかどうか。認証情報を保持していれば過去の照合は引き続き可能です。",
            "type": "boolean"
          },
          "clear_webhook_secret": {
            "description": "このチャネルが新しいチェックアウトを受け付けるかどうか。認証情報を保持していれば過去の照合は引き続き可能です。",
            "type": "boolean"
          },
          "client_token": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "currencies": {
            "description": "このチャネルが受け付ける重複しない通貨。金額は小数点以下 2 桁を使用します。",
            "items": {
              "description": "決済サービスの表示名。",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "description": "このチャネルが新しいチェックアウトを受け付けるかどうか。認証情報を保持していれば過去の照合は引き続き可能です。",
            "type": "boolean"
          },
          "expected_version": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "maximum_cents": {
            "description": "ウォレットの最大チャージ額（最小通貨単位）。デフォルトは 100000 で、minimum_cents 以上である必要があります。",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "minimum_cents": {
            "description": "ウォレットの最低チャージ額（最小通貨単位）。デフォルトは 100。",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "description": "決済環境。Sandbox と live の記録は分離されています。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "product_id": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "webhook_secret": {
            "description": "正確な生の Webhook 本文の認証に使用する非公開エンドポイントシークレット。",
            "maxLength": 1000,
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "enabled",
          "mode",
          "client_token",
          "product_id",
          "currencies",
          "expected_version"
        ],
        "type": "object"
      },
      "PaddleWebhookEvent": {
        "description": "Paddle-Signature で認証され、Paddle API を通じて独立して照合された未変更の Paddle Billing イベント。",
        "type": "object"
      },
      "PasswordSet": {
        "additionalProperties": false,
        "properties": {
          "password_set": {
            "type": "boolean"
          }
        },
        "required": [
          "password_set"
        ],
        "type": "object"
      },
      "PayPalCheck": {
        "additionalProperties": false,
        "properties": {
          "connected": {
            "type": "boolean"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "PayPalInput": {
        "additionalProperties": false,
        "properties": {
          "clear_secret": {
            "type": "boolean"
          },
          "client_id": {
            "maxLength": 1000,
            "type": "string"
          },
          "client_secret": {
            "description": "clear_secret=true でない限り、空欄は保存済み Secret を保持します",
            "maxLength": 1000,
            "type": "string",
            "writeOnly": true
          },
          "currencies": {
            "items": {
              "pattern": "^[A-Z]{3}$",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "type": "boolean"
          },
          "expected_version": {
            "type": "string"
          },
          "maximum_cents": {
            "maximum": 100000000,
            "type": "integer"
          },
          "merchant_id": {
            "maxLength": 64,
            "type": "string"
          },
          "minimum_cents": {
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "webhook_id": {
            "maxLength": 1000,
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "mode",
          "client_id",
          "merchant_id",
          "webhook_id",
          "currencies",
          "minimum_cents",
          "maximum_cents",
          "expected_version"
        ],
        "type": "object"
      },
      "PayPalOrder": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "金額（100 分の 1 単位）。台帳明細は正の入金または負の引き落としになります。",
            "type": "integer"
          },
          "approval_url": {
            "description": "PayPal の支払者承認 URL。支払いの証拠ではありません。",
            "format": "uri",
            "type": "string"
          },
          "capture_id": {
            "description": "PayPal 売上確定識別子。",
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "credited_at": {
            "anyOf": [
              {
                "description": "チャージが入金された時刻、または null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "チャージが入金された時刻、または null。",
                "type": "null"
              }
            ],
            "description": "チャージが入金された時刻、または null。"
          },
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "paypal_order_id": {
            "description": "PayPal 注文識別子。ローカルレコード UUID とは異なります。",
            "type": [
              "string",
              "null"
            ]
          },
          "purchase_id": {
            "description": "関連するパッケージ購入 UUID。",
            "type": [
              "string",
              "null"
            ]
          },
          "refunded_cents": {
            "description": "累計返金額（100 分の 1 単位）。",
            "type": "integer"
          },
          "request_id": {
            "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
            "type": "string"
          },
          "status": {
            "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
            "enum": [
              "creating",
              "created",
              "credited",
              "refunded"
            ],
            "type": "string"
          },
          "upgrade_id": {
            "anyOf": [
              {
                "description": "関連するアップグレード UUID、または空。",
                "format": "uuid",
                "type": "string"
              },
              {
                "description": "関連するアップグレード UUID、または空。",
                "type": "null"
              }
            ],
            "description": "関連するアップグレード UUID、または空。"
          }
        },
        "required": [],
        "type": "object"
      },
      "PayPalOrderList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/PayPalOrder"
            },
            "type": "array"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "PayPalRefund": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "要求された元の決済経路への現金返金額（セント）。",
            "type": "integer"
          },
          "attempts": {
            "type": "integer"
          },
          "case_id": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "order_id": {
            "format": "uuid",
            "type": "string"
          },
          "paypal_refund_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "reason": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "reserved": {
            "description": "ウォレット金額が確保されている間は True。通信タイムアウト時は同じリクエストが照合されるまで確保を保持します。",
            "type": "boolean"
          },
          "status": {
            "enum": [
              "pending",
              "completed",
              "failed"
            ],
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "order_id",
          "request_id",
          "mode",
          "currency",
          "amount_cents",
          "reason",
          "status",
          "reserved",
          "attempts",
          "paypal_refund_id",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "PayPalSettings": {
        "additionalProperties": false,
        "properties": {
          "client_id": {
            "maxLength": 1000,
            "type": "string"
          },
          "currencies": {
            "items": {
              "pattern": "^[A-Z]{3}$",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "type": "boolean"
          },
          "maximum_cents": {
            "maximum": 100000000,
            "type": "integer"
          },
          "merchant_id": {
            "maxLength": 64,
            "type": "string"
          },
          "minimum_cents": {
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "secret_configured": {
            "type": "boolean"
          },
          "version": {
            "type": "string"
          },
          "webhook_id": {
            "maxLength": 1000,
            "type": "string"
          },
          "webhook_url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "PaymentChannel": {
        "additionalProperties": false,
        "properties": {
          "currencies": {
            "description": "このチャネルが受け付ける重複しない通貨。金額は小数点以下 2 桁を使用します。",
            "items": {
              "description": "決済サービスの表示名。",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "description": "このチャネルが新しいチェックアウトを受け付けるかどうか。認証情報を保持していれば過去の照合は引き続き可能です。",
            "type": "boolean"
          },
          "mode": {
            "description": "決済環境。Sandbox と live の記録は分離されています。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "name": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "provider": {
            "description": "決済プロバイダー：PayPal、Paddle または Waffo Pancake。",
            "enum": [
              "paypal",
              "paddle",
              "waffo"
            ],
            "type": "string"
          },
          "version": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "wallet_topup": {
            "description": "このチャネルが新しいチェックアウトを受け付けるかどうか。認証情報を保持していれば過去の照合は引き続き可能です。",
            "type": "boolean"
          }
        },
        "required": [
          "provider",
          "name",
          "enabled",
          "mode",
          "currencies",
          "wallet_topup"
        ],
        "type": "object"
      },
      "PaymentChannelInput": {
        "additionalProperties": false,
        "properties": {
          "paddle_enabled": {
            "description": "このチャネルが新しいチェックアウトを受け付けるかどうか。認証情報を保持していれば過去の照合は引き続き可能です。",
            "type": "boolean"
          },
          "paddle_version": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "paypal_enabled": {
            "description": "このチャネルが新しいチェックアウトを受け付けるかどうか。認証情報を保持していれば過去の照合は引き続き可能です。",
            "type": "boolean"
          },
          "paypal_version": {
            "description": "決済サービスの表示名。",
            "type": "string"
          },
          "waffo_enabled": {
            "description": "任意の Waffo スイッチ。省略されたフィールドは現在の状態を保持します。",
            "type": "boolean"
          },
          "waffo_version": {
            "description": "Waffo スイッチの変更時に必要な設定バージョン。",
            "type": "string"
          }
        },
        "required": [
          "paypal_enabled",
          "paddle_enabled",
          "paypal_version",
          "paddle_version"
        ],
        "type": "object"
      },
      "PaymentChannels": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "この管理者またはワークスペースに表示されるレコード。",
            "items": {
              "$ref": "#/components/schemas/PaymentChannel"
            },
            "type": "array"
          },
          "mode": {
            "description": "決済環境。Sandbox と live の記録は分離されています。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          }
        },
        "required": [
          "items",
          "mode"
        ],
        "type": "object"
      },
      "PendingPlan": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "type": "string"
          },
          "effective_month": {
            "description": "スケジュールが有効になる UTC の月 YYYY-MM。",
            "type": "string"
          },
          "plan": {
            "description": "公開カタログの安定した請求プラン識別子。",
            "type": "string"
          },
          "price_version": {
            "description": "固定された価格リビジョン。古い入力は PLAN_VERSION_CONFLICT を引き起こすことがあります。",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "Period": {
        "additionalProperties": false,
        "properties": {
          "base_covered": {
            "description": "購入したパッケージが既に基本料金をカバーしているかどうか。",
            "type": "boolean"
          },
          "base_micros": {
            "description": "通貨単位の 100 万分の 1 で表した基本料金。",
            "type": "integer"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "hard_limit": {
            "description": "枠の上限に達した時点で新しい課金対象デバイスを拒否するかどうか。",
            "type": "boolean"
          },
          "included_devices": {
            "description": "含まれるアクティブデバイス枠。",
            "type": "integer"
          },
          "month": {
            "description": "UTC の月 YYYY-MM。クエリ値を省略すると現在の月を使用します。請求ジョブには締め済みの月が必要です。",
            "type": "string"
          },
          "payment_mode": {
            "description": "決済環境、sandbox または live。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "description": "公開カタログの安定した請求プラン識別子。",
            "type": "string"
          },
          "plan_name": {
            "description": "プランの表示名。",
            "type": "string"
          },
          "price_version": {
            "description": "固定された価格リビジョン。古い入力は PLAN_VERSION_CONFLICT を引き起こすことがあります。",
            "type": "string"
          },
          "unit_micros": {
            "description": "超過アクティブデバイス 1 台あたりの価格（100 万分の 1 単位）。",
            "type": "integer"
          }
        },
        "required": [
          "month",
          "plan",
          "currency",
          "price_version"
        ],
        "type": "object"
      },
      "PlanChange": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "plan": {
            "description": "公開カタログの安定した請求プラン識別子。",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          },
          "price_version": {
            "description": "固定された価格リビジョン。古い入力は PLAN_VERSION_CONFLICT を引き起こすことがあります。",
            "type": "string"
          }
        },
        "required": [
          "plan",
          "currency"
        ],
        "type": "object"
      },
      "PlanGift": {
        "additionalProperties": false,
        "properties": {
          "batch_id": {
            "format": "uuid",
            "type": "string"
          },
          "cancel_reason": {
            "type": "string"
          },
          "cancelled_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "cancelled_by": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "ends_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "purchase_id": {
            "format": "uuid",
            "type": "string"
          },
          "starts_at": {
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "enum": [
              "granted",
              "cancelled"
            ],
            "type": "string"
          },
          "tenant_id": {
            "format": "uuid",
            "type": "string"
          },
          "user_id": {
            "format": "uuid",
            "type": "string"
          },
          "value_cents": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "batch_id",
          "tenant_id",
          "user_id",
          "purchase_id",
          "value_cents",
          "status",
          "starts_at",
          "ends_at",
          "created_at",
          "cancelled_at"
        ],
        "type": "object"
      },
      "PlanGiftBatch": {
        "additionalProperties": false,
        "properties": {
          "actor_id": {
            "format": "uuid",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "plan_name": {
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "start_mode": {
            "type": "string"
          },
          "tenant_count": {
            "type": "integer"
          },
          "term_months": {
            "default": 1,
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "user_count": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "actor_id",
          "request_id",
          "plan",
          "plan_name",
          "currency",
          "price_version",
          "term_months",
          "mode",
          "start_mode",
          "reason",
          "user_count",
          "tenant_count",
          "created_at"
        ],
        "type": "object"
      },
      "PlanGiftCancellation": {
        "additionalProperties": false,
        "properties": {
          "cancelled": {
            "type": "boolean"
          }
        },
        "required": [
          "cancelled"
        ],
        "type": "object"
      },
      "PlanGiftInput": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "fingerprint": {
            "maxLength": 64,
            "minLength": 64,
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          },
          "start_mode": {
            "default": "after_current",
            "enum": [
              "after_current",
              "immediate"
            ],
            "type": "string"
          },
          "term_months": {
            "default": 1,
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "user_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "user_ids",
          "term_months",
          "mode",
          "start_mode",
          "reason",
          "request_id",
          "fingerprint"
        ],
        "type": "object"
      },
      "PlanGiftList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlanGiftRow"
            },
            "type": "array"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "PlanGiftPreview": {
        "additionalProperties": false,
        "properties": {
          "fingerprint": {
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlanGiftTarget"
            },
            "type": "array"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan_name": {
            "type": "string"
          },
          "start_mode": {
            "default": "after_current",
            "enum": [
              "after_current",
              "immediate"
            ],
            "type": "string"
          },
          "tenant_count": {
            "type": "integer"
          },
          "term_months": {
            "default": 1,
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "user_count": {
            "type": "integer"
          },
          "value_cents": {
            "type": "integer"
          }
        },
        "required": [
          "fingerprint",
          "plan_name",
          "value_cents",
          "user_count",
          "tenant_count",
          "mode",
          "term_months",
          "start_mode",
          "items"
        ],
        "type": "object"
      },
      "PlanGiftPreviewInput": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "fingerprint": {
            "maxLength": 64,
            "minLength": 64,
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          },
          "start_mode": {
            "default": "after_current",
            "enum": [
              "after_current",
              "immediate"
            ],
            "type": "string"
          },
          "term_months": {
            "default": 1,
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "user_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "user_ids",
          "mode",
          "reason"
        ],
        "type": "object"
      },
      "PlanGiftResult": {
        "additionalProperties": false,
        "properties": {
          "batch": {
            "$ref": "#/components/schemas/PlanGiftBatch"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlanGift"
            },
            "type": "array"
          }
        },
        "required": [
          "batch",
          "items"
        ],
        "type": "object"
      },
      "PlanGiftRow": {
        "additionalProperties": false,
        "properties": {
          "actor_email": {
            "type": "string"
          },
          "batch_id": {
            "format": "uuid",
            "type": "string"
          },
          "cancel_reason": {
            "type": "string"
          },
          "cancelled_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "cancelled_by": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "ends_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "plan_name": {
            "type": "string"
          },
          "purchase_id": {
            "format": "uuid",
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "starts_at": {
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "enum": [
              "granted",
              "cancelled"
            ],
            "type": "string"
          },
          "tenant_id": {
            "format": "uuid",
            "type": "string"
          },
          "tenant_name": {
            "type": "string"
          },
          "term_months": {
            "default": 1,
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "user_id": {
            "format": "uuid",
            "type": "string"
          },
          "value_cents": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "batch_id",
          "tenant_id",
          "user_id",
          "purchase_id",
          "value_cents",
          "status",
          "starts_at",
          "ends_at",
          "created_at",
          "cancelled_at"
        ],
        "type": "object"
      },
      "PlanGiftTarget": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "ends_at": {
            "format": "date-time",
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "plan_name": {
            "type": "string"
          },
          "previous_end": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "price_version": {
            "type": "string"
          },
          "starts_at": {
            "format": "date-time",
            "type": "string"
          },
          "tenant_id": {
            "format": "uuid",
            "type": "string"
          },
          "tenant_name": {
            "type": "string"
          },
          "user_id": {
            "format": "uuid",
            "type": "string"
          },
          "value_cents": {
            "type": "integer"
          }
        },
        "required": [
          "user_id",
          "email",
          "tenant_id",
          "tenant_name",
          "starts_at",
          "ends_at",
          "previous_end",
          "plan",
          "plan_name",
          "currency",
          "price_version",
          "value_cents"
        ],
        "type": "object"
      },
      "PlanInput": {
        "additionalProperties": false,
        "properties": {
          "api_hard_limit": {
            "type": "boolean"
          },
          "api_unit_amount": {
            "description": "成功した API 呼び出し 1 回あたりの非負の小数。小数点以下最大 6 桁",
            "type": "string"
          },
          "base_amount": {
            "description": "非負の小数。小数点以下最大 2 桁",
            "type": "string"
          },
          "currency": {
            "description": "設定が必要です。EUR カタログオファーは無効です",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "description": {
            "maxLength": 1000,
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "expected_version": {
            "description": "現在のバージョン。作成時は空",
            "type": "string"
          },
          "hard_limit": {
            "type": "boolean"
          },
          "included_api_calls": {
            "description": "null = 無制限、0 = 成功した呼び出しの付属枠なし",
            "maximum": 1000000000000,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "included_devices": {
            "maximum": 1000000000,
            "minimum": 0,
            "type": "integer"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "plan": {
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          },
          "public": {
            "type": "boolean"
          },
          "renewal_only": {
            "description": "既存の支払い済みまたはギフトの顧客は、同じ環境と通貨で事前または期限切れ後に更新できます。新規の公開購入には表示されません。",
            "type": "boolean"
          },
          "sort_order": {
            "maximum": 10000,
            "minimum": 0,
            "type": "integer"
          },
          "terms": {
            "description": "1、3、6、12 か月それぞれについてちょうど 1 件。各項目に独自の利用可否と合計価格があります。",
            "items": {
              "$ref": "#/components/schemas/PlanTermInput"
            },
            "maxItems": 4,
            "minItems": 4,
            "type": "array"
          },
          "unit_amount": {
            "description": "非負の小数。小数点以下最大 6 桁",
            "type": "string"
          }
        },
        "required": [
          "plan",
          "currency",
          "name",
          "base_amount",
          "unit_amount"
        ],
        "type": "object"
      },
      "PlanList": {
        "additionalProperties": false,
        "properties": {
          "billing_unit": {
            "type": "string"
          },
          "currencies": {
            "items": {
              "pattern": "^[A-Z]{3}$",
              "type": "string"
            },
            "type": "array"
          },
          "default_plan": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Price"
              },
              {
                "type": "null"
              }
            ]
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/Price"
            },
            "type": "array"
          },
          "maximum_cents": {
            "type": "integer"
          },
          "minimum_cents": {
            "type": "integer"
          },
          "payment_channels": {
            "description": "利用可能な決済チャネル設定。有効な請求環境と購入通貨に一致する有効なチャネルのみを表示します。",
            "items": {
              "$ref": "#/components/schemas/PaymentChannel"
            },
            "type": "array"
          },
          "paypal_enabled": {
            "type": "boolean"
          },
          "sandbox": {
            "type": "boolean"
          },
          "timezone": {
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "PlanPurchase": {
        "additionalProperties": false,
        "properties": {
          "api_calls": {
            "description": "PurchaseList.active では現在の枠月の成功呼び出し数。履歴項目には全期間の合計が含まれます。",
            "type": "integer"
          },
          "api_hard_limit": {
            "description": "API 枠の上限でランタイム呼び出しを停止するかどうか。",
            "type": "boolean"
          },
          "api_overage_cents": {
            "description": "有効なビューでは現在の枠月。履歴項目では契約全期間の API 超過料金。",
            "type": "integer"
          },
          "api_unit_micros": {
            "description": "超過ランタイム呼び出し 1 回あたりの価格（100 万分の 1 単位）。",
            "minimum": 0,
            "type": "integer"
          },
          "base_cents": {
            "description": "契約全体の実際の初回請求額。ギフトはゼロ。有効なアップグレードの実効ビューには対応期間の変更先の全額が含まれます。",
            "type": "integer"
          },
          "cancelled_at": {
            "anyOf": [
              {
                "description": "契約のキャンセルタイムスタンプ、または null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "契約のキャンセルタイムスタンプ、または null。",
                "type": "null"
              }
            ],
            "description": "契約のキャンセルタイムスタンプ、または null。"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "current_cycle_index": {
            "description": "現在の枠サイクルのインデックス。",
            "maximum": 11,
            "minimum": 0,
            "type": "integer"
          },
          "current_upgrade_id": {
            "description": "アップグレード前は空。それ以外は最後に適用された PlanUpgrade を指します。有効なレスポンスにはその実効プランスナップショットが含まれ、過去の購入は元の販売価格を保持します。",
            "type": "string"
          },
          "cycle_ends_at": {
            "description": "現在の枠サイクルの終了（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "cycle_starts_at": {
            "description": "現在の枠サイクルの開始（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "effective_included_devices": {
            "description": "適用済みアップグレード後のデバイス枠。元の購入スナップショットは変更されません。",
            "minimum": 0,
            "type": "integer"
          },
          "effective_plan": {
            "description": "明示的なアップグレードオーバーレイ後の現在の権利。購入一覧は現金履歴用に元の plan/base_cents を保持します。現在有効な階層の表示にはこのフィールドを使用します。",
            "type": "string"
          },
          "effective_plan_name": {
            "description": "明示的なアップグレードオーバーレイ後の現在の権利。購入一覧は現金履歴用に元の plan/base_cents を保持します。現在有効な階層の表示にはこのフィールドを使用します。",
            "type": "string"
          },
          "ends_at": {
            "anyOf": [
              {
                "description": "パッケージまたはサイクルの終了タイムスタンプ（UTC）。アクティベーション前は null の場合があります。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "パッケージまたはサイクルの終了タイムスタンプ（UTC）。アクティベーション前は null の場合があります。",
                "type": "null"
              }
            ],
            "description": "パッケージまたはサイクルの終了タイムスタンプ（UTC）。アクティベーション前は null の場合があります。"
          },
          "entitlement_cents": {
            "description": "アップグレード時の充当用の現在の実効パッケージの特典価値（通貨のセント単位）。99 USD のギフトプランは元の base_cents の支払いがゼロでも 9900 セントの特典価値があります。この値は返金可能な現金ではありません。有効なパッケージビューに設定されます。",
            "minimum": 0,
            "type": "integer"
          },
          "gift_batch_id": {
            "description": "ギフトバッチ識別子。通常の購入では空。",
            "type": "string"
          },
          "gift_follows_current": {
            "default": false,
            "description": "顧客の現在の階層から発行されたギフトを示します。ギフトは元の権利価値と現金支払いゼロを保持します。明示的な全期間アップグレードは期限切れでない各ギフトに個別の権利オーバーレイを適用し、元の現金ゼロのギフト記録を保持します。",
            "type": "boolean"
          },
          "hard_limit": {
            "description": "枠の上限に達した時点で新しい課金対象デバイスを拒否するかどうか。",
            "type": "boolean"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "included_api_calls": {
            "description": "null = 無制限、0 = 成功した呼び出しの付属枠なし",
            "maximum": 1000000000000,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "included_devices": {
            "description": "含まれるアクティブデバイス枠。",
            "type": "integer"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "overage_cents": {
            "description": "有効なビューでは現在の枠月。履歴項目では契約全期間のデバイス超過料金。",
            "type": "integer"
          },
          "plan": {
            "description": "公開カタログの安定した請求プラン識別子。",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          },
          "plan_name": {
            "description": "プランの表示名。",
            "type": "string"
          },
          "price_version": {
            "description": "固定された価格リビジョン。古い入力は PLAN_VERSION_CONFLICT を引き起こすことがあります。",
            "type": "string"
          },
          "refunded_cents": {
            "description": "累計返金額（100 分の 1 単位）。",
            "type": "integer"
          },
          "renewal": {
            "description": "更新契約かどうか。",
            "type": "boolean"
          },
          "renewal_of": {
            "description": "以前の支払い済みまたはギフトのパッケージ ID。更新チェーンと元の購入履歴を保持します。",
            "type": "string"
          },
          "request_id": {
            "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
            "type": "string"
          },
          "service_credit_basis_cents": {
            "description": "サービスクレジット計算の金額基準（100 分の 1 単位）。",
            "type": "integer"
          },
          "service_credit_basis_seconds": {
            "description": "サービスクレジット計算の時間基準（秒）。",
            "type": "integer"
          },
          "source": {
            "description": "purchase や gift などの権利の発生元。",
            "enum": [
              "purchase",
              "gift",
              "auto_renewal"
            ],
            "type": "string"
          },
          "starts_at": {
            "anyOf": [
              {
                "description": "パッケージまたはサイクルの開始タイムスタンプ（UTC）。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "パッケージまたはサイクルの開始タイムスタンプ（UTC）。",
                "type": "null"
              }
            ],
            "description": "パッケージまたはサイクルの開始タイムスタンプ（UTC）。"
          },
          "status": {
            "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
            "enum": [
              "pending",
              "active",
              "cancelled",
              "expired"
            ],
            "type": "string"
          },
          "term_months": {
            "default": 1,
            "description": "購入期間の月数。",
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "total_api_calls": {
            "description": "契約全体の累計ランタイム呼び出し数。",
            "type": "integer"
          },
          "total_api_overage_cents": {
            "description": "契約全体の累計 API 超過料金（100 分の 1 単位）。",
            "type": "integer"
          },
          "total_device_overage_cents": {
            "description": "契約全体の累計デバイス超過料金（100 分の 1 単位）。",
            "type": "integer"
          },
          "unit_micros": {
            "description": "超過アクティブデバイス 1 台あたりの価格（100 万分の 1 単位）。",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "PlanTermInput": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "description": "非負の期間合計。小数点以下最大 2 桁。1 か月の金額は base_amount と一致する必要があります。",
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "months": {
            "default": 1,
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          }
        },
        "required": [
          "months",
          "enabled",
          "amount"
        ],
        "type": "object"
      },
      "PlanTermPrice": {
        "additionalProperties": false,
        "properties": {
          "base_cents": {
            "description": "選択した期間の合計請求額（通貨セント単位）。月間枠にこの期間を乗じることはありません。",
            "minimum": 0,
            "type": "integer"
          },
          "enabled": {
            "description": "Webhook エンドポイントが有効かどうか。",
            "type": "boolean"
          },
          "months": {
            "default": 1,
            "description": "購入期間の月数。",
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          }
        },
        "required": [
          "months",
          "enabled",
          "base_cents"
        ],
        "type": "object"
      },
      "PlanUpgrade": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "parts の全項目を合算した支払い。アトミックに 1 回請求されます。親のその他の日割りフィールドは現在の期間のみを表します。各期間の元の価値、変更先の価値、残り秒数、個別の差額は parts を確認してください。",
            "type": "integer"
          },
          "api_hard_limit": {
            "description": "API 枠の上限でランタイム呼び出しを停止するかどうか。",
            "type": "boolean"
          },
          "api_unit_micros": {
            "description": "新しい API 超過料金率（通貨の 100 万分の 1）。",
            "type": "integer"
          },
          "applied_at": {
            "anyOf": [
              {
                "description": "アップグレードが有効になった時刻、または null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "アップグレードが有効になった時刻、または null。",
                "type": "null"
              }
            ],
            "description": "アップグレードが有効になった時刻、または null。"
          },
          "base_cents": {
            "description": "変更先の月額価格（セント）。今支払う金額ではありません。",
            "type": "integer"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "現在のパッケージと同じ通貨。",
            "type": "string"
          },
          "cycle_seconds": {
            "description": "元の購入サイクルの長さ（秒）。",
            "type": "integer"
          },
          "ends_at": {
            "description": "パッケージまたはサイクルの終了タイムスタンプ（UTC）。アクティベーション前は null の場合があります。",
            "format": "date-time",
            "type": "string"
          },
          "expires_at": {
            "description": "作成から 15 分後または元のプラン期限のいずれか早い方。",
            "format": "date-time",
            "type": "string"
          },
          "hard_limit": {
            "description": "枠の上限に達した時点で新しい課金対象デバイスを拒否するかどうか。",
            "type": "boolean"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "included_api_calls": {
            "anyOf": [
              {
                "description": "既存サイクルの API 合計枠。Null は無制限を意味します。過去の呼び出しも引き続きカウントされます。",
                "type": "integer"
              },
              {
                "description": "含まれる成功したランタイム呼び出し数。null は無制限、0 は付属枠なしを意味します。",
                "type": "null"
              }
            ],
            "description": "含まれる成功したランタイム呼び出し数。null は無制限、0 は付属枠なしを意味します。"
          },
          "included_devices": {
            "description": "既存サイクルの合計枠。過去のデバイス使用も引き続きカウントされます。",
            "type": "integer"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "parent_id": {
            "description": "内部の適用済み権利オーバーレイは単一の親請求を指します。これらの子レコードは顧客のアップグレード履歴と販売件数から除外されます。",
            "format": "uuid",
            "type": "string"
          },
          "parts": {
            "description": "期限切れでない現在および将来の支払い済み／ギフト期間のすべてを日付順に表示。全期間のアップグレードは必須で、期間の一部を選択することはできません。",
            "items": {
              "$ref": "#/components/schemas/UpgradePart"
            },
            "type": "array"
          },
          "plan": {
            "description": "公開カタログの安定した請求プラン識別子。",
            "type": "string"
          },
          "plan_name": {
            "description": "プランの表示名。",
            "type": "string"
          },
          "previous_base_cents": {
            "description": "現在の実効月額価格（セント）。",
            "type": "integer"
          },
          "previous_plan_name": {
            "description": "アップグレード前のプラン表示名。",
            "type": "string"
          },
          "previous_upgrade_id": {
            "description": "前のアップグレード ID。最初のアップグレードでは空。古い見積もりの拒否に使用します。",
            "type": "string"
          },
          "price_version": {
            "description": "固定された変更先価格バージョン。",
            "type": "string"
          },
          "purchase_id": {
            "description": "関連するパッケージ購入 UUID。",
            "format": "uuid",
            "type": "string"
          },
          "remaining_seconds": {
            "description": "見積もり作成時の残り秒数。切り上げ。",
            "type": "integer"
          },
          "request_id": {
            "description": "クライアントが生成する安定したキー。異なる見積もりパラメーターで再利用すると 409 を返します。",
            "type": "string"
          },
          "status": {
            "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
            "enum": [
              "pending",
              "applied",
              "expired"
            ],
            "type": "string"
          },
          "unit_micros": {
            "description": "新しいデバイス 1 台あたりの超過料金率（通貨の 100 万分の 1）。",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "request_id",
          "mode",
          "purchase_id",
          "previous_upgrade_id",
          "plan",
          "plan_name",
          "previous_plan_name",
          "currency",
          "price_version",
          "previous_base_cents",
          "base_cents",
          "amount_cents",
          "included_devices",
          "unit_micros",
          "hard_limit",
          "included_api_calls",
          "api_unit_micros",
          "api_hard_limit",
          "remaining_seconds",
          "cycle_seconds",
          "ends_at",
          "expires_at",
          "status",
          "created_at",
          "applied_at"
        ],
        "type": "object"
      },
      "PlatformOperation": {
        "additionalProperties": false,
        "properties": {
          "action": {
            "type": "string"
          },
          "actor_email": {
            "type": "string"
          },
          "actor_id": {
            "format": "uuid",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "details": {
            "description": "明示的な管理変更のみを含む JSON 文字列。パスワード、トークン、決済認証情報は含めません。",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "resource_id": {
            "type": "string"
          },
          "tenant_id": {
            "type": "string"
          },
          "user_email": {
            "type": "string"
          },
          "user_id": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "actor_id",
          "action",
          "user_id",
          "tenant_id",
          "resource_id",
          "reason",
          "details",
          "request_id",
          "created_at",
          "actor_email",
          "user_email"
        ],
        "type": "object"
      },
      "PlatformOperationList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlatformOperation"
            },
            "type": "array"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "PlatformOverview": {
        "additionalProperties": false,
        "properties": {
          "at": {
            "format": "date-time",
            "type": "string"
          },
          "counts": {
            "additionalProperties": false,
            "properties": {
              "active_packages": {
                "type": "integer"
              },
              "active_workspaces": {
                "type": "integer"
              },
              "disabled_users": {
                "type": "integer"
              },
              "enabled_plans": {
                "type": "integer"
              },
              "expiring_packages": {
                "type": "integer"
              },
              "failed_mail": {
                "type": "integer"
              },
              "gift_packages": {
                "type": "integer"
              },
              "new_users": {
                "type": "integer"
              },
              "suspended_workspaces": {
                "type": "integer"
              },
              "users": {
                "type": "integer"
              },
              "verified_users": {
                "type": "integer"
              }
            },
            "required": [
              "users",
              "verified_users",
              "disabled_users",
              "new_users",
              "active_workspaces",
              "suspended_workspaces",
              "active_packages",
              "expiring_packages",
              "gift_packages",
              "failed_mail",
              "enabled_plans"
            ],
            "type": "object"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "paypal_enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "counts",
          "mode",
          "paypal_enabled",
          "at"
        ],
        "type": "object"
      },
      "PlatformReason": {
        "additionalProperties": false,
        "properties": {
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "type": "object"
      },
      "PlatformRevocation": {
        "additionalProperties": false,
        "properties": {
          "revoked": {
            "type": "boolean"
          }
        },
        "required": [
          "revoked"
        ],
        "type": "object"
      },
      "PlatformUser": {
        "additionalProperties": false,
        "properties": {
          "admin_note": {
            "description": "プラットフォームの非公開メモ。顧客プロフィールのフィールドは変更されません。",
            "maxLength": 2000,
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "email": {
            "format": "email",
            "type": "string"
          },
          "email_verified_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_platform_admin": {
            "type": "boolean"
          },
          "last_login_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "note_version": {
            "type": "string"
          },
          "role": {
            "enum": [
              "owner",
              "read_only"
            ],
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "disabled"
            ],
            "type": "string"
          },
          "tenant_id": {
            "format": "uuid",
            "type": "string"
          },
          "tenant_name": {
            "type": "string"
          },
          "tenant_status": {
            "enum": [
              "active",
              "suspended"
            ],
            "type": "string"
          },
          "tenant_updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenant_id",
          "tenant_name",
          "tenant_status",
          "tenant_updated_at",
          "email",
          "name",
          "role",
          "status",
          "is_platform_admin",
          "email_verified_at",
          "created_at",
          "updated_at",
          "last_login_at",
          "admin_note",
          "note_version"
        ],
        "type": "object"
      },
      "PlatformUserDetail": {
        "additionalProperties": false,
        "properties": {
          "counts": {
            "additionalProperties": false,
            "properties": {
              "licenses": {
                "type": "integer"
              },
              "products": {
                "type": "integer"
              },
              "users": {
                "type": "integer"
              }
            },
            "required": [
              "users",
              "products",
              "licenses"
            ],
            "type": "object"
          },
          "payments": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "currency": {
                  "type": "string"
                },
                "mode": {
                  "enum": [
                    "sandbox",
                    "live"
                  ],
                  "type": "string"
                },
                "paid_cents": {
                  "type": "integer"
                },
                "refunded_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "mode",
                "currency",
                "paid_cents",
                "refunded_cents"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "purchases": {
            "items": {
              "$ref": "#/components/schemas/PlanPurchase"
            },
            "type": "array"
          },
          "user": {
            "$ref": "#/components/schemas/PlatformUser"
          },
          "wallets": {
            "items": {
              "$ref": "#/components/schemas/Wallet"
            },
            "type": "array"
          }
        },
        "required": [
          "user",
          "counts",
          "wallets",
          "purchases",
          "payments"
        ],
        "type": "object"
      },
      "PlatformUserList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlatformUser"
            },
            "type": "array"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "PlatformUserUpdate": {
        "additionalProperties": false,
        "anyOf": [
          {
            "required": [
              "status",
              "expected_updated_at"
            ]
          },
          {
            "required": [
              "admin_note",
              "expected_note_version"
            ]
          }
        ],
        "properties": {
          "admin_note": {
            "maxLength": 2000,
            "type": "string"
          },
          "expected_note_version": {
            "type": "string"
          },
          "expected_updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "disabled"
            ],
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "type": "object"
      },
      "PlatformWorkspaceStatus": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "suspended"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "status"
        ],
        "type": "object"
      },
      "PlatformWorkspaceUpdate": {
        "additionalProperties": false,
        "properties": {
          "expected_updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "suspended"
            ],
            "type": "string"
          }
        },
        "required": [
          "status",
          "reason",
          "expected_updated_at"
        ],
        "type": "object"
      },
      "Policy": {
        "additionalProperties": false,
        "example": {
          "created_at": "2026-10-18T00:00:00Z",
          "features": [
            "export"
          ],
          "heartbeat_seconds": 600,
          "id": "22222222-2222-4222-8222-222222222222",
          "max_devices": 1,
          "mode": "timed",
          "name": "One device",
          "offline_mode": "limited",
          "offline_seconds": 86400,
          "product_id": "11111111-1111-4111-8111-111111111111",
          "updated_at": "2026-10-18T00:00:00Z",
          "version": 1
        },
        "properties": {
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "features": {
            "description": "重複しない最大 32 個の機能識別子。それぞれ 1–64 文字の ASCII 英字、数字、ドット、ハイフン、アンダースコア。",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0,
                "description": "ハートビート間隔（秒）：0 は無効、それ以外は 600–86400。省略時はサーバーのデフォルトを使用し、オフライン許可とは独立しています。"
              },
              {
                "description": "ハートビート間隔（秒）：0 は無効、それ以外は 600–86400。省略時はサーバーのデフォルトを使用し、オフライン許可とは独立しています。",
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "オンライン時のハートビート間隔（秒）。0 は定期ハートビートを無効にします。オフライン許可は別途設定します。",
            "type": "integer"
          },
          "id": {
            "description": "ポリシー UUID。ライセンス発行時に policy_id として使用します。",
            "format": "uuid",
            "type": "string"
          },
          "max_devices": {
            "description": "ライセンスごとの最大同時デバイス数またはフローティング席数。",
            "type": "integer"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "name": {
            "description": "人が読める名前。長さの制約を参照してください。",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "offline_mode": {
            "description": "limited：時間制限付きオフライン、none：オフライン使用不可、permanent：追加のオフライン時間制限なし。ただしライセンスの有効期限は引き続き適用されます。",
            "enum": [
              "limited",
              "none",
              "permanent"
            ],
            "type": "string"
          },
          "offline_seconds": {
            "description": "許可されるオフライン秒数：limited は 1–31536000、none/permanent は 0。これはハートビート間隔ではありません。ハートビートが有効な場合、新しい有限オフラインポリシーは offline_seconds \u003e= 3 × heartbeat_seconds を満たす必要があります。フローティングシートのリースも、少なくとも3回分のハートビート間隔をカバーする必要があります。",
            "maximum": 31536000,
            "minimum": 0,
            "type": "integer"
          },
          "product_id": {
            "description": "現在のワークスペースの製品 UUID。",
            "format": "uuid",
            "type": "string"
          },
          "updated_at": {
            "description": "最終更新タイムスタンプ（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "description": "ポリシーリビジョンは編集のたびに増加します。既存ライセンスへの適用時にプレビューがまだ最新かを確認します。",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "product_id",
          "mode",
          "version"
        ],
        "type": "object"
      },
      "PolicyCapabilities": {
        "additionalProperties": false,
        "properties": {
          "allow_vm": {
            "description": "仮想マシンが許可されるかどうか。",
            "type": "boolean"
          },
          "device_match": {
            "description": "system ID 照合または hardware ID 照合。",
            "enum": [
              "system",
              "hardware"
            ],
            "type": "string"
          },
          "license_model": {
            "description": "node_locked デバイス紐付けまたは floating 席。",
            "enum": [
              "node_locked",
              "floating"
            ],
            "type": "string"
          },
          "maintenance_days": {
            "description": "初回アクティベーションからのメンテナンス日数。0 はメンテナンス期限なしを意味します。",
            "maximum": 36500,
            "minimum": 0,
            "type": "integer"
          },
          "max_version": {
            "description": "許可されるアプリの最高バージョン。空の場合は上限なし。",
            "type": "string"
          },
          "meter_rules": {
            "description": "機能の計量ルール。空の場合は未設定です。",
            "items": {
              "additionalProperties": false,
              "properties": {
                "allow_overage": {
                  "description": "機能の超過使用が許可されるかどうか。",
                  "type": "boolean"
                },
                "feature": {
                  "description": "従量制機能の識別子。ポリシーの機能に存在する必要があります。",
                  "pattern": "^[A-Za-z0-9_.-]{1,64}$",
                  "type": "string"
                },
                "limit": {
                  "description": "計量期間ごとに含まれる機能使用回数（ページサイズの上限ではありません）。",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "max_overage": {
                  "description": "許可される最大超過使用量。allow_overage が false の場合は無効です。",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "period": {
                  "description": "デフォルトの UTC 月次請求スナップショット。計量ルールは month/day/lifetime を使用し、使用量の行は具体的な期間キーを使用します。",
                  "enum": [
                    "month",
                    "day",
                    "lifetime"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "feature",
                "limit",
                "period"
              ],
              "type": "object"
            },
            "maxItems": 32,
            "type": "array"
          },
          "min_version": {
            "description": "許可されるアプリの最低バージョン。空の場合は下限なし。",
            "type": "string"
          },
          "policy_id": {
            "description": "ポリシー UUID。発行時に製品に属している必要があります。",
            "format": "uuid",
            "type": "string"
          },
          "policy_version": {
            "description": "ポリシーリビジョン。機能全体を編集する際に古い書き込みを防ぐため現在の値を送信します。",
            "type": "integer"
          },
          "product_id": {
            "description": "現在のワークスペースの製品 UUID。",
            "format": "uuid",
            "type": "string"
          },
          "require_hardware": {
            "description": "使用可能なハードウェア ID が必要かどうか。",
            "type": "boolean"
          },
          "self_release_limit": {
            "description": "直近 30 日間に許可されるセルフサービス解放回数、0–100。0 は無効です。",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "session_seconds": {
            "description": "ハートビートがない場合のフローティング席のリース秒数、20–86400。ポリシーのランタイム制約を満たす必要があります。",
            "maximum": 86400,
            "minimum": 20,
            "type": "integer"
          },
          "updated_at": {
            "description": "最終更新タイムスタンプ（UTC）。",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "PolicyCapabilitiesInput": {
        "additionalProperties": false,
        "description": "発行モード、デバイス／席の上限、機能、ランタイムルールを定義します。ポリシーには有効期間は保存されません。古い編集を防ぐため policy_version が必要です。",
        "properties": {
          "allow_vm": {
            "description": "仮想マシンが許可されるかどうか。",
            "type": "boolean"
          },
          "device_match": {
            "description": "system ID 照合または hardware ID 照合。",
            "enum": [
              "system",
              "hardware"
            ],
            "type": "string"
          },
          "features": {
            "description": "重複しない最大 32 個の機能識別子。それぞれ 1–64 文字の ASCII 英字、数字、ドット、ハイフン、アンダースコア。",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0,
                "description": "ハートビート間隔（秒）：0 は無効、それ以外は 600–86400。省略時はサーバーのデフォルトを使用し、オフライン許可とは独立しています。"
              },
              {
                "description": "ハートビート間隔（秒）：0 は無効、それ以外は 600–86400。省略時はサーバーのデフォルトを使用し、オフライン許可とは独立しています。",
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "0 は定期ハートビートを明示的に無効にします。それ以外は 600–86400 秒（最低 10 分）。オフライン許可とは独立しています。",
            "type": "integer"
          },
          "license_model": {
            "description": "node_locked デバイス紐付けまたは floating 席。",
            "enum": [
              "node_locked",
              "floating"
            ],
            "type": "string"
          },
          "maintenance_days": {
            "description": "初回アクティベーションからのメンテナンス日数。0 はメンテナンス期限なしを意味します。",
            "maximum": 36500,
            "minimum": 0,
            "type": "integer"
          },
          "max_devices": {
            "description": "ライセンスごとの最大同時デバイス数またはフローティング席数。",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "max_version": {
            "description": "許可されるアプリの最高バージョン。空の場合は上限なし。",
            "type": "string"
          },
          "meter_rules": {
            "description": "機能の計量ルール。空の場合は未設定です。",
            "items": {
              "additionalProperties": false,
              "properties": {
                "allow_overage": {
                  "description": "機能の超過使用が許可されるかどうか。",
                  "type": "boolean"
                },
                "feature": {
                  "description": "従量制機能の識別子。ポリシーの機能に存在する必要があります。",
                  "pattern": "^[A-Za-z0-9_.-]{1,64}$",
                  "type": "string"
                },
                "limit": {
                  "description": "計量期間ごとに含まれる機能使用回数（ページサイズの上限ではありません）。",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "max_overage": {
                  "description": "許可される最大超過使用量。allow_overage が false の場合は無効です。",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "period": {
                  "description": "デフォルトの UTC 月次請求スナップショット。計量ルールは month/day/lifetime を使用し、使用量の行は具体的な期間キーを使用します。",
                  "enum": [
                    "month",
                    "day",
                    "lifetime"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "feature",
                "limit",
                "period"
              ],
              "type": "object"
            },
            "maxItems": 32,
            "type": "array"
          },
          "min_version": {
            "description": "許可されるアプリの最低バージョン。空の場合は下限なし。",
            "type": "string"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "name": {
            "description": "人が読める名前。長さの制約を参照してください。",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "offline_mode": {
            "description": "limited、none、または permanent のオフライン許可。ライセンスの有効期限は引き続き適用されます。",
            "enum": [
              "limited",
              "none",
              "permanent"
            ],
            "type": "string"
          },
          "offline_seconds": {
            "description": "Limited：1–31536000 秒。ハートビートが有効な場合は少なくとも 3 × heartbeat_seconds。none/permanent：0",
            "maximum": 31536000,
            "minimum": 0,
            "type": "integer"
          },
          "policy_version": {
            "description": "ポリシーリビジョン。機能全体を編集する際に古い書き込みを防ぐため現在の値を送信します。",
            "minimum": 1,
            "type": "integer"
          },
          "require_hardware": {
            "description": "使用可能なハードウェア ID が必要かどうか。",
            "type": "boolean"
          },
          "self_release_limit": {
            "description": "直近 30 日間に許可されるセルフサービス解放回数、0–100。0 は無効です。",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "session_seconds": {
            "description": "ハートビートがない場合のフローティング席のリース秒数、20–86400。ポリシーのランタイム制約を満たす必要があります。",
            "maximum": 86400,
            "minimum": 20,
            "type": "integer"
          }
        },
        "required": [
          "policy_version"
        ],
        "type": "object"
      },
      "PolicyCreate": {
        "additionalProperties": false,
        "description": "発行モード、デバイス／席の上限、機能、ランタイムルールを定義します。ポリシーには有効期間は保存されません。",
        "properties": {
          "allow_vm": {
            "description": "仮想マシンが許可されるかどうか。",
            "type": "boolean"
          },
          "device_match": {
            "description": "system ID 照合または hardware ID 照合。",
            "enum": [
              "system",
              "hardware"
            ],
            "type": "string"
          },
          "features": {
            "description": "許可される機能識別子。例： [\"export\"]。アプリの CheckFeature 引数と一致する必要があります。",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0,
                "description": "ハートビート間隔（秒）：0 は無効、それ以外は 600–86400。省略時はサーバーのデフォルトを使用し、オフライン許可とは独立しています。"
              },
              {
                "description": "ハートビート間隔（秒）：0 は無効、それ以外は 600–86400。省略時はサーバーのデフォルトを使用し、オフライン許可とは独立しています。",
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "オンライン時のハートビート間隔（秒）。0 は定期ハートビートを無効にします。オフライン許可は別途設定します。",
            "type": "integer"
          },
          "license_model": {
            "description": "node_locked デバイス紐付けまたは floating 席。",
            "enum": [
              "node_locked",
              "floating"
            ],
            "type": "string"
          },
          "maintenance_days": {
            "description": "初回アクティベーションからのメンテナンス日数。0 はメンテナンス期限なしを意味します。",
            "maximum": 36500,
            "minimum": 0,
            "type": "integer"
          },
          "max_devices": {
            "description": "ライセンスごとのデバイス上限、1–10000。フローティングモードでは同時席数の上限です。",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "max_version": {
            "description": "許可されるアプリの最高バージョン。空の場合は上限なし。",
            "type": "string"
          },
          "meter_rules": {
            "description": "機能の計量ルール。空の場合は未設定です。",
            "items": {
              "additionalProperties": false,
              "properties": {
                "allow_overage": {
                  "description": "機能の超過使用が許可されるかどうか。",
                  "type": "boolean"
                },
                "feature": {
                  "description": "従量制機能の識別子。ポリシーの機能に存在する必要があります。",
                  "pattern": "^[A-Za-z0-9_.-]{1,64}$",
                  "type": "string"
                },
                "limit": {
                  "description": "計量期間ごとに含まれる機能使用回数（ページサイズの上限ではありません）。",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "max_overage": {
                  "description": "許可される最大超過使用量。allow_overage が false の場合は無効です。",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "period": {
                  "description": "デフォルトの UTC 月次請求スナップショット。計量ルールは month/day/lifetime を使用し、使用量の行は具体的な期間キーを使用します。",
                  "enum": [
                    "month",
                    "day",
                    "lifetime"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "feature",
                "limit",
                "period"
              ],
              "type": "object"
            },
            "maxItems": 32,
            "type": "array"
          },
          "min_version": {
            "description": "許可されるアプリの最低バージョン。空の場合は下限なし。",
            "type": "string"
          },
          "mode": {
            "description": "ライセンス種別：perpetual、timed または trial。請求プランのサブスクリプション種別ではありません。",
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "name": {
            "description": "ポリシー名。例：30 日間の Pro。",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "offline_mode": {
            "description": "limited：時間制限付きオフライン、none：オフライン使用不可、permanent：追加のオフライン時間制限なし。ただしライセンスの有効期限は引き続き適用されます。",
            "enum": [
              "limited",
              "none",
              "permanent"
            ],
            "type": "string"
          },
          "offline_seconds": {
            "description": "許可されるオフライン秒数：limited は 1–31536000、none/permanent は 0。これはハートビート間隔ではありません。ハートビートが有効な場合、新しい有限オフラインポリシーは offline_seconds \u003e= 3 × heartbeat_seconds を満たす必要があります。フローティングシートのリースも、少なくとも3回分のハートビート間隔をカバーする必要があります。",
            "maximum": 31536000,
            "minimum": 0,
            "type": "integer"
          },
          "product_id": {
            "description": "製品 ID（UUID）。",
            "format": "uuid",
            "type": "string"
          },
          "require_hardware": {
            "description": "使用可能なハードウェア ID が必要かどうか。",
            "type": "boolean"
          },
          "self_release_limit": {
            "description": "直近 30 日間に許可されるセルフサービス解放回数、0–100。0 は無効です。",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "session_seconds": {
            "description": "ハートビートがない場合のフローティング席のリース秒数、20–86400。ポリシーのランタイム制約を満たす必要があります。",
            "maximum": 86400,
            "minimum": 20,
            "type": "integer"
          }
        },
        "required": [
          "product_id",
          "name",
          "mode",
          "max_devices"
        ],
        "type": "object"
      },
      "PolicyList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/Policy"
            },
            "type": "array"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "PolicyPreview": {
        "additionalProperties": false,
        "properties": {
          "changes": {
            "description": "ライセンスごとの変更前後の比較とブロック理由。",
            "items": {
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "現在の署名キーフラグ。ポリシープレビューでは有効なデバイス／セッション数。",
                  "type": "integer"
                },
                "after": {
                  "additionalProperties": false,
                  "description": "対象ポリシー適用後の権利。有効期間は変更されません。",
                  "properties": {
                    "duration_days": {
                      "description": "初回アクティベーションからのライセンスごとの日数。timed/trial 発行では 1–36500 が必須、perpetual では省略／null。ポリシーには保存されません。",
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "expires_at": {
                      "anyOf": [
                        {
                          "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                          "format": "date-time",
                          "type": "string"
                        },
                        {
                          "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                          "type": "null"
                        }
                      ],
                      "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。"
                    },
                    "features": {
                      "description": "重複しない最大 32 個の機能識別子。それぞれ 1–64 文字の ASCII 英字、数字、ドット、ハイフン、アンダースコア。",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "license_model": {
                      "description": "node_locked デバイス紐付けまたは floating 席。",
                      "enum": [
                        "node_locked",
                        "floating"
                      ],
                      "type": "string"
                    },
                    "maintenance_until": {
                      "anyOf": [
                        {
                          "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                          "format": "date-time",
                          "type": "string"
                        },
                        {
                          "description": "新しいリリースに対するメンテナンス期限。アクティベーション前または無制限の場合は null になることがあります。",
                          "type": "null"
                        }
                      ],
                      "description": "新しいリリースに対するメンテナンス期限。アクティベーション前または無制限の場合は null になることがあります。"
                    },
                    "max_devices": {
                      "description": "ライセンスごとの最大同時デバイス数またはフローティング席数。",
                      "type": "integer"
                    },
                    "max_version": {
                      "description": "許可されるアプリの最高バージョン。空の場合は上限なし。",
                      "type": "string"
                    },
                    "meter_rules": {
                      "description": "機能の計量ルール。空の場合は未設定です。",
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "allow_overage": {
                            "description": "機能の超過使用が許可されるかどうか。",
                            "type": "boolean"
                          },
                          "feature": {
                            "description": "従量制機能の識別子。ポリシーの機能に存在する必要があります。",
                            "pattern": "^[A-Za-z0-9_.-]{1,64}$",
                            "type": "string"
                          },
                          "limit": {
                            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
                            "maximum": 1000000000000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "max_overage": {
                            "description": "許可される最大超過使用量。allow_overage が false の場合は無効です。",
                            "maximum": 1000000000000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "period": {
                            "description": "デフォルトの UTC 月次請求スナップショット。計量ルールは month/day/lifetime を使用し、使用量の行は具体的な期間キーを使用します。",
                            "enum": [
                              "month",
                              "day",
                              "lifetime"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "feature",
                          "limit",
                          "period"
                        ],
                        "type": "object"
                      },
                      "maxItems": 32,
                      "type": "array"
                    },
                    "min_version": {
                      "description": "許可されるアプリの最低バージョン。空の場合は下限なし。",
                      "type": "string"
                    },
                    "mode": {
                      "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
                      "enum": [
                        "perpetual",
                        "timed",
                        "trial"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "mode",
                    "max_devices",
                    "features",
                    "expires_at",
                    "duration_days",
                    "license_model",
                    "meter_rules",
                    "maintenance_until",
                    "min_version",
                    "max_version"
                  ],
                  "type": "object"
                },
                "before": {
                  "additionalProperties": false,
                  "description": "現在発行済みの権利とライセンス有効期間。",
                  "properties": {
                    "capabilities": {
                      "$ref": "#/components/schemas/LicenseCapabilities",
                      "description": "ライセンス機能のスナップショット。"
                    },
                    "duration_days": {
                      "description": "初回アクティベーションからのライセンスごとの日数。timed/trial 発行では 1–36500 が必須、perpetual では省略／null。ポリシーには保存されません。",
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "expires_at": {
                      "anyOf": [
                        {
                          "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                          "format": "date-time",
                          "type": "string"
                        },
                        {
                          "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                          "type": "null"
                        }
                      ],
                      "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。"
                    },
                    "features": {
                      "description": "重複しない最大 32 個の機能識別子。それぞれ 1–64 文字の ASCII 英字、数字、ドット、ハイフン、アンダースコア。",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "max_devices": {
                      "description": "ライセンスごとの最大同時デバイス数またはフローティング席数。",
                      "type": "integer"
                    },
                    "meter_rules": {
                      "description": "機能の計量ルール。空の場合は未設定です。",
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "allow_overage": {
                            "description": "機能の超過使用が許可されるかどうか。",
                            "type": "boolean"
                          },
                          "feature": {
                            "description": "従量制機能の識別子。ポリシーの機能に存在する必要があります。",
                            "pattern": "^[A-Za-z0-9_.-]{1,64}$",
                            "type": "string"
                          },
                          "limit": {
                            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
                            "maximum": 1000000000000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "max_overage": {
                            "description": "許可される最大超過使用量。allow_overage が false の場合は無効です。",
                            "maximum": 1000000000000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "period": {
                            "description": "デフォルトの UTC 月次請求スナップショット。計量ルールは month/day/lifetime を使用し、使用量の行は具体的な期間キーを使用します。",
                            "enum": [
                              "month",
                              "day",
                              "lifetime"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "feature",
                          "limit",
                          "period"
                        ],
                        "type": "object"
                      },
                      "maxItems": 32,
                      "type": "array"
                    },
                    "mode": {
                      "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
                      "enum": [
                        "perpetual",
                        "timed",
                        "trial"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "mode",
                    "max_devices",
                    "features",
                    "expires_at",
                    "duration_days",
                    "capabilities",
                    "meter_rules"
                  ],
                  "type": "object"
                },
                "blocked_reason": {
                  "description": "変更がブロックされる理由。空の場合は現在の障害なし。",
                  "type": "string"
                },
                "customer": {
                  "description": "ベンダーが定義する顧客ラベル。顧客ポータルのメールアドレスとは別です。",
                  "type": "string"
                },
                "id": {
                  "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
                  "format": "uuid",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "customer",
                "before",
                "after",
                "blocked_reason",
                "active"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "expires_in": {
            "const": 600,
            "description": "プレビュートークンの有効期間（秒）。現在は 600。",
            "type": "integer"
          },
          "note": {
            "description": "開発者向けの追加ガイダンス。",
            "type": "string"
          },
          "policy_version": {
            "description": "ポリシーリビジョン。機能全体を編集する際に古い書き込みを防ぐため現在の値を送信します。",
            "type": "integer"
          },
          "preview_token": {
            "description": "apply_policy に必要な暗号化されたプレビュー確認トークン。600 秒間有効で、リソースの変更により無効になります。",
            "type": "string"
          }
        },
        "required": [
          "changes",
          "policy_version",
          "preview_token",
          "expires_in",
          "note"
        ],
        "type": "object"
      },
      "PolicySyncResult": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "synced_licenses": {
            "description": "同じトランザクションで同期された、紐付いた未失効ライセンスの数。",
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "synced_licenses"
        ],
        "type": "object"
      },
      "PolicyUpdate": {
        "additionalProperties": false,
        "description": "発行モード、デバイス／席の上限、機能、ランタイムルールを定義します。ポリシーには有効期間は保存されません。",
        "properties": {
          "features": {
            "description": "重複しない最大 32 個の機能識別子。それぞれ 1–64 文字の ASCII 英字、数字、ドット、ハイフン、アンダースコア。",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0,
                "description": "ハートビート間隔（秒）：0 は無効、それ以外は 600–86400。省略時はサーバーのデフォルトを使用し、オフライン許可とは独立しています。"
              },
              {
                "description": "ハートビート間隔（秒）：0 は無効、それ以外は 600–86400。省略時はサーバーのデフォルトを使用し、オフライン許可とは独立しています。",
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "0 は定期ハートビートを明示的に無効にします。それ以外は 600–86400 秒（最低 10 分）。オフライン許可とは独立しています。",
            "type": "integer"
          },
          "max_devices": {
            "description": "ライセンスごとの最大同時デバイス数またはフローティング席数。",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "name": {
            "description": "人が読める名前。長さの制約を参照してください。",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "offline_mode": {
            "description": "limited、none、または permanent のオフライン許可。ライセンスの有効期限は引き続き適用されます。",
            "enum": [
              "limited",
              "none",
              "permanent"
            ],
            "type": "string"
          },
          "offline_seconds": {
            "description": "Limited：1–31536000 秒。ハートビートが有効な場合は少なくとも 3 × heartbeat_seconds。none/permanent：0",
            "maximum": 31536000,
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "PreviewInput": {
        "additionalProperties": false,
        "properties": {
          "ids": {
            "description": "処理対象の重複しないライセンス UUID、1–100。",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "policy_id": {
            "description": "ポリシー UUID。発行時に製品に属している必要があります。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "policy_id",
          "ids"
        ],
        "type": "object"
      },
      "Price": {
        "additionalProperties": false,
        "properties": {
          "api_hard_limit": {
            "description": "API 枠の上限でランタイム呼び出しを停止するかどうか。",
            "type": "boolean"
          },
          "api_unit_micros": {
            "description": "超過ランタイム呼び出し 1 回あたりの価格（100 万分の 1 単位）。",
            "minimum": 0,
            "type": "integer"
          },
          "base_micros": {
            "description": "通貨単位の 100 万分の 1 で表した基本料金。",
            "type": "integer"
          },
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "type": "string"
          },
          "description": {
            "description": "請求オファーの説明。",
            "type": "string"
          },
          "enabled": {
            "description": "請求オファーが購入可能かどうか。",
            "type": "boolean"
          },
          "hard_limit": {
            "description": "枠の上限に達した時点で新しい課金対象デバイスを拒否するかどうか。",
            "type": "boolean"
          },
          "included_api_calls": {
            "description": "null = 無制限、0 = 成功した呼び出しの付属枠なし",
            "maximum": 1000000000000,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "included_devices": {
            "description": "含まれるアクティブデバイス枠。",
            "type": "integer"
          },
          "name": {
            "description": "請求オファーの表示名。",
            "type": "string"
          },
          "plan": {
            "description": "公開カタログの安定した請求プラン識別子。",
            "type": "string"
          },
          "price_version": {
            "description": "固定された価格リビジョン。古い入力は PLAN_VERSION_CONFLICT を引き起こすことがあります。",
            "type": "string"
          },
          "public": {
            "description": "請求オファーが公開一覧に掲載されるかどうか。",
            "type": "boolean"
          },
          "renewal_only": {
            "description": "既存の支払い済みまたはギフトの顧客は、同じ環境と通貨で事前または期限切れ後に更新できます。新規の公開購入には表示されません。",
            "type": "boolean"
          },
          "sort_order": {
            "description": "請求オファーの表示順。",
            "type": "integer"
          },
          "terms": {
            "description": "利用可能な購入期間とその価格。",
            "items": {
              "$ref": "#/components/schemas/PlanTermPrice"
            },
            "type": "array"
          },
          "unit_micros": {
            "description": "超過アクティブデバイス 1 台あたりの価格（100 万分の 1 単位）。",
            "type": "integer"
          },
          "updated_at": {
            "description": "最終更新タイムスタンプ（UTC）。",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "Product": {
        "additionalProperties": false,
        "example": {
          "created_at": "2026-10-18T00:00:00Z",
          "description": "Desktop reporting software",
          "id": "11111111-1111-4111-8111-111111111111",
          "name": "Report app",
          "status": "active",
          "updated_at": "2026-10-18T00:00:00Z"
        },
        "properties": {
          "created_at": {
            "description": "作成タイムスタンプ、UTC ISO 8601。",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "製品の説明。",
            "type": "string"
          },
          "id": {
            "description": "SDK 設定とポリシー作成に使用する製品 UUID。",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "製品名。",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "description": "active はアクティベーションを許可し、disabled はランタイムライセンスリクエストを拒否します。",
            "enum": [
              "active",
              "disabled"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "最終更新タイムスタンプ、UTC ISO 8601。",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "status"
        ],
        "type": "object"
      },
      "ProductCreate": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "description": "任意のソフトウェア説明、最大 1000 文字。",
            "maxLength": 1000,
            "type": "string"
          },
          "name": {
            "description": "ソフトウェア名、1–120 文字。",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "ProductList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/Product"
            },
            "type": "array"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "ProductUpdate": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "description": "製品の説明。空でも構いません。",
            "maxLength": 1000,
            "type": "string"
          },
          "name": {
            "description": "人が読める名前。長さの制約を参照してください。",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
            "enum": [
              "active",
              "disabled"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "ProviderRefund": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "minimum": 0,
            "type": "integer"
          },
          "attempted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "attempts": {
            "minimum": 0,
            "type": "integer"
          },
          "case_id": {
            "format": "uuid",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "last_error": {
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "order_id": {
            "format": "uuid",
            "type": "string"
          },
          "provider": {
            "enum": [
              "waffo",
              "paddle"
            ],
            "type": "string"
          },
          "provider_refund_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "reason": {
            "type": "string"
          },
          "reserved": {
            "type": "boolean"
          },
          "settled_cents": {
            "minimum": 0,
            "type": "integer"
          },
          "status": {
            "enum": [
              "created",
              "submitting",
              "pending",
              "unknown",
              "completed",
              "failed"
            ],
            "type": "string"
          },
          "submitted_cents": {
            "minimum": 0,
            "type": "integer"
          },
          "unapplied": {
            "type": "boolean"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "PurchaseList": {
        "additionalProperties": false,
        "properties": {
          "active": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlanPurchase",
                "description": "現在の署名キーフラグ。ポリシープレビューでは有効なデバイス／セッション数。"
              },
              {
                "description": "現在の署名キーフラグ。ポリシープレビューでは有効なデバイス／セッション数。",
                "type": "null"
              }
            ],
            "description": "現在有効な購入済みパッケージ契約、または null。"
          },
          "active_devices": {
            "description": "月間デバイス使用履歴とは独立した、現在登録されている製品／デバイスの占有数。通常の登録はオフライン中も解放されるまでカウントされます。フローティングセッションはリースが有効な間のみカウントされ、ハードウェアで重複排除し、利用できない場合はデバイス ID を使用します。解放または最後のフローティングセッションのリース期限切れにより枠が戻ります。有効な登録は枠月の境界を越えて継続します。隔離された SDK トライアル登録は除外されます。",
            "type": "integer"
          },
          "coverage_ends_at": {
            "anyOf": [
              {
                "description": "継続する支払い済みパッケージ期間の終了、または null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "継続する支払い済みパッケージ期間の終了、または null。",
                "type": "null"
              }
            ],
            "description": "支払い済みの事前更新と予約済みギフトを含む前払い期間全体の終了。有効なパッケージは引き続き自身の現在の枠期間を返します。"
          },
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/PlanPurchase"
            },
            "type": "array"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "renewal_package": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlanPurchase",
                "description": "更新対象となる最新の支払い済み契約、または null。"
              },
              {
                "description": "更新対象となる最新の支払い済み契約、または null。",
                "type": "null"
              }
            ],
            "description": "適用済みアップグレードを含む最新の支払い済みまたはギフトの期間。手動または自動更新の選択にはこの実効プランと通貨を使用します。パッケージ開始までは null。"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "RechargeInput": {
        "additionalProperties": false,
        "description": "purchase_id OR upgrade_id のどちらかを紐付け、両方は指定しません。確認済みの支払いはウォレットに入金され、見積もりが有効な場合はその購入／アップグレードを決済します。遅延したアップグレード支払いはウォレットに残ります。",
        "properties": {
          "amount": {
            "description": "チャージ額の小数値。小数点以下最大 2 桁",
            "type": "string"
          },
          "currency": {
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "overage_accepted": {
            "description": "表示された課金対象の超過に対する別個の明示的な許可。",
            "type": "boolean"
          },
          "policy_version": {
            "description": "現在公開されている変更不可のポリシーバージョン。運営者がポリシーを公開した後は、いずれの決済環境でも同意で保護された操作に必要です。",
            "type": "string"
          },
          "purchase_id": {
            "format": "uuid",
            "type": [
              "string",
              "null"
            ]
          },
          "request_id": {
            "maxLength": 80,
            "type": "string"
          },
          "terms_accepted": {
            "description": "デフォルトで未チェックの明示的な同意。",
            "type": "boolean"
          },
          "upgrade_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "currency",
          "amount",
          "request_id"
        ],
        "type": "object"
      },
      "RecoverOriginalRefund": {
        "additionalProperties": false,
        "properties": {
          "confirm_unpaid_manual": {
            "const": true,
            "type": "boolean"
          },
          "expected_updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "confirm_unpaid_manual"
        ],
        "type": "object"
      },
      "RefundHistory": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/RefundHistoryItem"
            },
            "type": "array"
          },
          "limit": {
            "minimum": 0,
            "type": "integer"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "offset": {
            "minimum": 0,
            "type": "integer"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "RefundHistoryItem": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "minimum": 0,
            "type": "integer"
          },
          "case_id": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "order_id": {
            "type": "string"
          },
          "provider": {
            "enum": [
              "paypal",
              "waffo",
              "paddle"
            ],
            "type": "string"
          },
          "provider_refund_id": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "settled_cents": {
            "minimum": 0,
            "type": "integer"
          },
          "status": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "RefundInboxItem": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "minimum": 0,
            "type": "integer"
          },
          "cancellation_scope": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "customer_email": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "manual_refund_pending": {
            "type": "boolean"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "order_id": {
            "type": "string"
          },
          "pending_review": {
            "type": "boolean"
          },
          "purchase_id": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "refund_totals": {
            "description": "範囲指定キャンセルの JSON エンコードされた通貨別金額。",
            "type": "string"
          },
          "reviewed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "scope": {
            "enum": [
              "wallet",
              "service"
            ],
            "type": "string"
          },
          "source": {
            "enum": [
              "wallet_request",
              "support_case"
            ],
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "tenant_name": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "RefundInboxList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/RefundInboxItem"
            },
            "type": "array"
          },
          "limit": {
            "minimum": 0,
            "type": "integer"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "offset": {
            "minimum": 0,
            "type": "integer"
          },
          "summary": {
            "additionalProperties": false,
            "properties": {
              "pending_review": {
                "minimum": 0,
                "type": "integer"
              },
              "service_pending_review": {
                "minimum": 0,
                "type": "integer"
              },
              "wallet_pending_review": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "type": "object"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "RefundInput": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "description": "売上確定通貨の正の返金額。残りの売上確定資金または利用可能な未使用ウォレット残高を超えることはできません。",
            "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
            "type": "string"
          },
          "reason": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "amount",
          "reason",
          "request_id"
        ],
        "type": "object"
      },
      "RefundList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PayPalRefund"
            },
            "type": "array"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "RefundQuote": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "automatic_entitlement_cancellation": {
            "type": "boolean"
          },
          "currency": {
            "type": "string"
          },
          "purchase_id": {
            "format": "uuid",
            "type": "string"
          },
          "quoted_at": {
            "format": "date-time",
            "type": "string"
          },
          "requires_confirmation": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "RefundReview": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "type": "string"
          },
          "amounts": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "amount": {
                  "type": "string"
                },
                "purchase_id": {
                  "format": "uuid",
                  "type": "string"
                }
              },
              "required": [
                "purchase_id",
                "amount"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "approve": {
            "type": "boolean"
          },
          "decision": {
            "maxLength": 3000,
            "type": "string"
          },
          "expected_updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "quote_hash": {
            "type": "string"
          },
          "quoted_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "approve",
          "decision"
        ],
        "type": "object"
      },
      "Register": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "overage_accepted": {
            "description": "表示された課金対象の超過に対する別個の明示的な許可。",
            "type": "boolean"
          },
          "password": {
            "description": "12–128 UTF-8 バイト。文字数ではありません",
            "type": "string",
            "writeOnly": true
          },
          "password_confirmation": {
            "description": "必須。password と完全に一致する必要があります",
            "type": "string",
            "writeOnly": true
          },
          "policy_version": {
            "description": "現在公開されている変更不可のポリシーバージョン。運営者がポリシーを公開した後は、いずれの決済環境でも同意で保護された操作に必要です。",
            "type": "string"
          },
          "tenant_name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "terms_accepted": {
            "description": "デフォルトで未チェックの明示的な同意。",
            "type": "boolean"
          }
        },
        "required": [
          "email",
          "password",
          "password_confirmation",
          "name",
          "tenant_name"
        ],
        "type": "object"
      },
      "Release": {
        "additionalProperties": false,
        "example": {
          "channel": "stable",
          "created_at": "2026-10-18T00:00:00Z",
          "download_url": "",
          "id": "33333333-3333-4333-8333-333333333333",
          "notes": "Initial release",
          "product_id": "11111111-1111-4111-8111-111111111111",
          "published_at": "2026-10-18T00:00:00Z",
          "sha256": "",
          "version": "1.0.0"
        },
        "properties": {
          "channel": {
            "description": "リリースチャネル、stable または preview。デフォルトは stable。",
            "type": "string"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "download_url": {
            "description": "HTTPS ダウンロード URL。URL を指定する場合は sha256 が必要です。",
            "type": "string"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "notes": {
            "description": "リリースノート。",
            "type": "string"
          },
          "product_id": {
            "description": "現在のワークスペースの製品 UUID。",
            "format": "uuid",
            "type": "string"
          },
          "published_at": {
            "description": "リリース公開タイムスタンプ（UTC）。デフォルトはサーバー時刻。",
            "format": "date-time",
            "type": "string"
          },
          "sha256": {
            "description": "ダウンロードファイルの SHA-256、64 文字の小文字 16 進数。署名アルゴリズムとは別です。",
            "type": "string"
          },
          "version": {
            "description": "オブジェクトに応じて、ポリシーリビジョン、製品 major.minor.patch バージョン、またはオフラインプロトコルバージョン 1。",
            "type": "string"
          }
        },
        "required": [
          "id",
          "product_id",
          "version",
          "channel",
          "notes",
          "download_url",
          "sha256",
          "published_at",
          "created_at"
        ],
        "type": "object"
      },
      "ReleaseInput": {
        "additionalProperties": false,
        "properties": {
          "channel": {
            "description": "リリースチャネル、stable または preview。デフォルトは stable。",
            "enum": [
              "stable",
              "preview"
            ],
            "type": "string"
          },
          "download_url": {
            "description": "HTTPS ダウンロード URL。URL を指定する場合は sha256 が必要です。",
            "format": "uri",
            "maxLength": 2000,
            "type": "string"
          },
          "notes": {
            "description": "リリースノート。",
            "maxLength": 10000,
            "type": "string"
          },
          "published_at": {
            "description": "リリース公開タイムスタンプ（UTC）。デフォルトはサーバー時刻。",
            "format": "date-time",
            "type": "string"
          },
          "sha256": {
            "description": "ダウンロードファイルの SHA-256、64 文字の小文字 16 進数。署名アルゴリズムとは別です。",
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "version": {
            "description": "オブジェクトに応じて、ポリシーリビジョン、製品 major.minor.patch バージョン、またはオフラインプロトコルバージョン 1。",
            "pattern": "^(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})$",
            "type": "string"
          }
        },
        "required": [
          "version"
        ],
        "type": "object"
      },
      "ReleaseList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/Release"
            },
            "type": "array"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "Renew": {
        "additionalProperties": false,
        "properties": {
          "days": {
            "description": "追加日数、1–36500。ライセンス更新とメンテナンス更新は異なる期間に影響します。",
            "maximum": 36500,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "days"
        ],
        "type": "object"
      },
      "RenewalPlans": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/Price"
            },
            "type": "array"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          }
        },
        "required": [
          "items",
          "mode"
        ],
        "type": "object"
      },
      "Renewed": {
        "additionalProperties": false,
        "example": {
          "duration_days": 60,
          "expires_at": null,
          "id": "33333333-3333-4333-8333-333333333333"
        },
        "properties": {
          "duration_days": {
            "description": "初回アクティベーション前の更新はこの値を増加させます。アクティベーション後は元の期間を保持します。実際の期限には expires_at を使用してください。",
            "maximum": 36500,
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "expires_at": {
            "anyOf": [
              {
                "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。",
                "type": "null"
              }
            ],
            "description": "ライセンスの有効期限。未アクティベーションの timed/trial または perpetual ライセンスでは null。キーオブジェクトでは認証情報の有効期限。"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "id",
          "expires_at",
          "duration_days"
        ],
        "type": "object"
      },
      "ReservationResult": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "デバイス紐付けまたはランタイムセッション UUID。今後のライセンスリクエスト用に保存します。ライセンスキーではありません。",
            "format": "uuid",
            "type": "string"
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0
              },
              {
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "現在のハートビート間隔（秒）。計量によって署名やタイマーは更新されません。",
            "type": "integer"
          },
          "reservation": {
            "$ref": "#/components/schemas/FeatureReservation"
          }
        },
        "required": [
          "activation_id",
          "reservation"
        ],
        "type": "object"
      },
      "Revenue": {
        "additionalProperties": false,
        "properties": {
          "invoices": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "currency": {
                  "pattern": "^[A-Z]{3}$",
                  "type": "string"
                },
                "email": {
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "month": {
                  "type": "string"
                },
                "paid_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "plan": {
                  "type": "string"
                },
                "plan_name": {
                  "type": "string"
                },
                "refunded_at": {
                  "anyOf": [
                    {
                      "format": "date-time",
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "type": "string"
                },
                "tenant_name": {
                  "type": "string"
                },
                "total_cents": {
                  "type": "integer"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "limit": {
            "type": "integer"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "month": {
            "type": "string"
          },
          "offset": {
            "type": "integer"
          },
          "paddle_totals": {
            "description": "サービス購入とウォレットチャージの双方について、元の支払い月と通貨ごとに集計した支払い総額と累計返金額。銀行決済ではありません。",
            "items": {
              "additionalProperties": false,
              "properties": {
                "currency": {
                  "description": "決済サービスの表示名。",
                  "type": "string"
                },
                "paid_cents": {
                  "description": "固定されたサービス全体の価格（最小通貨単位）。ウォレットチャージや混合決済はありません。",
                  "type": "integer"
                },
                "refunded_cents": {
                  "description": "固定されたサービス全体の価格（最小通貨単位）。ウォレットチャージや混合決済はありません。",
                  "type": "integer"
                }
              },
              "required": [
                "currency",
                "paid_cents",
                "refunded_cents"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "paid_users": {
            "type": "integer"
          },
          "purchase_total": {
            "type": "integer"
          },
          "purchases": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "api_calls": {
                  "type": "integer"
                },
                "api_overage_cents": {
                  "type": "integer"
                },
                "base_cents": {
                  "type": "integer"
                },
                "currency": {
                  "pattern": "^[A-Z]{3}$",
                  "type": "string"
                },
                "email": {
                  "type": "string"
                },
                "ends_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "overage_cents": {
                  "type": "integer"
                },
                "plan": {
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "type": "string"
                },
                "plan_name": {
                  "type": "string"
                },
                "source": {
                  "enum": [
                    "purchase",
                    "gift"
                  ],
                  "type": "string"
                },
                "starts_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "pending",
                    "active",
                    "cancelled"
                  ],
                  "type": "string"
                },
                "tenant_name": {
                  "type": "string"
                },
                "term_months": {
                  "default": 1,
                  "enum": [
                    1,
                    3,
                    6,
                    12
                  ],
                  "type": "integer"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "recharged_users": {
            "type": "integer"
          },
          "registered_users": {
            "type": "integer"
          },
          "sales": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "currency": {
                  "pattern": "^[A-Z]{3}$",
                  "type": "string"
                },
                "plan": {
                  "type": "string"
                },
                "plan_name": {
                  "type": "string"
                },
                "quantity": {
                  "type": "integer"
                },
                "total_cents": {
                  "type": "integer"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "sold_subscriptions": {
            "type": "integer"
          },
          "timezone": {
            "type": "string"
          },
          "topup_total": {
            "type": "integer"
          },
          "topups": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "amount_cents": {
                  "type": "integer"
                },
                "credited_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "currency": {
                  "pattern": "^[A-Z]{3}$",
                  "type": "string"
                },
                "email": {
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "provider": {
                  "description": "ウォレットチャージの元のプロバイダー。返金はこのプロバイダーに紐付いたままです。",
                  "enum": [
                    "paypal",
                    "paddle",
                    "waffo"
                  ],
                  "type": "string"
                },
                "refunded_cents": {
                  "type": "integer"
                },
                "status": {
                  "type": "string"
                },
                "tenant_name": {
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "total": {
            "type": "integer"
          },
          "totals": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "consumption_cents": {
                  "type": "integer"
                },
                "consumption_refund_cents": {
                  "type": "integer"
                },
                "currency": {
                  "pattern": "^[A-Z]{3}$",
                  "type": "string"
                },
                "paypal_refund_cents": {
                  "type": "integer"
                },
                "recharge_cents": {
                  "type": "integer"
                },
                "wallet_refund_cents": {
                  "description": "PayPal、Paddle、Waffo にわたって実行済みのウォレット返金／取り消し。一時的な返金確保は除外します。",
                  "type": "integer"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "upgrade_total": {
            "description": "選択した環境と報告期間に適用されたアップグレード数。無料アップグレードを含みます。初回パッケージ販売とは別に集計されます。",
            "type": "integer"
          },
          "upgrades": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "amount_cents": {
                  "description": "実際に支払った日割り金額。新しい月額全額ではありません。",
                  "type": "integer"
                },
                "applied_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "currency": {
                  "type": "string"
                },
                "email": {
                  "type": "string"
                },
                "ends_at": {
                  "description": "元のパッケージ期限。アップグレードによって変更されません。",
                  "format": "date-time",
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "plan_name": {
                  "description": "変更先パッケージ名。",
                  "type": "string"
                },
                "previous_plan_name": {
                  "description": "このアップグレード前の実効パッケージ。",
                  "type": "string"
                },
                "tenant_name": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "email",
                "tenant_name",
                "plan_name",
                "previous_plan_name",
                "currency",
                "amount_cents",
                "applied_at",
                "ends_at"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "waffo_totals": {
            "description": "サービス購入とウォレットチャージの双方について、元の支払い月と通貨ごとに集計した支払い総額と累計返金額。銀行決済ではありません。",
            "items": {
              "additionalProperties": false,
              "properties": {
                "currency": {
                  "description": "MER_ で始まる事業者識別子。",
                  "type": "string"
                },
                "paid_cents": {
                  "description": "固定されたサービス全体の価格（最小通貨単位）。ウォレットチャージや混合決済はありません。",
                  "type": "integer"
                },
                "refunded_cents": {
                  "description": "固定されたサービス全体の価格（最小通貨単位）。ウォレットチャージや混合決済はありません。",
                  "type": "integer"
                }
              },
              "required": [
                "currency",
                "paid_cents",
                "refunded_cents"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [],
        "type": "object"
      },
      "RuntimeAPIPeriod": {
        "additionalProperties": false,
        "properties": {
          "api_calls": {
            "description": "対象範囲内で成功した従量制ランタイム API 呼び出し。管理リクエストは除外されます。",
            "type": "integer"
          },
          "api_hard_limit": {
            "description": "API 枠の上限でランタイム呼び出しを停止するかどうか。",
            "type": "boolean"
          },
          "api_overage_cents": {
            "description": "このサイクルの API 超過料金（100 分の 1 単位）。",
            "type": "integer"
          },
          "api_unit_micros": {
            "description": "超過ランタイム呼び出し 1 回あたりの価格（100 万分の 1 単位）。",
            "minimum": 0,
            "type": "integer"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "included_api_calls": {
            "description": "null = 無制限、0 = 成功した呼び出しの付属枠なし",
            "maximum": 1000000000000,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "month": {
            "description": "UTC の月 YYYY-MM。クエリ値を省略すると現在の月を使用します。請求ジョブには締め済みの月が必要です。",
            "type": "string"
          },
          "plan": {
            "description": "公開カタログの安定した請求プラン識別子。",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          },
          "price_version": {
            "description": "固定された価格リビジョン。古い入力は PLAN_VERSION_CONFLICT を引き起こすことがあります。",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "RuntimeInput": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "最後に成功したアクティベーションの data.activation_id。検証、ハートビート、consume、非アクティベーションに必要です。初回 activate のみ省略します。",
            "format": "uuid",
            "type": "string"
          },
          "app_version": {
            "description": "現在のアプリバージョン、major.minor.patch。例：1.0.0。メンテナンスまたはバージョン範囲ルールに必要です。新しいアプリを古いバージョンと偽って報告してはいけません。",
            "pattern": "^$|^(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})$",
            "type": "string"
          },
          "device_id": {
            "description": "SDK が製品、システム、ハードウェア ID から計算した 64 文字の小文字 16 進 SHA-256。固定値に置き換えないでください。",
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "device_name": {
            "description": "ダッシュボードの表示名、最大 120 文字。デバイス ID を決定するものではありません。",
            "maxLength": 120,
            "type": "string"
          },
          "device_profile": {
            "$ref": "#/components/schemas/DeviceProfile",
            "description": "SDK が生成するマシンプロファイル。ハードウェア ID、VM 拒否、ハードウェア移行のポリシーで必要に応じて指定します。"
          },
          "environment": {
            "description": "接続と署名済み許可の両方に固定されたコマース環境。",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "feature": {
            "description": "消費する機能識別子。",
            "maxLength": 64,
            "type": "string"
          },
          "identity_token": {
            "description": "1 回限りの型付き Ed25519 Launch ID JWT。権利クレームを購入権として信頼しません。",
            "maxLength": 12288,
            "type": "string",
            "writeOnly": true
          },
          "launch_connection_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "license_key": {
            "description": "完全な顧客キー：lv_lic_ は通常のライセンスキー、lv_tmp_ は初回移転引き換え用です。成功後、SDK はマシンに紐付いた lv_dev_ 認証情報を使用します。ベンダー管理 API Key ではありません。",
            "pattern": "^(?:lv_(?:lic|tmp|dev)_[A-Za-z0-9_-]{43})?$",
            "type": "string",
            "writeOnly": true
          },
          "product_id": {
            "description": "製品 UUID。ライセンスの製品と一致する必要があります。",
            "format": "uuid",
            "type": "string"
          },
          "quantity": {
            "description": "この操作で要求する単位数。整数 1–1000000000。",
            "maximum": 1000000000,
            "minimum": 1,
            "type": "integer"
          },
          "request_logout_ticket": {
            "description": "SDK 機能ネゴシエーション。現在の紐付けについてチケットが保持されていない場合は紐付け解除専用ログアウトチケットを要求します。有効なログアウトチケットが既に保持されている場合は省略します。定常状態のハートビートでは追加のチケット検索を回避します。",
            "type": "boolean"
          },
          "reservation_id": {
            "description": "予約 ID。この値を確定またはキャンセルに送信します。",
            "format": "uuid",
            "type": "string"
          },
          "reservation_seconds": {
            "default": 900,
            "description": "任意の予約有効期間、30–3600 秒。デフォルトは 900。期間のリセット時にはそれより早く終了します。",
            "maximum": 3600,
            "minimum": 30,
            "type": "integer"
          },
          "session_id": {
            "description": "フローティングライセンスでは必須：実行中のインスタンスごとに UUID を生成し、そのインスタンスのリクエストで再利用します。デバイス固定ライセンスでは任意です。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "license_key",
          "device_id"
        ],
        "type": "object"
      },
      "RuntimePolicy": {
        "additionalProperties": false,
        "properties": {
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0
              },
              {
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "オンライン時のハートビート間隔（秒）。0 は定期ハートビートを無効にします。オフライン許可は別途設定します。",
            "type": "integer"
          },
          "offline_mode": {
            "description": "limited：時間制限付きオフライン、none：オフライン使用不可、permanent：追加のオフライン時間制限なし。ただしライセンスの有効期限は引き続き適用されます。",
            "enum": [
              "limited",
              "none",
              "permanent"
            ],
            "type": "string"
          },
          "offline_seconds": {
            "description": "許可されるオフライン秒数：limited は 1–31536000、none/permanent は 0。これはハートビート間隔ではありません。ハートビートが有効な場合、新しい有限オフラインポリシーは offline_seconds \u003e= 3 × heartbeat_seconds を満たす必要があります。フローティングシートのリースも、少なくとも3回分のハートビート間隔をカバーする必要があります。",
            "maximum": 31536000,
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "heartbeat_seconds",
          "offline_mode",
          "offline_seconds"
        ],
        "type": "object"
      },
      "RuntimeResult": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "デバイス紐付けまたはランタイムセッション UUID。今後のライセンスリクエスト用に保存します。ライセンスキーではありません。",
            "format": "uuid",
            "type": "string"
          },
          "deactivated": {
            "description": "非アクティベーション成功時は true。紐付けまたはセッションを解放しますが、ライセンスを削除したり期間をリセットしたりしません。",
            "type": "boolean"
          },
          "device_key": {
            "description": "デバイスと紐付けバージョンに固定された制限付きデバイス認証情報。アカウントモードの認証情報には有効な認可セッションと権利も必要で、解放済みの紐付けを再アクティベーションできません。",
            "pattern": "^lv_dev_[A-Za-z0-9_-]{43}$",
            "type": "string"
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0,
                "description": "ハートビート間隔（秒）：0 は無効、それ以外は 600–86400。省略時はサーバーのデフォルトを使用し、オフライン許可とは独立しています。"
              },
              {
                "description": "ハートビート間隔（秒）：0 は無効、それ以外は 600–86400。省略時はサーバーのデフォルトを使用し、オフライン許可とは独立しています。",
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "推奨ハートビート秒数。0 の場合トップレベルのフィールドは省略されることがあります。署名内の runtime_policy.heartbeat_seconds が正規のポリシー値です。",
            "type": "integer"
          },
          "lease": {
            "$ref": "#/components/schemas/Lease",
            "description": "サーバー署名済みライセンスキャッシュ。固定された信頼できる公開鍵で検証し、製品／デバイスを確認した後にのみ受け入れてください。非アクティベーションまたは consume では返されません。"
          },
          "logout_ticket": {
            "$ref": "#/components/schemas/LogoutTicket",
            "description": "この正確な紐付け世代に対する解除専用の権限。ランタイムリクエストログに含めないでください。"
          }
        },
        "required": [
          "activation_id"
        ],
        "type": "object"
      },
      "SDKConfig": {
        "additionalProperties": false,
        "example": {
          "allow_http": false,
          "app_version": "",
          "base_url": "https://www.licentivo.com",
          "cache_path": "",
          "device_name": "My application",
          "license_key": "",
          "product_id": "11111111-1111-4111-8111-111111111111",
          "trusted_keys": {
            "66666666-6666-4666-8666-666666666666": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          }
        },
        "properties": {
          "allow_http": {
            "description": "HTTP が許可されるかどうか。ローカル開発専用です。",
            "type": "boolean"
          },
          "app_version": {
            "description": "現在のソフトウェア major.minor.patch バージョン。",
            "type": "string"
          },
          "base_url": {
            "description": "ライセンスサーバーのオリジン。通常は HTTPS で、/api/v1 は含みません。",
            "type": "string"
          },
          "cache_path": {
            "description": "ローカルキャッシュパス。空の場合は SDK が非公開ユーザーディレクトリを選択します。",
            "type": "string"
          },
          "device_name": {
            "description": "人が読めるデバイスラベル。セキュリティ上の ID ではありません。",
            "type": "string"
          },
          "license_key": {
            "description": "アクティベーション時に指定する完全な顧客ライセンスキー。製品初期化コードとサンプルのダウンロードにはこの秘密情報は含まれません。オフラインリクエストは SDK が提供する認証情報を使用します。",
            "type": "string"
          },
          "product_id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "trusted_keys": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "固定検証用の公開鍵 UUID から Base64URL 公開鍵へのマップ。",
            "type": "object"
          }
        },
        "required": [
          "base_url",
          "product_id",
          "license_key",
          "app_version",
          "device_name",
          "trusted_keys",
          "cache_path",
          "allow_http"
        ],
        "type": "object"
      },
      "SDKExampleInfo": {
        "additionalProperties": false,
        "properties": {
          "available": {
            "type": "boolean"
          },
          "can_configure": {
            "type": "boolean"
          },
          "duration_days": {
            "const": 3,
            "type": "integer"
          },
          "starts_at_first_activation": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "SDKExampleSetting": {
        "additionalProperties": false,
        "properties": {
          "available": {
            "type": "boolean"
          },
          "duration_days": {
            "const": 3,
            "type": "integer"
          },
          "policy_id": {
            "description": "専用ポリシー UUID。初期設定前は空。",
            "type": "string"
          },
          "product_id": {
            "description": "専用製品 UUID。初期設定前は空。",
            "type": "string"
          }
        },
        "required": [
          "available",
          "duration_days",
          "product_id",
          "policy_id"
        ],
        "type": "object"
      },
      "SDKExampleSetup": {
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "SDKExampleTrial": {
        "additionalProperties": false,
        "properties": {
          "duration_days": {
            "const": 3,
            "type": "integer"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "first_activated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "license_key": {
            "type": "string"
          },
          "starts_at_first_activation": {
            "type": "boolean"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "SDKInitializer": {
        "additionalProperties": false,
        "example": {
          "language": "go",
          "product_id": "11111111-1111-4111-8111-111111111111",
          "source": "const productID = \"11111111-1111-4111-8111-111111111111\"\nvar trustedKeys = map[string]string{\"66666666-6666-4666-8666-666666666666\": \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"}\n",
          "trusted_keys": {
            "66666666-6666-4666-8666-666666666666": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          }
        },
        "properties": {
          "language": {
            "description": "ダウンロードバンドルの SDK 言語識別子。",
            "type": "string"
          },
          "product_id": {
            "description": "現在のワークスペースの製品 UUID。",
            "format": "uuid",
            "type": "string"
          },
          "source": {
            "description": "コードに貼り付ける公開製品定数。顧客のアクティベーション秘密情報は含みません。",
            "type": "string"
          },
          "trusted_keys": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "固定検証用の公開鍵 UUID から Base64URL 公開鍵へのマップ。",
            "type": "object"
          }
        },
        "required": [
          "product_id",
          "trusted_keys",
          "language",
          "source"
        ],
        "type": "object"
      },
      "ScheduledPlan": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "type": "string"
          },
          "effective_month": {
            "description": "スケジュールが有効になる UTC の月 YYYY-MM。",
            "type": "string"
          },
          "plan": {
            "description": "公開カタログの安定した請求プラン識別子。",
            "type": "string"
          },
          "sandbox": {
            "description": "Sandbox 環境。",
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "ScopedRefundPreview": {
        "additionalProperties": false,
        "properties": {
          "affected_purchases": {
            "items": {
              "$ref": "#/components/schemas/ScopedRefundPurchase"
            },
            "type": "array"
          },
          "auto_renewal_disabled": {
            "type": "boolean"
          },
          "auto_renewal_enabled": {
            "type": "boolean"
          },
          "cancellation_at": {
            "const": "approval",
            "type": "string"
          },
          "pending_purchase_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "pending_upgrade_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "quote_hash": {
            "type": "string"
          },
          "quoted_at": {
            "format": "date-time",
            "type": "string"
          },
          "remaining_purchases": {
            "items": {
              "$ref": "#/components/schemas/ScopedRefundPurchase"
            },
            "type": "array"
          },
          "request": {
            "$ref": "#/components/schemas/CustomerRefundInput"
          },
          "scope": {
            "enum": [
              "purchase",
              "service"
            ],
            "type": "string"
          },
          "totals": {
            "items": {
              "$ref": "#/components/schemas/ScopedRefundTotal"
            },
            "type": "array"
          }
        },
        "required": [],
        "type": "object"
      },
      "ScopedRefundPurchase": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "approved_cents": {
            "type": "integer"
          },
          "currency": {
            "type": "string"
          },
          "ends_at": {
            "format": "date-time",
            "type": "string"
          },
          "maximum_cents": {
            "type": "integer"
          },
          "plan_name": {
            "type": "string"
          },
          "purchase_id": {
            "format": "uuid",
            "type": "string"
          },
          "requires_review": {
            "type": "boolean"
          },
          "source": {
            "type": "string"
          },
          "starts_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "ScopedRefundTotal": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "approved_cents": {
            "type": "integer"
          },
          "currency": {
            "type": "string"
          },
          "held_cents": {
            "type": "integer"
          },
          "manual_cents": {
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "ServiceCompensation": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "incident_id": {
            "description": "関連するサービスインシデント UUID。",
            "format": "uuid",
            "type": "string"
          },
          "intervals": {
            "description": "JSON 文字列として返される補償対象の時間区間。",
            "type": "string"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "type": "string"
          },
          "purchase_id": {
            "description": "関連するパッケージ購入 UUID。",
            "format": "uuid",
            "type": "string"
          },
          "seconds": {
            "description": "サービス補償として追加された秒数。",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "incident_id",
          "mode",
          "seconds",
          "purchase_id",
          "created_at"
        ],
        "type": "object"
      },
      "ServiceCompensationList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/ServiceCompensation"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ServiceIncident": {
        "additionalProperties": false,
        "properties": {
          "affected_tenants": {
            "description": "JSON エンコードされたワークスペース ID の配列。[] は全体を意味します。",
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "emergency": {
            "type": "boolean"
          },
          "ends_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "starts_at": {
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "ServiceIncidentInput": {
        "additionalProperties": false,
        "properties": {
          "affected_tenants": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "body": {
            "type": "string"
          },
          "emergency": {
            "type": "boolean"
          },
          "ends_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "expected_version": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "maintenance",
              "incident"
            ],
            "type": "string"
          },
          "starts_at": {
            "format": "date-time",
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "title",
          "body",
          "starts_at"
        ],
        "type": "object"
      },
      "ServiceIncidentList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ServiceIncident"
            },
            "type": "array"
          },
          "now": {
            "format": "date-time",
            "type": "string"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "SignedCapabilities": {
        "additionalProperties": false,
        "properties": {
          "app_version": {
            "description": "この Launch 認可操作の app version。",
            "pattern": "^(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})$",
            "type": "string"
          },
          "binding_version": {
            "description": "認可セッションに関連付けられた署名済みデバイス紐付け世代。",
            "minimum": 1,
            "type": "integer"
          },
          "environment": {
            "description": "接続と署名済み許可の両方に固定されたコマース環境。",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "launch_connection_id": {
            "description": "Licentivo リソース UUID。",
            "format": "uuid",
            "type": "string"
          },
          "license_model": {
            "description": "この Launch 認可操作の license model。",
            "enum": [
              "node_locked",
              "floating"
            ],
            "type": "string"
          },
          "maintenance_until": {
            "description": "この Launch 認可操作の maintenance until。",
            "type": "integer"
          },
          "session_expires_at": {
            "description": "この Launch 認可操作の session expires at。",
            "maximum": 253402300799,
            "type": "integer"
          },
          "session_id": {
            "description": "この Launch 認可操作の session id。",
            "format": "uuid",
            "type": "string"
          },
          "version_released_at": {
            "description": "この Launch 認可操作の version released at。",
            "type": "integer"
          }
        },
        "required": [
          "license_model"
        ],
        "type": "object"
      },
      "SigningKey": {
        "additionalProperties": false,
        "properties": {
          "active": {
            "description": "現在の署名キーフラグ。ポリシープレビューでは有効なデバイス／セッション数。",
            "type": "boolean"
          },
          "algorithm": {
            "const": "Ed25519",
            "description": "署名アルゴリズム。現在は Ed25519。",
            "type": "string"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "key_id": {
            "description": "検証キーの選択に使用する製品署名キー UUID。",
            "format": "uuid",
            "type": "string"
          },
          "public_key": {
            "description": "Base64URL エンコードされた Ed25519 公開鍵。秘密鍵の内容は含みません。",
            "type": "string"
          },
          "retired_at": {
            "anyOf": [
              {
                "description": "キーの引退タイムスタンプ。現在のキーでは null。引退した公開鍵は検証用に引き続き利用できます。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "キーの引退タイムスタンプ。現在のキーでは null。引退した公開鍵は検証用に引き続き利用できます。",
                "type": "null"
              }
            ],
            "description": "キーの引退タイムスタンプ。現在のキーでは null。引退した公開鍵は検証用に引き続き利用できます。"
          }
        },
        "required": [
          "key_id",
          "public_key",
          "active"
        ],
        "type": "object"
      },
      "StateResult": {
        "additionalProperties": false,
        "example": {
          "id": "33333333-3333-4333-8333-333333333333",
          "status": "pending"
        },
        "properties": {
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
            "type": "string"
          }
        },
        "required": [
          "id",
          "status"
        ],
        "type": "object"
      },
      "Subscription": {
        "additionalProperties": false,
        "properties": {
          "current": {
            "$ref": "#/components/schemas/Period",
            "description": "現在の UTC 月のデフォルト請求スナップショット。"
          },
          "next": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PendingPlan",
                "description": "予約済みの翌月のデフォルトプラン、または null。"
              },
              {
                "description": "予約済みの翌月のデフォルトプラン、または null。",
                "type": "null"
              }
            ],
            "description": "予約済みの翌月のデフォルトプラン、または null。"
          },
          "sandbox": {
            "description": "このサブスクリプションプレビューは true を返します。実際の決済環境はこのプレビューフラグではなく請求／決済設定から判断してください。",
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "Summary": {
        "additionalProperties": false,
        "properties": {
          "active_licenses": {
            "description": "有効で期限切れでないライセンスの数。初回アクティベーション待ちを含みます。",
            "type": "integer"
          },
          "licenses": {
            "description": "アーカイブされていないライセンスの数。",
            "type": "integer"
          },
          "policies": {
            "description": "アーカイブされていないポリシーの数。",
            "type": "integer"
          },
          "products": {
            "description": "概要の製品数。使用量レスポンスでは製品ごとのデバイス使用グループ。",
            "type": "integer"
          }
        },
        "required": [
          "products",
          "policies",
          "licenses",
          "active_licenses"
        ],
        "type": "object"
      },
      "SupportCase": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "approved_cents": {
            "type": "integer"
          },
          "cancellation_preview": {
            "description": "JSON エンコードされたキャンセルプレビュー。",
            "type": "string"
          },
          "cancellation_scope": {
            "type": "string"
          },
          "change_id": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "decision": {
            "type": "string"
          },
          "first_response_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "held_cents": {
            "type": "integer"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "incident_id": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "manual_cents": {
            "type": "integer"
          },
          "manual_refund_pending": {
            "type": "boolean"
          },
          "mode": {
            "type": "string"
          },
          "order_id": {
            "type": "string"
          },
          "purchase_id": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "refund_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "refund_totals": {
            "description": "JSON エンコードされた通貨別合計。異なる通貨を合算してはいけません。",
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "response_due_at": {
            "format": "date-time",
            "type": "string"
          },
          "review_due_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "reviewed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "scope_ids": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "SupportCaseDetail": {
        "additionalProperties": false,
        "properties": {
          "case": {
            "$ref": "#/components/schemas/SupportCase"
          },
          "messages": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "body": {
                  "type": "string"
                },
                "case_id": {
                  "format": "uuid",
                  "type": "string"
                },
                "created_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "staff": {
                  "type": "boolean"
                },
                "user_id": {
                  "format": "uuid",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "original_refund_receipts": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "amount_cents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "currency": {
                  "type": "string"
                },
                "intent_id": {
                  "format": "uuid",
                  "type": "string"
                },
                "refund_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "original_refunds": {
            "items": {
              "$ref": "#/components/schemas/ProviderRefund"
            },
            "type": "array"
          },
          "refund_payments": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "amount_cents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "currency": {
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "provider": {
                  "type": "string"
                },
                "provider_order_id": {
                  "type": "string"
                },
                "refunded_cents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "status": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "refund_provider": {
            "type": "string"
          },
          "refund_unverified": {
            "type": "boolean"
          },
          "refunds": {
            "items": {
              "$ref": "#/components/schemas/PayPalRefund"
            },
            "type": "array"
          }
        },
        "required": [],
        "type": "object"
      },
      "SupportCaseInput": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "maxLength": 10000,
            "type": "string"
          },
          "kind": {
            "enum": [
              "support",
              "privacy",
              "appeal"
            ],
            "type": "string"
          },
          "request_id": {
            "maxLength": 80,
            "type": "string"
          },
          "subject": {
            "maxLength": 200,
            "type": "string"
          }
        },
        "required": [
          "subject",
          "body",
          "request_id"
        ],
        "type": "object"
      },
      "SupportCaseList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/SupportCase"
            },
            "type": "array"
          },
          "now": {
            "format": "date-time",
            "type": "string"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "SupportContact": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "description": "公開サポートメールと請求メールの Reply-To。空の場合は連絡先を非表示にします。既存の SMTP From アドレスは変更せず、受信箱も作成しません。",
            "maxLength": 254,
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "SupportReadInput": {
        "additionalProperties": false,
        "properties": {
          "last_message_id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "last_message_id"
        ],
        "type": "object"
      },
      "SupportReply": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "maxLength": 10000,
            "type": "string"
          },
          "expected_updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "enum": [
              "",
              "reviewing",
              "awaiting_info",
              "resolved"
            ],
            "type": "string"
          }
        },
        "required": [
          "body"
        ],
        "type": "object"
      },
      "SupportUnread": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "case_id": {
                  "format": "uuid",
                  "type": "string"
                },
                "unread_messages": {
                  "type": "integer"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "unread_cases": {
            "type": "integer"
          },
          "unread_messages": {
            "type": "integer"
          },
          "unread_notices": {
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "SystemSettings": {
        "additionalProperties": false,
        "properties": {
          "database": {
            "$ref": "#/components/schemas/DatabaseStatus"
          },
          "environment": {
            "type": "string"
          },
          "mail": {
            "$ref": "#/components/schemas/MailSettings"
          },
          "public_url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "mail",
          "database"
        ],
        "type": "object"
      },
      "TLSCertificateInfo": {
        "additionalProperties": false,
        "properties": {
          "algorithm": {
            "type": "string"
          },
          "chain_length": {
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          },
          "domains": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fingerprint_sha256": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "issuer": {
            "type": "string"
          },
          "not_after": {
            "format": "date-time",
            "type": "string"
          },
          "not_before": {
            "format": "date-time",
            "type": "string"
          },
          "self_signed": {
            "type": "boolean"
          },
          "serial_number": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          }
        },
        "required": [
          "domains",
          "subject",
          "issuer",
          "not_before",
          "not_after",
          "fingerprint_sha256",
          "serial_number",
          "algorithm",
          "chain_length",
          "self_signed"
        ],
        "type": "object"
      },
      "TLSCertificateInput": {
        "additionalProperties": false,
        "properties": {
          "certificate_pem": {
            "description": "PEM リーフ証明書に続けて中間証明書を順に指定します。public_url と一致する必要があります。自己署名証明書はローカル開発でのみ許可されます。",
            "maxLength": 32768,
            "type": "string",
            "writeOnly": true
          },
          "expected_version": {
            "description": "GET /system/tls の version を使用します。更新時に必須で、同時置換は 409 を返します。",
            "type": "string"
          },
          "private_key_pem": {
            "description": "一致する暗号化されていない PEM キー（PKCS#8、RSA または EC）。どのレスポンスでも返されません。",
            "maxLength": 16384,
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "certificate_pem",
          "private_key_pem"
        ],
        "type": "object"
      },
      "TLSCertificateResult": {
        "additionalProperties": false,
        "properties": {
          "certificate": {
            "$ref": "#/components/schemas/TLSCertificateInfo"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "certificate",
          "version",
          "updated_at"
        ],
        "type": "object"
      },
      "TLSCertificateUpdateInput": {
        "additionalProperties": false,
        "properties": {
          "certificate_pem": {
            "description": "PEM リーフ証明書に続けて中間証明書を順に指定します。public_url と一致する必要があります。自己署名証明書はローカル開発でのみ許可されます。",
            "maxLength": 32768,
            "type": "string",
            "writeOnly": true
          },
          "expected_version": {
            "description": "GET /system/tls の version を使用します。更新時に必須で、同時置換は 409 を返します。",
            "type": "string"
          },
          "private_key_pem": {
            "description": "一致する暗号化されていない PEM キー（PKCS#8、RSA または EC）。どのレスポンスでも返されません。",
            "maxLength": 16384,
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "certificate_pem",
          "private_key_pem",
          "expected_version"
        ],
        "type": "object"
      },
      "TLSStatus": {
        "additionalProperties": false,
        "properties": {
          "address": {
            "type": "string"
          },
          "certificate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TLSCertificateInfo"
              },
              {
                "type": "null"
              }
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "http_redirect_address": {
            "type": "string"
          },
          "public_url": {
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "public_url",
          "address",
          "http_redirect_address",
          "certificate",
          "version",
          "updated_at"
        ],
        "type": "object"
      },
      "TestMail": {
        "additionalProperties": false,
        "properties": {
          "to": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "to"
        ],
        "type": "object"
      },
      "Token": {
        "additionalProperties": false,
        "properties": {
          "token": {
            "maxLength": 100,
            "minLength": 32,
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "token"
        ],
        "type": "object"
      },
      "TokenPassword": {
        "additionalProperties": false,
        "properties": {
          "password": {
            "description": "12–128 UTF-8 バイト。文字数ではありません",
            "type": "string",
            "writeOnly": true
          },
          "password_confirmation": {
            "description": "必須。password と完全に一致する必要があります",
            "type": "string",
            "writeOnly": true
          },
          "token": {
            "maxLength": 100,
            "minLength": 32,
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "token",
          "password",
          "password_confirmation"
        ],
        "type": "object"
      },
      "TransferCode": {
        "additionalProperties": false,
        "properties": {
          "activation_code": {
            "pattern": "^lv_tmp_[A-Za-z0-9_-]{43}$",
            "type": "string"
          },
          "activation_id": {
            "format": "uuid",
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "type": "string"
          },
          "license_id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "activation_id",
          "activation_code",
          "expires_at",
          "license_id"
        ],
        "type": "object"
      },
      "TranslationCheck": {
        "additionalProperties": false,
        "properties": {
          "connected": {
            "type": "boolean"
          },
          "languages": {
            "items": {
              "$ref": "#/components/schemas/TranslationLanguage"
            },
            "type": "array"
          },
          "provider_usage": {
            "additionalProperties": false,
            "properties": {
              "character_count": {
                "type": "integer"
              },
              "character_limit": {
                "type": "integer"
              }
            },
            "required": [
              "character_count",
              "character_limit"
            ],
            "type": "object"
          }
        },
        "required": [
          "connected",
          "languages",
          "provider_usage"
        ],
        "type": "object"
      },
      "TranslationLanguage": {
        "additionalProperties": false,
        "properties": {
          "lang": {
            "description": "DeepL v3 が返す BCP 47 の対象コード。例：en-US または zh-Hant。",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "usable_as_target": {
            "type": "boolean"
          }
        },
        "required": [
          "lang",
          "name",
          "usable_as_target"
        ],
        "type": "object"
      },
      "TranslationOptions": {
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "languages": {
            "items": {
              "$ref": "#/components/schemas/TranslationLanguage"
            },
            "type": "array"
          },
          "provider": {
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "languages",
          "provider"
        ],
        "type": "object"
      },
      "TranslationSettings": {
        "additionalProperties": false,
        "properties": {
          "checked_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "key_configured": {
            "type": "boolean"
          },
          "languages": {
            "items": {
              "$ref": "#/components/schemas/TranslationLanguage"
            },
            "type": "array"
          },
          "local_usage": {
            "$ref": "#/components/schemas/TranslationUsage"
          },
          "monthly_limit": {
            "description": "ローカルの月間文字予算。DeepL アカウントの枠や請求日とは独立しています。",
            "type": "integer"
          },
          "requests_per_minute": {
            "type": "integer"
          },
          "tier": {
            "enum": [
              "free",
              "pro"
            ],
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "tier",
          "key_configured",
          "monthly_limit",
          "requests_per_minute",
          "languages",
          "checked_at",
          "version",
          "local_usage"
        ],
        "type": "object"
      },
      "TranslationSettingsInput": {
        "additionalProperties": false,
        "properties": {
          "api_key": {
            "description": "暗号化して保存されます。clear_key が true でない限り、空欄は保存済みキーを保持します。キー／階層の変更には再度接続チェックの成功が必要です。",
            "maxLength": 1000,
            "type": "string",
            "writeOnly": true
          },
          "clear_key": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          },
          "expected_version": {
            "type": "string"
          },
          "monthly_limit": {
            "maximum": 1000000000,
            "minimum": 1,
            "type": "integer"
          },
          "requests_per_minute": {
            "maximum": 60,
            "minimum": 1,
            "type": "integer"
          },
          "tier": {
            "enum": [
              "free",
              "pro"
            ],
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "tier",
          "monthly_limit",
          "requests_per_minute",
          "expected_version"
        ],
        "type": "object"
      },
      "TranslationUsage": {
        "additionalProperties": false,
        "properties": {
          "characters": {
            "description": "課金対象として成功した文字数に、結果不明のリクエストに対する保守的な予約を加えた数。キャッシュヒットでは使用量は増えません。",
            "type": "integer"
          },
          "month": {
            "description": "UTC の暦月 YYYY-MM。",
            "type": "string"
          }
        },
        "required": [
          "month",
          "characters"
        ],
        "type": "object"
      },
      "Trial": {
        "additionalProperties": false,
        "properties": {
          "base_url": {
            "type": "string"
          },
          "duration_days": {
            "const": 7,
            "type": "integer"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "isolated": {
            "type": "boolean"
          },
          "key": {
            "type": "string",
            "writeOnly": true
          },
          "license_id": {
            "format": "uuid",
            "type": "string"
          },
          "product_id": {
            "format": "uuid",
            "type": "string"
          },
          "trusted_keys": {
            "items": {
              "$ref": "#/components/schemas/SigningKey"
            },
            "type": "array"
          }
        },
        "required": [
          "product_id",
          "license_id",
          "key",
          "trusted_keys"
        ],
        "type": "object"
      },
      "UpgradeList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/PlanUpgrade"
            },
            "type": "array"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "UpgradePart": {
        "additionalProperties": false,
        "description": "現在または将来の前払い期間 1 件に対する固定されたアップグレード計算。change.amount_cents はこの期間の差額で、合計額を請求するのは親の見積もりのみです。",
        "properties": {
          "change": {
            "$ref": "#/components/schemas/PlanUpgrade",
            "description": "このアップグレード部分の価格と権利の変更。"
          },
          "ends_at": {
            "description": "パッケージまたはサイクルの終了タイムスタンプ（UTC）。アクティベーション前は null の場合があります。",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "source": {
            "description": "purchase や gift などの権利の発生元。",
            "enum": [
              "purchase",
              "gift",
              "auto_renewal"
            ],
            "type": "string"
          },
          "starts_at": {
            "description": "パッケージまたはサイクルの開始タイムスタンプ（UTC）。",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "source",
          "starts_at",
          "ends_at",
          "change"
        ],
        "type": "object"
      },
      "UpgradeQuoteInput": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "plan": {
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "request_id": {
            "maxLength": 80,
            "type": "string"
          }
        },
        "required": [
          "plan",
          "currency",
          "price_version",
          "request_id"
        ],
        "type": "object"
      },
      "Usage": {
        "additionalProperties": false,
        "properties": {
          "active_devices": {
            "description": "現在の UTC 月の場合：月間デバイス使用履歴とは独立した、現在登録されている製品／デバイスの占有数。通常の登録はオフライン中も解放されるまでカウントされます。フローティングセッションはリースが有効な間のみカウントされ、ハードウェアで重複排除し、利用できない場合はデバイス ID を使用します。解放または最後のフローティングセッションのリース期限切れにより枠が戻ります。有効な登録は枠月の境界を越えて継続します。隔離された SDK トライアル登録は除外されます。別の UTC 月の場合：その月に記録された重複しないデバイス使用履歴。",
            "type": "integer"
          },
          "api_calls": {
            "description": "選択した UTC 月と決済環境における成功した activate、validate、heartbeat、deactivate 呼び出し。失敗、有効な冪等再実行、ローカルチェック、ソフトウェア機能の消費は除外されます。購入パッケージの枠との比較には、パッケージの枠月に従う purchased.api_calls を使用します。",
            "type": "integer"
          },
          "api_period": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RuntimeAPIPeriod",
                "description": "この UTC 月のデフォルト API 枠スナップショット。無効な場合は null になることがあります。"
              },
              {
                "description": "この UTC 月のデフォルト API 枠スナップショット。無効な場合は null になることがあります。",
                "type": "null"
              }
            ],
            "description": "デフォルトの UTC 月間 API 枠。利用できない場合は null。購入パッケージがある場合、現在の枠月には purchased.api_calls と purchased.included_api_calls を使用します。"
          },
          "billable_devices": {
            "description": "現在の UTC 月に有効な購入がない場合、デフォルト枠での現在のデバイス占有数。締め済みの月または前払い期間では、保存されたデフォルト期間の請求ピーク。推定には少なくとも記録済みピークを使用します。デバイスを解放しても発生済み料金は返金されません。",
            "type": "integer"
          },
          "estimated_total_cents": {
            "description": "デフォルトの月間デバイス料金の推定額（通貨単位の 100 分の 1）。",
            "type": "integer"
          },
          "estimated_total_micros": {
            "description": "デフォルトの月間デバイス料金の推定額（100 万分の 1 単位）。全パッケージ料金の合計ではありません。",
            "type": "integer"
          },
          "month": {
            "description": "UTC の月 YYYY-MM。クエリ値を省略すると現在の月を使用します。請求ジョブには締め済みの月が必要です。",
            "type": "string"
          },
          "operations": {
            "description": "activate、validate、heartbeat、deactivate ごとにグループ化された成功した従量制呼び出し回数。",
            "items": {
              "additionalProperties": false,
              "properties": {
                "count": {
                  "description": "現在のグループの件数、または一括処理で処理されたレコード数。",
                  "type": "integer"
                },
                "operation": {
                  "description": "操作名。一括処理は create/renew/revoke/apply_policy を、オフラインリクエストは activate/deactivate をサポートします。",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "overage_devices": {
            "description": "付属枠を超えるデバイス。",
            "type": "integer"
          },
          "period": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Period",
                "description": "デフォルトの UTC 月次請求スナップショット。計量ルールは month/day/lifetime を使用し、使用量の行は具体的な期間キーを使用します。"
              },
              {
                "description": "デフォルトの UTC 月次請求スナップショット。計量ルールは month/day/lifetime を使用し、使用量の行は具体的な期間キーを使用します。",
                "type": "null"
              }
            ],
            "description": "固定されたデフォルト／履歴の UTC 請求枠。該当期間がなくデフォルトオファーが無効な場合は null。有効な購入は引き続き利用できます。"
          },
          "products": {
            "description": "概要の製品数。使用量レスポンスでは製品ごとのデバイス使用グループ。",
            "items": {
              "additionalProperties": false,
              "properties": {
                "active_devices": {
                  "description": "現在の UTC 月は製品ごとの現在の占有数。過去の UTC 月は履歴上の重複しないデバイス使用数。",
                  "type": "integer"
                },
                "product_id": {
                  "description": "現在のワークスペースの製品 UUID。",
                  "format": "uuid",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "purchased": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlanPurchase",
                "description": "現在有効なローリング月間パッケージ、または null。"
              },
              {
                "description": "現在有効なローリング月間パッケージ、または null。",
                "type": "null"
              }
            ],
            "description": "現在の決済環境で有効なパッケージ。現在の UTC 月にのみ返されます。主要なデバイス枠には period.included_devices ではなく purchased.included_devices を使用してください。"
          },
          "purchased_active_devices": {
            "description": "purchased が存在する場合：月間デバイス使用履歴とは独立した、現在登録されている製品／デバイスの占有数。通常の登録はオフライン中も解放されるまでカウントされます。フローティングセッションはリースが有効な間のみカウントされ、ハードウェアで重複排除し、利用できない場合はデバイス ID を使用します。解放または最後のフローティングセッションのリース期限切れにより枠が戻ります。有効な登録は枠月の境界を越えて継続します。隔離された SDK トライアル登録は除外されます。",
            "type": "integer"
          },
          "sandbox": {
            "description": "Sandbox 環境。",
            "type": "boolean"
          },
          "timezone": {
            "description": "使用量の集計タイムゾーン、UTC。",
            "type": "string"
          },
          "warning": {
            "description": "デフォルトのデバイス枠について normal、near_quota または quota_reached。",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "UsageDevice": {
        "additionalProperties": false,
        "properties": {
          "device_id": {
            "description": "製品単位のデバイスフィンガープリント。通常は SDK が導出する 64 文字の小文字 16 進数。",
            "type": "string"
          },
          "first_seen_at": {
            "description": "この UTC 月の最初のデバイス活動タイムスタンプ。",
            "format": "date-time",
            "type": "string"
          },
          "last_seen_at": {
            "description": "サーバーが観測した最後のデバイス活動タイムスタンプ（UTC）。",
            "format": "date-time",
            "type": "string"
          },
          "month": {
            "description": "UTC の月 YYYY-MM。クエリ値を省略すると現在の月を使用します。請求ジョブには締め済みの月が必要です。",
            "type": "string"
          },
          "product_id": {
            "description": "現在のワークスペースの製品 UUID。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "UsageDeviceList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/UsageDevice"
            },
            "type": "array"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "Verified": {
        "additionalProperties": false,
        "properties": {
          "verified": {
            "type": "boolean"
          }
        },
        "required": [
          "verified"
        ],
        "type": "object"
      },
      "VersionedActivationReleaseInput": {
        "additionalProperties": false,
        "properties": {
          "expected_generation": {
            "description": "現在のデバイス一覧に表示された紐付け世代。Launch アカウントの紐付けに必要です。古いバージョンで新しい紐付けが解放されることはありません。",
            "minimum": 1,
            "type": "integer"
          },
          "operation_id": {
            "description": "再試行による復旧用の安定した操作 UUID。Launch アカウントの紐付けに必要です。",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "WaffoCheck": {
        "additionalProperties": false,
        "properties": {
          "connected": {
            "description": "enabled",
            "type": "boolean"
          },
          "mode": {
            "description": "決済環境。Sandbox と live の記録は分離されています。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          }
        },
        "required": [
          "connected",
          "mode"
        ],
        "type": "object"
      },
      "WaffoOrder": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "固定されたサービス全体の価格（最小通貨単位）。ウォレットチャージや混合決済はありません。",
            "type": "integer"
          },
          "applied_at": {
            "anyOf": [
              {
                "description": "元のチェックアウト作成期間の UTC 期限。",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "検証済み支払いがサービスを有効化またはウォレットチャージを入金した UTC 時刻。purchase_id と upgrade_id が null の場合はチャージを示します。"
          },
          "checkout_expires_at": {
            "description": "元のチェックアウト作成期間の UTC 期限。",
            "format": "date-time",
            "type": "string"
          },
          "created_at": {
            "description": "元のチェックアウト作成期間の UTC 期限。",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "MER_ で始まる事業者識別子。",
            "type": "string"
          },
          "id": {
            "description": "ローカルのサービス決済識別子。",
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "description": "決済環境。Sandbox と live の記録は分離されています。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "paid_at": {
            "anyOf": [
              {
                "description": "元のチェックアウト作成期間の UTC 期限。",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "バックエンドが完了済み Waffo 取引を検証した UTC 時刻。"
          },
          "provider_order_id": {
            "anyOf": [
              {
                "description": "MER_ で始まる事業者識別子。",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "検証済み API レスポンスから復旧した元の ORD_ 識別子。"
          },
          "purchase_id": {
            "anyOf": [
              {
                "description": "ローカルのサービス決済識別子。",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "既存の保留中サービス購入または更新。upgrade_id と同時には指定できません。"
          },
          "refunded_cents": {
            "description": "固定されたサービス全体の価格（最小通貨単位）。ウォレットチャージや混合決済はありません。",
            "type": "integer"
          },
          "request_id": {
            "description": "MER_ で始まる事業者識別子。",
            "type": "string"
          },
          "status": {
            "description": "決済ライフサイクル。回収済み資金に運営者の審査と返金が必要な場合の paid_unapplied を含みます。",
            "enum": [
              "creating",
              "created",
              "completed",
              "paid_unapplied",
              "partially_refunded",
              "refunded"
            ],
            "type": "string"
          },
          "upgrade_id": {
            "anyOf": [
              {
                "description": "ローカルのサービス決済識別子。",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "既存の保留中アップグレード見積もり。purchase_id と同時には指定できません。"
          }
        },
        "required": [
          "id",
          "request_id",
          "mode",
          "provider_order_id",
          "purchase_id",
          "upgrade_id",
          "currency",
          "amount_cents",
          "refunded_cents",
          "status",
          "checkout_expires_at",
          "paid_at",
          "applied_at",
          "created_at"
        ],
        "type": "object"
      },
      "WaffoOrderInput": {
        "additionalProperties": false,
        "description": "固定された購入／アップグレード 1 件を支払うか、サービス ID を指定せず金額と通貨でウォレットチャージを作成します。安定した request_id は元の決済を返し、意図、金額、通貨の変更は拒否されます。独立して検証された完了済み支払いのみがウォレットに入金またはサービスを有効化します。チャージの戻り先はウォレットです。再試行では元のチェックアウト作成期間内に限り、元のプロバイダー冪等性キーを再利用します。",
        "oneOf": [
          {
            "not": {
              "anyOf": [
                {
                  "required": [
                    "amount"
                  ]
                },
                {
                  "required": [
                    "currency"
                  ]
                }
              ]
            },
            "properties": {
              "purchase_id": {
                "format": "uuid",
                "type": "string"
              },
              "upgrade_id": {
                "type": "null"
              }
            },
            "required": [
              "purchase_id"
            ]
          },
          {
            "not": {
              "anyOf": [
                {
                  "required": [
                    "amount"
                  ]
                },
                {
                  "required": [
                    "currency"
                  ]
                }
              ]
            },
            "properties": {
              "purchase_id": {
                "type": "null"
              },
              "upgrade_id": {
                "format": "uuid",
                "type": "string"
              }
            },
            "required": [
              "upgrade_id"
            ]
          },
          {
            "properties": {
              "purchase_id": {
                "type": "null"
              },
              "upgrade_id": {
                "type": "null"
              }
            },
            "required": [
              "amount",
              "currency"
            ]
          }
        ],
        "properties": {
          "amount": {
            "description": "ウォレットチャージにのみ必須。設定された範囲内の表示用小数金額。サービス注文はクライアントの金額を拒否します。",
            "pattern": "^\\d+(?:\\.\\d{1,2})?$",
            "type": "string"
          },
          "currency": {
            "description": "ウォレットチャージにのみ必須で、このプロバイダーで有効になっている必要があります。",
            "type": "string"
          },
          "overage_accepted": {
            "description": "表示された課金対象の超過に対する別個の明示的な許可。",
            "type": "boolean"
          },
          "policy_version": {
            "description": "現在公開されている変更不可のポリシーバージョン。運営者がポリシーを公開した後は、いずれの決済環境でも同意で保護された操作に必要です。",
            "type": "string"
          },
          "purchase_id": {
            "anyOf": [
              {
                "description": "ローカルのサービス決済識別子。",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "既存の保留中サービス購入または更新。upgrade_id と同時には指定できません。"
          },
          "request_id": {
            "description": "呼び出し元が生成する安定したリクエストキー。再実行では元のチェックアウトを返します。",
            "maxLength": 80,
            "type": "string"
          },
          "terms_accepted": {
            "description": "デフォルトで未チェックの明示的な同意。",
            "type": "boolean"
          },
          "upgrade_id": {
            "anyOf": [
              {
                "description": "ローカルのサービス決済識別子。",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "既存の保留中アップグレード見積もり。purchase_id と同時には指定できません。"
          }
        },
        "required": [
          "request_id"
        ],
        "type": "object"
      },
      "WaffoOrderList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "items",
            "items": {
              "$ref": "#/components/schemas/WaffoOrder"
            },
            "type": "array"
          },
          "total": {
            "description": "固定されたサービス全体の価格（最小通貨単位）。ウォレットチャージや混合決済はありません。",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "WaffoOrderResult": {
        "additionalProperties": false,
        "properties": {
          "approval_url": {
            "description": "短期間有効な認証済みチェックアウト URL。支払い、期限切れ、チャネル無効化後は空。ログに記録したりキャッシュしたりしてはいけません。",
            "type": "string"
          },
          "order": {
            "$ref": "#/components/schemas/WaffoOrder",
            "description": "order"
          },
          "return_url": {
            "description": "チャージの場合はウォレットダッシュボード URL、サービス決済の場合は価格照合 URL。戻り URL のみでは支払いを証明しません。",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "order",
          "approval_url",
          "return_url"
        ],
        "type": "object"
      },
      "WaffoSettings": {
        "additionalProperties": false,
        "properties": {
          "currencies": {
            "description": "currencies",
            "items": {
              "description": "MER_ で始まる事業者識別子。",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "description": "enabled",
            "type": "boolean"
          },
          "maximum_cents": {
            "description": "ウォレットの最大チャージ額（最小通貨単位）。デフォルトは 100000 で、minimum_cents 以上である必要があります。",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "merchant_id": {
            "description": "MER_ で始まる事業者識別子。",
            "type": "string"
          },
          "minimum_cents": {
            "description": "ウォレットの最低チャージ額（最小通貨単位）。デフォルトは 100。",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "description": "決済環境。Sandbox と live の記録は分離されています。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "private_key_configured": {
            "description": "enabled",
            "type": "boolean"
          },
          "product_id": {
            "description": "MER_ で始まる事業者識別子。",
            "type": "string"
          },
          "store_id": {
            "description": "MER_ で始まる事業者識別子。",
            "type": "string"
          },
          "version": {
            "description": "MER_ で始まる事業者識別子。",
            "type": "string"
          },
          "webhook_public_key": {
            "description": "MER_ で始まる事業者識別子。",
            "type": "string"
          },
          "webhook_url": {
            "description": "webhook url",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "mode",
          "merchant_id",
          "store_id",
          "product_id",
          "currencies",
          "private_key_configured",
          "webhook_public_key",
          "version",
          "webhook_url"
        ],
        "type": "object"
      },
      "WaffoSettingsInput": {
        "additionalProperties": false,
        "properties": {
          "clear_private_key": {
            "description": "enabled",
            "type": "boolean"
          },
          "currencies": {
            "description": "currencies",
            "items": {
              "description": "MER_ で始まる事業者識別子。",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "description": "enabled",
            "type": "boolean"
          },
          "expected_version": {
            "description": "MER_ で始まる事業者識別子。",
            "type": "string"
          },
          "maximum_cents": {
            "description": "ウォレットの最大チャージ額（最小通貨単位）。デフォルトは 100000 で、minimum_cents 以上である必要があります。",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "merchant_id": {
            "description": "MER_ で始まる事業者識別子。",
            "type": "string"
          },
          "minimum_cents": {
            "description": "ウォレットの最低チャージ額（最小通貨単位）。デフォルトは 100。",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "description": "決済環境。Sandbox と live の記録は分離されています。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "private_key": {
            "description": "RSA 署名秘密鍵。保存時に暗号化され、空欄は保存済みキーを保持します。",
            "maxLength": 8192,
            "type": "string",
            "writeOnly": true
          },
          "product_id": {
            "description": "MER_ で始まる事業者識別子。",
            "type": "string"
          },
          "store_id": {
            "description": "MER_ で始まる事業者識別子。",
            "type": "string"
          },
          "webhook_public_key": {
            "description": "任意の公式 Webhook 公開鍵の上書き。空の場合は選択環境の SDK キーを使用します。",
            "maxLength": 8192,
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "mode",
          "merchant_id",
          "store_id",
          "product_id",
          "currencies",
          "expected_version"
        ],
        "type": "object"
      },
      "WaffoWebhookEvent": {
        "description": "X-Waffo-Signature、選択環境の公開鍵、ストア、モードで認証された生の Waffo イベント。決済／返金は API を通じて独立して検証されます。",
        "type": "object"
      },
      "Wallet": {
        "additionalProperties": false,
        "properties": {
          "balance_cents": {
            "description": "ウォレット残高、または明細適用後の残高（100 分の 1 単位）。",
            "type": "integer"
          },
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "WalletEntry": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "金額（100 分の 1 単位）。台帳明細は正の入金または負の引き落としになります。",
            "type": "integer"
          },
          "balance_cents": {
            "description": "ウォレット残高、または明細適用後の残高（100 分の 1 単位）。",
            "type": "integer"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "USD など、3 文字の大文字通貨コード。",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "kind": {
            "description": "plan_upgrade は支払い済みアップグレードを記録します。paypal_refund_reserve は利用可能なウォレット資金を確保し、paypal_refund_release はその確保を解除し、paypal_refund は確定した現金返金を記録します。確保／解除の移動は現金支払いではなく、決済完了時に相殺されます。",
            "type": "string"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "reference": {
            "description": "追跡に使用する関連業務参照。",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "WalletEntryList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/WalletEntry"
            },
            "type": "array"
          },
          "limit": {
            "description": "ページサイズ。デフォルト 25、範囲 1–100。",
            "type": "integer"
          },
          "offset": {
            "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
            "type": "integer"
          },
          "total": {
            "description": "一致するレコードの総数。現在のページの長さではありません。",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "WalletRefundRequest": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "minimum": 1,
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "customer_email": {
            "description": "管理者一覧のみ。",
            "type": "string"
          },
          "decision": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "order_id": {
            "format": "uuid",
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "refund_id": {
            "format": "uuid",
            "type": [
              "string",
              "null"
            ]
          },
          "refund_status": {
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "review_status": {
            "enum": [
              "pending",
              "approved",
              "declined",
              "cancelled"
            ],
            "type": "string"
          },
          "reviewed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "enum": [
              "pending_review",
              "refund_pending",
              "refunded",
              "refund_failed",
              "declined",
              "cancelled"
            ],
            "type": "string"
          },
          "tenant_name": {
            "description": "管理者一覧のみ。",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "order_id",
          "mode",
          "currency",
          "amount_cents",
          "reason",
          "status",
          "review_status"
        ],
        "type": "object"
      },
      "WalletRefundRequestInput": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "description": "正の金額。未返金の注文額と現在の未使用ウォレット残高の両方を上限とします。",
            "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "reason": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "reason",
          "request_id",
          "mode"
        ],
        "type": "object"
      },
      "WalletRefundRequestList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/WalletRefundRequest"
            },
            "type": "array"
          },
          "limit": {
            "type": "integer"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "offset": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "mode"
        ],
        "type": "object"
      },
      "WalletRefundReview": {
        "additionalProperties": false,
        "properties": {
          "approve": {
            "type": "boolean"
          },
          "decision": {
            "maxLength": 1000,
            "minLength": 1,
            "type": "string"
          },
          "expected_updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "approve",
          "decision"
        ],
        "type": "object"
      },
      "WalletResult": {
        "additionalProperties": false,
        "properties": {
          "currencies": {
            "description": "この環境で許可される通貨コード。",
            "items": {
              "pattern": "^[A-Z]{3}$",
              "type": "string"
            },
            "type": "array"
          },
          "items": {
            "description": "返されたレコード。要素のフィールドは items[] を参照してください。一部の空のコレクションは null になる場合があります。型を参照してください。",
            "items": {
              "$ref": "#/components/schemas/Wallet"
            },
            "type": "array"
          },
          "maximum_cents": {
            "description": "有効なウォレットチャージチャネルの最大チャージ額（最小通貨単位）。",
            "type": "integer"
          },
          "minimum_cents": {
            "description": "有効なウォレットチャージチャネルの最低チャージ額（最小通貨単位）。",
            "type": "integer"
          },
          "mode": {
            "description": "ライセンス期間：perpetual、timed または trial。請求オブジェクトは sandbox または live 決済モードを使用します。",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "payment_channels": {
            "description": "利用可能な決済チャネル設定。有効な請求環境と購入通貨に一致する有効なチャネルのみを表示します。",
            "items": {
              "$ref": "#/components/schemas/PaymentChannel"
            },
            "type": "array"
          },
          "paypal_enabled": {
            "description": "この決済環境で PayPal が有効かどうか。",
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "WebhookAttempt": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "delivery_id": {
            "description": "この試行の配信タスク UUID。",
            "format": "uuid",
            "type": "string"
          },
          "duration_ms": {
            "description": "配信時間（ミリ秒）。",
            "type": "integer"
          },
          "error": {
            "description": "エラーオブジェクトまたは配信失敗の分類。子フィールドまたは現在の型を参照してください。",
            "type": "string"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "number": {
            "description": "累積試行連番。",
            "type": "integer"
          },
          "status_code": {
            "description": "この試行の HTTP ステータス。通信障害時は 0 のことがあります。",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "delivery_id",
          "number",
          "status_code",
          "error",
          "duration_ms",
          "created_at"
        ],
        "type": "object"
      },
      "WebhookDelivery": {
        "additionalProperties": false,
        "properties": {
          "attempts": {
            "description": "タスクの累積試行回数。",
            "type": "integer"
          },
          "available_at": {
            "description": "タスクを実行できる最も早い UTC 時刻。",
            "format": "date-time",
            "type": "string"
          },
          "created_at": {
            "description": "作成時刻（UTC）。オフラインリクエストは Unix 秒を使用します。",
            "format": "date-time",
            "type": "string"
          },
          "delivered_at": {
            "anyOf": [
              {
                "description": "配信成功タイムスタンプ、または null。",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "配信成功タイムスタンプ、または null。",
                "type": "null"
              }
            ],
            "description": "配信成功タイムスタンプ、または null。"
          },
          "endpoint_id": {
            "description": "Webhook エンドポイント UUID。",
            "format": "uuid",
            "type": "string"
          },
          "event_id": {
            "description": "元のイベント UUID。受信側の重複排除に使用します。",
            "format": "uuid",
            "type": "string"
          },
          "id": {
            "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
            "format": "uuid",
            "type": "string"
          },
          "last_error": {
            "description": "直近の失敗カテゴリ。空の場合があります。",
            "type": "string"
          },
          "last_status": {
            "description": "直近の HTTP レスポンスステータス。応答が届かなかった場合は 0 のことがあります。",
            "type": "integer"
          },
          "status": {
            "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
            "type": "string"
          }
        },
        "required": [
          "id",
          "endpoint_id",
          "event_id",
          "status",
          "attempts",
          "available_at",
          "last_status",
          "last_error",
          "delivered_at",
          "created_at"
        ],
        "type": "object"
      },
      "WebhookEvent": {
        "description": "PayPal API で検証された正確な署名付き PayPal イベント",
        "type": "object"
      },
      "WebhookReceived": {
        "additionalProperties": false,
        "properties": {
          "ignored": {
            "type": "boolean"
          },
          "received": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      }
    },
    "securitySchemes": {
      "closureExport": {
        "description": "制限された 15 分間のダウンロード認証情報であり、ダッシュボードセッションではありません。本番環境では __Host-licentivo_closure_export を使用し、常に元の閉鎖期限を上限とします。",
        "in": "cookie",
        "name": "licentivo_closure_export",
        "type": "apiKey"
      },
      "customerSession": {
        "description": "本番環境では __Host-licenova_customer を使用。購入者 ID はベンダーセッションから独立しています。",
        "in": "cookie",
        "name": "licenova_customer",
        "type": "apiKey"
      },
      "managementKey": {
        "bearerFormat": "lv_api_...",
        "scheme": "bearer",
        "type": "http"
      },
      "session": {
        "description": "本番環境では __Host-licenova_session を使用",
        "in": "cookie",
        "name": "licenova_session",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "description": "Licentivo の管理およびライセンス API。署名付きランタイム許可、デバイス固定およびフローティングライセンス、現在のアクティベーションデバイス枠、月間 API 使用量、従量制ソフトウェア機能、Launch アカウントセッション、前払いパッケージ、ギフト、ウォレット自動更新、全対象期間のアップグレードに対応します。PayPal、Paddle、Waffo は検証済み決済と元の決済経路への返金に対応します。顧客ポリシー、承認された範囲のキャンセル、サポート、補償、データエクスポート、論理的なアカウント閉鎖を含みます。決済環境と通貨は分離され、非公開の認証情報は暗号化され、返されることはありません。",
    "title": "Licentivo API",
    "version": "0.12.0",
    "x-document-language": "ja"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/v1/account/closure-export.zip": {
      "get": {
        "description": "各リクエスト時および生成後に、認証情報と元の閉鎖期限の両方を再確認します。バックアップを復元しても期間は再開しません。",
        "operationId": "get__api_v1_account_closure_export_zip",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/zip": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "closureExport": []
          }
        ],
        "summary": "閉鎖から 30 日間の期間内にダウンロード"
      }
    },
    "/api/v1/account/closure-export/session": {
      "post": {
        "description": "確認済みの元のメールアドレス／パスワードと、確認からちょうど 30 日以内の確定済み閉鎖が必要です。15 分間の Cookie は元の期限を超えず、レート制限があり、通常の API／ダッシュボードアクセスを認可できません。",
        "operationId": "post__api_v1_account_closure_export_session",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClosureExportLogin"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ClosureExportCredential"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [],
        "summary": "制限付きエクスポートのために閉鎖済みアカウントを検証"
      }
    },
    "/api/v1/account/data-export": {
      "get": {
        "description": "Owner のダウンロードにはワークスペースの業務 CSV が含まれます。メンバーの個人アーカイブには本人のプロフィール、投稿、リクエストが含まれます。認証情報の秘密／ハッシュと署名秘密鍵は除外されます。",
        "operationId": "get__api_v1_account_data_export",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/zip": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "自分の個人データと認可されたデータをダウンロード",
        "x-required-role": "session"
      }
    },
    "/api/v1/account/deletions": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_account_deletions",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AccountClosureList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "自分の論理的閉鎖リクエストを取得",
        "x-required-role": "session"
      },
      "post": {
        "description": "Owner の閉鎖ではワークスペースを選択する必要があります。メンバーは自分のアカウントのみ閉鎖できます。確認するとセッション／API キーが失効しますが、データは保持されます。エクスポートは確認後 30 日間可能です。",
        "operationId": "post__api_v1_account_deletions",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountClosureInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AccountClosure"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "アカウントまたはワークスペースの論理的閉鎖を要求",
        "x-required-role": "session"
      }
    },
    "/api/v1/account/deletions/{id}/cancel": {
      "post": {
        "description": "",
        "operationId": "post__api_v1_account_deletions__id__cancel",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "未確認の閉鎖を撤回",
        "x-required-role": "session"
      }
    },
    "/api/v1/account/legal-acceptances": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_account_legal_acceptances",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LegalAcceptanceList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "自分の法的同意レシートを取得",
        "x-required-role": "session"
      }
    },
    "/api/v1/account/profile": {
      "patch": {
        "description": "現在のパスワードが必要です。新しいログインメールには 30 分間有効な使い捨ての確認リンクが送られます。確認が完了するまで、現在の確認済みログインメールとアクセスは変更されません。",
        "operationId": "patch__api_v1_account_profile",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountCorrection"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "自分の名前を訂正またはログインメールの変更を要求",
        "x-required-role": "session"
      }
    },
    "/api/v1/activate": {
      "post": {
        "description": "product_id + license_key + device_id で認証します。Cookie／CSRF／ベンダーキーは不要です。activate を除き activation_id が必要です。成功した各リクエストは API 呼び出しを 1 回消費し、冪等な再実行と失敗は消費しません。超過分はウォレットからアトミックに引き落とされるか、API_QUOTA_EXCEEDED/API_BALANCE_INSUFFICIENT を返します。ワークスペースのデバイス枠は現在のアクティベーションに従います。解放すると枠が戻り、フローティングリースの期限切れでも枠が戻りますが、オフラインの通常登録は引き続きカウントされます。デバイス超過料金は枠の月の請求ピークが支払い済み容量を超えて増加した場合にのみ請求され、解放しても発生済み料金は返金されません。API 使用量は別です。",
        "operationId": "post_api_v1_activate",
        "parameters": [
          {
            "description": "操作ごとに新しいキーを生成し、再試行では同じキーと本文を使用します。最大 80 文字、空白不可。検証とハートビートでは任意です。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RuntimeResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "ランタイムのアクティベーション"
      }
    },
    "/api/v1/activations": {
      "get": {
        "operationId": "get_api_v1_activations",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "license_id",
            "schema": {
              "description": "ライセンス UUID。lv_lic_ シークレットとは異なります。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "product_id",
            "schema": {
              "description": "現在のワークスペースの製品 UUID。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
              "enum": [
                "active",
                "released"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "description": "検索テキスト。対象フィールドと最大長は操作によって異なります。",
              "maxLength": 120,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "created_at": "2026-10-18T00:00:00Z",
                        "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                        "device_name": "Office PC",
                        "generation": 1,
                        "id": "44444444-4444-4444-8444-444444444444",
                        "last_seen_at": "2026-10-18T00:00:00Z",
                        "license_id": "33333333-3333-4333-8333-333333333333",
                        "product_id": "11111111-1111-4111-8111-111111111111",
                        "released_at": null,
                        "status": "active",
                        "virtual_machine": false
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ActivationList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "アクティベーション一覧",
        "x-management-reference": {
          "group": "devices"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/activations/{id}/release": {
      "post": {
        "operationId": "post_api_v1_activations_by_id_release",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "expected_generation": 1,
                "operation_id": "11111111-1111-4111-8111-111111111111"
              },
              "schema": {
                "$ref": "#/components/schemas/VersionedActivationReleaseInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "status": "released"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StateResult",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "アクティベーションを解放",
        "x-management-reference": {
          "group": "devices"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/api-keys": {
      "get": {
        "operationId": "get_api_v1_api-keys",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "allow_http": false,
                        "created_at": "2026-10-18T00:00:00Z",
                        "expires_at": "2026-10-18T00:00:00Z",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "name": "Report app",
                        "prefix": "lv_api_AAAAAAA",
                        "revoked": false,
                        "scope": "read"
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "API キー一覧",
        "x-management-reference": {
          "group": "keys"
        },
        "x-required-role": "owner",
        "x-required-scope": "owner_session"
      },
      "post": {
        "operationId": "post_api_v1_api-keys",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "description": "Cookie 認証の書き込みに必要です。GET /api/v1/auth/csrf から data.csrf_token を取得し、Cookie を保持してください。",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "allow_http": false,
                "expires_days": 90,
                "name": "Order system",
                "scope": "write"
              },
              "schema": {
                "$ref": "#/components/schemas/KeyCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "expires_at": "2027-01-16T00:00:00Z",
                    "id": "33333333-3333-4333-8333-333333333333",
                    "key": "lv_api_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                    "prefix": "lv_api_AAAAAAA"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeySecret",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "API キーを作成",
        "x-management-reference": {
          "group": "keys"
        },
        "x-required-role": "owner",
        "x-required-scope": "owner_session"
      }
    },
    "/api/v1/api-keys/{id}": {
      "delete": {
        "operationId": "delete_api_v1_api-keys_by_id",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "description": "Cookie 認証の書き込みに必要です。GET /api/v1/auth/csrf から data.csrf_token を取得し、Cookie を保持してください。",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "API キーを失効",
        "x-management-reference": {
          "group": "keys"
        },
        "x-required-role": "owner",
        "x-required-scope": "owner_session"
      },
      "patch": {
        "description": "Owner セッションと CSRF トークンが必要です。この有効なキーのみを更新し、ローテーション時も設定は保持されます。既存の Launch 接続やランタイム許可は変更されません。この設定は Licentivo API の HTTP を有効にしません。",
        "operationId": "patch_api_v1_api-keys_by_id",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "description": "Cookie 認証の書き込みに必要です。GET /api/v1/auth/csrf から data.csrf_token を取得し、Cookie を保持してください。",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "allow_http": true
              },
              "schema": {
                "$ref": "#/components/schemas/KeyUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "allow_http": false,
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyUpdated",
                      "description": "Response data for the completed operation."
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "サイトへの HTTP アクセスを更新",
        "x-management-reference": {
          "group": "keys"
        },
        "x-required-role": "owner",
        "x-required-scope": "owner_session"
      }
    },
    "/api/v1/api-keys/{id}/rotate": {
      "post": {
        "operationId": "post_api_v1_api-keys_by_id_rotate",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "description": "Cookie 認証の書き込みに必要です。GET /api/v1/auth/csrf から data.csrf_token を取得し、Cookie を保持してください。",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "key": "lv_api_BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
                    "prefix": "lv_api_BBBBBBB"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyRotated",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "API キーをローテーション",
        "x-management-reference": {
          "group": "keys"
        },
        "x-required-role": "owner",
        "x-required-scope": "owner_session"
      }
    },
    "/api/v1/audit-logs": {
      "get": {
        "operationId": "get_api_v1_audit-logs",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "action": "license.create",
                        "actor_id": "33333333-3333-4333-8333-333333333333",
                        "actor_kind": "api_key",
                        "created_at": "2026-10-18T00:00:00Z",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "request_id": "55555555-5555-4555-8555-555555555555",
                        "resource_id": ""
                      }
                    ],
                    "limit": 25,
                    "offset": 0
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AuditList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "監査ログ一覧",
        "x-management-reference": {
          "group": "usage"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/auth/accept-invitation": {
      "post": {
        "operationId": "post_api_v1_auth_accept-invitation",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenPassword"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PasswordSet"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "accept-invitation"
      }
    },
    "/api/v1/auth/change-password": {
      "post": {
        "operationId": "post_api_v1_auth_change-password",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePassword"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PasswordSet"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "アカウントのすべての認証情報を取り消してパスワードを設定"
      }
    },
    "/api/v1/auth/confirm-email-change": {
      "post": {
        "description": "暗号化された使い捨てチャレンジを検証します。確認が成功した場合にのみログインメールを変更して確認済みにし、既存のセッション、API キー、認証リンクを失効させます。期限切れ、置き換え済み、またはパスワード変更により無効になったチャレンジではアカウントを変更できません。",
        "operationId": "post__api_v1_auth_confirm_email_change",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailChangeConfirmation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [],
        "summary": "新しいログインメールを確認"
      }
    },
    "/api/v1/auth/csrf": {
      "get": {
        "operationId": "get_api_v1_auth_csrf",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CSRF"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "セッションに紐付いた CSRF トークンを発行"
      }
    },
    "/api/v1/auth/forgot-password": {
      "post": {
        "operationId": "post_api_v1_auth_forgot-password",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Email"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Notice"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "forgot-password"
      }
    },
    "/api/v1/auth/login": {
      "post": {
        "operationId": "post_api_v1_auth_login",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Login"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CSRF"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "login"
      }
    },
    "/api/v1/auth/logout": {
      "post": {
        "operationId": "post_api_v1_auth_logout",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LoggedOut"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "現在のセッションを取り消す"
      }
    },
    "/api/v1/auth/me": {
      "get": {
        "operationId": "get_api_v1_auth_me",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Me"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "現在の Cookie アカウント"
      }
    },
    "/api/v1/auth/register": {
      "post": {
        "description": "公開済みの利用規約には、いずれの決済環境でも policy_version と明示的な同意が必要です。課金対象のサービス超過にはさらに overage_accepted が必要です。ポリシーの初回公開前はドラフトへの同意は記録されず、各操作は通常の登録、価格、決済チェックに従います。",
        "operationId": "post_api_v1_auth_register",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Register"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Notice"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "register"
      }
    },
    "/api/v1/auth/resend-verification": {
      "post": {
        "operationId": "post_api_v1_auth_resend-verification",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Email"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Notice"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "resend-verification"
      }
    },
    "/api/v1/auth/reset-password": {
      "post": {
        "operationId": "post_api_v1_auth_reset-password",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenPassword"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PasswordSet"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "reset-password"
      }
    },
    "/api/v1/auth/verify-email": {
      "post": {
        "operationId": "post_api_v1_auth_verify-email",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Token"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Verified"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "verify-email"
      }
    },
    "/api/v1/billing/auto-renewal": {
      "get": {
        "description": "セッションのみ。PATCH にはワークスペースの Owner が必要です。デフォルトは無効です。有効化には現在のモードと通貨の残高が 1 回分の更新に十分あること、および確認済みの最新の支払い済みプラン、提供期間、価格バージョンが必要です。期限時の引き落としはウォレット資金のみで、PayPal やカードからは行いません。1 分ごとのワーカーとランタイム変更がテナントロックの下で期限到来の更新を処理します。繰り返し試行しても請求は 1 回です。残高不足の場合はチャージを待ち、価格、プラン、提供状況の変更時は新たな同意を得るまで請求を停止します。無効化すると今後の自動請求がキャンセルされますが、支払い済みのサービス期間はキャンセルされません。",
        "operationId": "get_api_v1_billing_auto_renewal",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "next_renewal_at": null,
                    "setting": {
                      "amount_cents": 0,
                      "currency": "USD",
                      "enabled": true,
                      "mode": "sandbox",
                      "plan": "starter",
                      "plan_name": "Starter",
                      "policy_version": "",
                      "price_version": "example-v1",
                      "status": "disabled",
                      "term_months": 1,
                      "updated_at": "2026-10-18T00:00:00Z",
                      "version": ""
                    }
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AutoRenewalResult",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "DEFAULT_PLAN_DISABLED",
                    "message": "The default allowance plan has not been enabled by the administrator"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "自動更新設定を取得",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "description": "セッションのみ。PATCH にはワークスペースの Owner が必要です。デフォルトは無効です。有効化には現在のモードと通貨の残高が 1 回分の更新に十分あること、および確認済みの最新の支払い済みプラン、提供期間、価格バージョンが必要です。期限時の引き落としはウォレット資金のみで、PayPal やカードからは行いません。1 分ごとのワーカーとランタイム変更がテナントロックの下で期限到来の更新を処理します。繰り返し試行しても請求は 1 回です。残高不足の場合はチャージを待ち、価格、プラン、提供状況の変更時は新たな同意を得るまで請求を停止します。無効化すると今後の自動請求がキャンセルされますが、支払い済みのサービス期間はキャンセルされません。 公開済みの利用規約には、いずれの決済環境でも policy_version と明示的な同意が必要です。課金対象のサービス超過にはさらに overage_accepted が必要です。ポリシーの初回公開前はドラフトへの同意は記録されず、各操作は通常の登録、価格、決済チェックに従います。",
        "operationId": "patch_api_v1_billing_auto_renewal",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoRenewalInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AutoRenewal"
                    },
                    "request_id": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "明示的に同意されたウォレット更新を有効／無効にする"
      }
    },
    "/api/v1/billing/invoices": {
      "get": {
        "operationId": "get_api_v1_billing_invoices",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "month",
            "schema": {
              "description": "UTC の月 YYYY-MM。クエリ値を省略すると現在の月を使用します。請求ジョブには締め済みの月が必要です。",
              "pattern": "^[0-9]{4}-[0-9]{2}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "active_devices": 0,
                        "base_covered": false,
                        "base_micros": 0,
                        "created_at": "2026-10-18T00:00:00Z",
                        "currency": "USD",
                        "finalized_at": null,
                        "id": "33333333-3333-4333-8333-333333333333",
                        "included_devices": 0,
                        "month": "2026-09",
                        "overage_devices": 0,
                        "paid_at": null,
                        "payment_mode": "sandbox",
                        "plan": "starter",
                        "plan_name": "Starter",
                        "price_version": "example-v1",
                        "refunded_at": null,
                        "status": "draft",
                        "total_cents": 0,
                        "total_micros": 0,
                        "unit_micros": 0,
                        "voided_at": null
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/InvoiceList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "請求書一覧",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/billing/invoices/{id}": {
      "get": {
        "operationId": "get_api_v1_billing_invoices_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "active_devices": 0,
                    "base_covered": false,
                    "base_micros": 0,
                    "created_at": "2026-10-18T00:00:00Z",
                    "currency": "USD",
                    "finalized_at": null,
                    "id": "33333333-3333-4333-8333-333333333333",
                    "included_devices": 0,
                    "month": "2026-09",
                    "overage_devices": 0,
                    "paid_at": null,
                    "payment_mode": "sandbox",
                    "plan": "starter",
                    "plan_name": "Starter",
                    "price_version": "example-v1",
                    "refunded_at": null,
                    "status": "draft",
                    "total_cents": 0,
                    "total_micros": 0,
                    "unit_micros": 0,
                    "voided_at": null
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Invoice",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "請求書を取得",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/billing/invoices/{id}/export.csv": {
      "get": {
        "operationId": "get_api_v1_billing_invoices_by_id_export_csv",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "example": "invoice_id,month,currency,status,plan,price_version,active_devices,included_devices,overage_devices,base_micros,unit_micros,total_micros,total_cents\n",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "請求書をエクスポート",
        "x-csv-columns": [
          "invoice_id",
          "month",
          "currency",
          "status",
          "plan",
          "price_version",
          "active_devices",
          "included_devices",
          "overage_devices",
          "base_micros",
          "unit_micros",
          "total_micros",
          "total_cents"
        ],
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/billing/invoices/{id}/finalize": {
      "post": {
        "operationId": "post_api_v1_billing_invoices_by_id_finalize",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "status": "finalized"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StateResult",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "請求書を確定",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/billing/invoices/{id}/pay": {
      "post": {
        "description": "新規支払いの前に現在のポリシーへの明示的な同意が必要です。支払い済みの再実行では元のレシートが保持されます。",
        "operationId": "post_api_v1_billing_invoices_by_id_pay",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LegalConsent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Invoice"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "確定済みの過去の請求書を残高から支払う",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/invoices/{id}/void": {
      "post": {
        "operationId": "post_api_v1_billing_invoices_by_id_void",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "status": "void"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StateResult",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "請求書を無効化",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/billing/jobs": {
      "get": {
        "operationId": "get_api_v1_billing_jobs",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "attempts": 0,
                        "available_at": "2026-10-18T00:00:00Z",
                        "created_at": "2026-10-18T00:00:00Z",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "last_error": "",
                        "month": "2026-09",
                        "status": "pending"
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingJobList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "請求ジョブ一覧",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      },
      "post": {
        "operationId": "post_api_v1_billing_jobs",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "month": "2026-09"
              },
              "schema": {
                "$ref": "#/components/schemas/MonthInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "attempts": 0,
                    "available_at": "2026-10-18T00:00:00Z",
                    "created_at": "2026-10-18T00:00:00Z",
                    "id": "33333333-3333-4333-8333-333333333333",
                    "last_error": "",
                    "month": "2026-09",
                    "status": "pending"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingJob",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "請求ジョブをキューに追加",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/billing/jobs/{id}/retry": {
      "post": {
        "operationId": "post_api_v1_billing_jobs_by_id_retry",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "status": "pending"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StateResult",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "請求ジョブを再試行",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/billing/notification-preferences": {
      "get": {
        "description": "Owner セッションのみ。管理キーは拒否されます。明示的に保存されるまでは 4 種類すべてが有効で、言語は zh がデフォルトです。設定はこのユーザーとワークスペースに属します。認証メールの転送、送信者、暗号化された永続キュー、再試行を再利用します。各種類はプラットフォームの許可と受信者の同意の両方が必要です。配信時に現在の同意とイベント状態を再確認します。メールの選択はウォレットの引き落としへの同意を付与または撤回しません。Sandbox メッセージにはラベルが付きます。未払いの保留中の購入やギフトについて通知は作成されません。",
        "operationId": "get__api_v1_billing_notification_preferences",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingNotificationPreferencesResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "現在の Owner のメール同意を取得",
        "x-required-role": "owner"
      },
      "patch": {
        "description": "セッションの Owner に対する部分更新であり、別のユーザーを対象にできません。ロケールは今後のメッセージに適用されます。既存の確認メールとセキュリティメールは引き続き独立しています。認証メールの転送、送信者、暗号化された永続キュー、再試行を再利用します。各種類はプラットフォームの許可と受信者の同意の両方が必要です。配信時に現在の同意とイベント状態を再確認します。メールの選択はウォレットの引き落としへの同意を付与または撤回しません。Sandbox メッセージにはラベルが付きます。未払いの保留中の購入やギフトについて通知は作成されません。",
        "operationId": "patch__api_v1_billing_notification_preferences",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingNotificationPreferenceInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingNotificationPreference"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "現在の Owner のメール同意を保存",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/overage-consent": {
      "post": {
        "description": "",
        "operationId": "post__api_v1_billing_overage_consent",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerOverageConsent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "現在のウォレット超過を明示的に許可",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/overage-settings": {
      "get": {
        "description": "現在のテナントのみ。読み取り専用メンバーも閲覧できます。無制限の API 枠は顧客の超過設定によって制限されません。null のプランはデフォルト枠が利用できないことを意味します。",
        "operationId": "get__api_v1_billing_overage_settings",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "customer_api_settings_enabled": false,
                    "customer_device_settings_enabled": false,
                    "plan": null,
                    "preference": {
                      "block_api_overage": false,
                      "block_device_overage": false,
                      "mode": "sandbox",
                      "updated_at": "2026-10-18T00:00:00Z",
                      "version": ""
                    }
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OverageSettings",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "DEFAULT_PLAN_DISABLED",
                    "message": "The default allowance plan has not been enabled by the administrator"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "超過設定を取得",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "description": "セッションの Owner のみ。指定された各選択には対応する管理者権限が必要です。権限のないフィールドがあるとリクエスト全体が 403 で拒否されます。ランタイムの厳格な上限 = 管理者の上限 OR 権限が有効な場合の顧客のブロック設定。過去の使用量や請求は消去されません。Sandbox と live の設定は独立しています。",
        "operationId": "patch__api_v1_billing_overage_settings",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OverageSettingsInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OveragePreference"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "デバイスと API の独立した超過設定を保存"
      }
    },
    "/api/v1/billing/paddle/orders": {
      "get": {
        "operationId": "get__api_v1_billing_paddle_orders",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleOrderList"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Paddle サービス決済とウォレットチャージ一覧",
        "x-licentivo-access": "session"
      },
      "post": {
        "operationId": "post__api_v1_billing_paddle_orders",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaddleOrderInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleOrderResult"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Paddle サービス決済を 1 件作成または復旧",
        "x-licentivo-access": "owner"
      }
    },
    "/api/v1/billing/paddle/orders/{id}": {
      "get": {
        "operationId": "get__api_v1_billing_paddle_orders__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "ローカルのサービス決済識別子。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleOrderResult"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "所有するチェックアウト取引と公開クライアントトークンを取得",
        "x-licentivo-access": "session"
      }
    },
    "/api/v1/billing/paddle/orders/{id}/reconcile": {
      "post": {
        "operationId": "post__api_v1_billing_paddle_orders__id__reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "ローカルのサービス決済識別子。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaddleReconcileInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleOrderResult"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "支払いを検証し購入済みサービスを一度だけ提供",
        "x-licentivo-access": "owner"
      }
    },
    "/api/v1/billing/paypal/orders": {
      "get": {
        "operationId": "get_api_v1_billing_paypal_orders",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "amount_cents": 0,
                        "approval_url": "",
                        "capture_id": null,
                        "created_at": "2026-10-18T00:00:00Z",
                        "credited_at": null,
                        "currency": "USD",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "mode": "sandbox",
                        "paypal_order_id": null,
                        "purchase_id": null,
                        "refunded_cents": 0,
                        "request_id": "55555555-5555-4555-8555-555555555555",
                        "status": "creating",
                        "upgrade_id": null
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalOrderList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "チャージ注文一覧",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      },
      "post": {
        "description": "公開済みの利用規約には、いずれの決済環境でも policy_version と明示的な同意が必要です。課金対象のサービス超過にはさらに overage_accepted が必要です。ポリシーの初回公開前はドラフトへの同意は記録されず、各操作は通常の登録、価格、決済チェックに従います。",
        "operationId": "post_api_v1_billing_paypal_orders",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RechargeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalOrder"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "冪等なチャージを作成／復旧",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/paypal/orders/{id}/capture": {
      "post": {
        "operationId": "post_api_v1_billing_paypal_orders_by_id_capture",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalOrder"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "事業者に紐付いた資金を一度だけ確定",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/paypal/orders/{id}/reconcile": {
      "post": {
        "operationId": "post_api_v1_billing_paypal_orders_by_id_reconcile",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalOrder"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "事業者に紐付いた資金を一度だけ確定",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/paypal/orders/{id}/refund-requests": {
      "post": {
        "description": "Cookie セッションのみ。管理 API キーは受け付けません。顧客の読み取りは自分のワークスペースに限定されます。顧客の書き込みにはプラットフォーム管理者権限を持たない認証済みワークスペース Owner が必要です。申請によって資金の移動や確保は行われません。管理者による承認時に現在のウォレットと未返金の確定済み金額を再確認し、既存の冪等な元の決済経路への返金と資金確保のフローを使用します。承認してもプランはキャンセルされません。",
        "operationId": "post__api_v1_billing_paypal_orders__id__refund_requests",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WalletRefundRequestInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletRefundRequest"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "未使用のチャージ残高の返金を申請",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/plans": {
      "get": {
        "operationId": "get_api_v1_billing_plans",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "管理者が管理する公開価格カタログ"
      }
    },
    "/api/v1/billing/purchases": {
      "get": {
        "operationId": "get_api_v1_billing_purchases",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "active": null,
                    "active_devices": 0,
                    "coverage_ends_at": null,
                    "items": [
                      {
                        "api_calls": 0,
                        "api_hard_limit": false,
                        "api_overage_cents": 0,
                        "api_unit_micros": 0,
                        "base_cents": 0,
                        "cancelled_at": null,
                        "created_at": "2026-10-18T00:00:00Z",
                        "currency": "USD",
                        "current_cycle_index": 0,
                        "current_upgrade_id": "",
                        "cycle_ends_at": "2026-10-18T00:00:00Z",
                        "cycle_starts_at": "2026-10-18T00:00:00Z",
                        "effective_included_devices": 0,
                        "effective_plan": "",
                        "effective_plan_name": "",
                        "ends_at": null,
                        "entitlement_cents": 0,
                        "gift_batch_id": "",
                        "gift_follows_current": false,
                        "hard_limit": false,
                        "id": "33333333-3333-4333-8333-333333333333",
                        "included_api_calls": null,
                        "included_devices": 0,
                        "mode": "sandbox",
                        "overage_cents": 0,
                        "plan": "starter",
                        "plan_name": "Starter",
                        "price_version": "example-v1",
                        "refunded_cents": 0,
                        "renewal": false,
                        "renewal_of": "",
                        "request_id": "55555555-5555-4555-8555-555555555555",
                        "service_credit_basis_cents": 0,
                        "service_credit_basis_seconds": 0,
                        "source": "purchase",
                        "starts_at": null,
                        "status": "pending",
                        "term_months": 1,
                        "total_api_calls": 0,
                        "total_api_overage_cents": 0,
                        "total_device_overage_cents": 0,
                        "unit_micros": 0
                      }
                    ],
                    "mode": "sandbox",
                    "renewal_package": null,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PurchaseList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "パッケージ購入一覧",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      },
      "post": {
        "description": "選択したプラン、通貨、価格リビジョン、期間で購入を作成します。ウォレットでの即時決済を試み、残高不足の場合はサービス期間を開始せず pending を返します。有効なパッケージを延長するには renewal=true を設定します。支払い成功後、既存のサービス期間の後にサービスが予約されます。GET /billing/purchases は coverage_ends_at を返します。現在の枠使用量とソフトウェアライセンスの期限は変わりません。再試行では request_id を再利用し、二重請求されません。公開済みの利用規約には、いずれの決済環境でも policy_version と明示的な同意が必要です。課金対象のサービス超過にはさらに overage_accepted が必要です。ポリシーの初回公開前はドラフトへの同意は記録されず、各操作は通常の登録、価格、決済チェックに従います。",
        "operationId": "post_api_v1_billing_purchases",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuyPlan"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanPurchase"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "パッケージを購入または更新を前払い",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/refund-requests": {
      "get": {
        "description": "Cookie セッションのみ。管理 API キーは受け付けません。顧客の読み取りは自分のワークスペースに限定されます。顧客の書き込みにはプラットフォーム管理者権限を持たない認証済みワークスペース Owner が必要です。申請によって資金の移動や確保は行われません。管理者による承認時に現在のウォレットと未返金の確定済み金額を再確認し、既存の冪等な元の決済経路への返金と資金確保のフローを使用します。承認してもプランはキャンセルされません。",
        "operationId": "get__api_v1_billing_refund_requests",
        "parameters": [
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletRefundRequestList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "自分のワークスペースの返金申請一覧"
      }
    },
    "/api/v1/billing/refund-requests/{id}/cancel": {
      "post": {
        "description": "Cookie セッションのみ。管理 API キーは受け付けません。顧客の読み取りは自分のワークスペースに限定されます。顧客の書き込みにはプラットフォーム管理者権限を持たない認証済みワークスペース Owner が必要です。申請によって資金の移動や確保は行われません。管理者による承認時に現在のウォレットと未返金の確定済み金額を再確認し、既存の冪等な元の決済経路への返金と資金確保のフローを使用します。承認してもプランはキャンセルされません。",
        "operationId": "post__api_v1_billing_refund_requests__id__cancel",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletRefundRequest"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "自分の保留中の返金申請を撤回",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/renewal-plans": {
      "get": {
        "description": "完了済み購入および適用済みアップグレードの所有権のみ。有効な公開オファーと、既存顧客向けの非公開の更新専用オファーを返します。保留中の見積もりでは所有権は成立しません。POST /billing/purchases を使用して事前または期限切れ後に更新します。",
        "operationId": "get__api_v1_billing_renewal_plans",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "api_hard_limit": false,
                        "api_unit_micros": 0,
                        "base_micros": 0,
                        "currency": "USD",
                        "description": "Desktop reporting software",
                        "enabled": true,
                        "hard_limit": false,
                        "included_api_calls": null,
                        "included_devices": 0,
                        "name": "Report app",
                        "plan": "starter",
                        "price_version": "example-v1",
                        "public": false,
                        "renewal_only": false,
                        "sort_order": 0,
                        "terms": [],
                        "unit_micros": 0,
                        "updated_at": "2026-10-18T00:00:00Z"
                      }
                    ],
                    "mode": "sandbox"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RenewalPlans",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "DEFAULT_PLAN_DISABLED",
                    "message": "The default allowance plan has not been enabled by the administrator"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "更新オファー一覧",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/billing/subscription": {
      "get": {
        "operationId": "get_api_v1_billing_subscription",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "current": {
                      "base_covered": false,
                      "base_micros": 0,
                      "created_at": "2026-10-18T00:00:00Z",
                      "currency": "USD",
                      "hard_limit": false,
                      "included_devices": 0,
                      "month": "2026-09",
                      "payment_mode": "sandbox",
                      "plan": "starter",
                      "plan_name": "Starter",
                      "price_version": "example-v1",
                      "unit_micros": 0
                    },
                    "next": null,
                    "sandbox": false
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Subscription",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "503": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "DEFAULT_PLAN_DISABLED",
                    "message": "The default allowance plan has not been enabled by the administrator"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "デフォルト枠は無効です（DEFAULT_PLAN_DISABLED）"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "月額サブスクリプションを取得",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "operationId": "patch_api_v1_billing_subscription",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "currency": "USD",
                "plan": "starter",
                "price_version": "example-v1"
              },
              "schema": {
                "$ref": "#/components/schemas/PlanChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "currency": "USD",
                    "effective_month": "2026-11",
                    "plan": "starter",
                    "sandbox": false
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ScheduledPlan",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "月額プランを予約",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/billing/upgrades": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_billing_upgrades",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "amount_cents": 0,
                        "api_hard_limit": false,
                        "api_unit_micros": 0,
                        "applied_at": null,
                        "base_cents": 0,
                        "created_at": "2026-10-18T00:00:00Z",
                        "currency": "USD",
                        "cycle_seconds": 0,
                        "ends_at": "2026-10-18T00:00:00Z",
                        "expires_at": "2026-10-18T00:00:00Z",
                        "hard_limit": false,
                        "id": "33333333-3333-4333-8333-333333333333",
                        "included_api_calls": null,
                        "included_devices": 0,
                        "mode": "sandbox",
                        "parent_id": "33333333-3333-4333-8333-333333333333",
                        "parts": [],
                        "plan": "starter",
                        "plan_name": "Starter",
                        "previous_base_cents": 0,
                        "previous_plan_name": "",
                        "previous_upgrade_id": "",
                        "price_version": "example-v1",
                        "purchase_id": "33333333-3333-4333-8333-333333333333",
                        "remaining_seconds": 0,
                        "request_id": "55555555-5555-4555-8555-555555555555",
                        "status": "pending",
                        "unit_micros": 0
                      }
                    ],
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/UpgradeList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "422": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "502": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "503": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "DEFAULT_PLAN_DISABLED",
                    "message": "The default allowance plan has not been enabled by the administrator"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "パッケージアップグレード一覧",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/billing/upgrades/quote": {
      "post": {
        "description": "セッションの Owner が必要です。変更先は同じ通貨で、月額価格またはデバイス／API 枠が現在より低くない必要があります。元の期限と使用量は保持されます。アップグレードには常に現在および将来の前払い／ギフトの全サービス期間が含まれます。各期間の元の特典価値は残り秒数に応じて日割りで充当され、未開始の期間は全期間を使用します。ギフトの価値は現金として返金できません。支払いは単一のアトミックなウォレット引き落としで、日付と消費済み枠は維持されます。見積もりと支払いの間の更新、ギフト、キャンセルは UPGRADE_STATE_CONFLICT により見積もりを無効にします。関連する遅延した PayPal チャージはウォレット残高として残ります。サービス期間が変わった場合は新しい見積もりが必要です。",
        "operationId": "post__api_v1_billing_upgrades_quote",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpgradeQuoteInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanUpgrade"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "ウォレットから引き落とさずに日割りのプランアップグレードをプレビュー"
      }
    },
    "/api/v1/billing/upgrades/{id}/pay": {
      "post": {
        "description": "残高不足の場合、プランを変更せず pending を返します。一度引き落とした後に applied を返します。有効なプランの変更または見積もりの期限切れでは 409 を返します。アップグレードには常に現在および将来の前払い／ギフトの全サービス期間が含まれます。各期間の元の特典価値は残り秒数に応じて日割りで充当され、未開始の期間は全期間を使用します。ギフトの価値は現金として返金できません。支払いは単一のアトミックなウォレット引き落としで、日付と消費済み枠は維持されます。見積もりと支払いの間の更新、ギフト、キャンセルは UPGRADE_STATE_CONFLICT により見積もりを無効にします。関連する遅延した PayPal チャージはウォレット残高として残ります。サービス期間が変わった場合は新しい見積もりが必要です。新規支払いの前に現在のポリシーへの明示的な同意が必要です。支払い済みの再実行では元のレシートが保持されます。",
        "operationId": "post__api_v1_billing_upgrades__id__pay",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LegalConsent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanUpgrade"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "有効なアップグレード見積もりを確認して一度だけ支払う"
      }
    },
    "/api/v1/billing/waffo/orders": {
      "get": {
        "operationId": "get__api_v1_billing_waffo_orders",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoOrderList"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Waffo サービス決済とウォレットチャージ一覧",
        "x-licentivo-access": "session"
      },
      "post": {
        "operationId": "post__api_v1_billing_waffo_orders",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WaffoOrderInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoOrderResult"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Waffo サービス決済を 1 件作成または復旧",
        "x-licentivo-access": "owner"
      }
    },
    "/api/v1/billing/waffo/orders/{id}": {
      "get": {
        "operationId": "get__api_v1_billing_waffo_orders__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "ローカルのサービス決済識別子。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoOrderResult"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "自分のワークスペースの Waffo チェックアウトを取得",
        "x-licentivo-access": "session"
      }
    },
    "/api/v1/billing/waffo/orders/{id}/reconcile": {
      "post": {
        "operationId": "post__api_v1_billing_waffo_orders__id__reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "ローカルのサービス決済識別子。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoOrderResult"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "支払いを検証しサービスと返金を照合",
        "x-licentivo-access": "owner"
      }
    },
    "/api/v1/billing/wallet": {
      "get": {
        "operationId": "get_api_v1_billing_wallet",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "currencies": [],
                    "items": [
                      {
                        "balance_cents": 0,
                        "currency": "USD",
                        "mode": "sandbox"
                      }
                    ],
                    "maximum_cents": 0,
                    "minimum_cents": 0,
                    "mode": "sandbox",
                    "payment_channels": [],
                    "paypal_enabled": false
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletResult",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ウォレット残高を取得",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/billing/wallet/entries": {
      "get": {
        "operationId": "get_api_v1_billing_wallet_entries",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "amount_cents": 0,
                        "balance_cents": 0,
                        "created_at": "2026-10-18T00:00:00Z",
                        "currency": "USD",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "kind": "",
                        "mode": "sandbox",
                        "reference": ""
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletEntryList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ウォレット明細一覧",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/consume": {
      "post": {
        "description": "ライセンス認証によるランタイム操作。ベンダー Cookie や API Key は不要です。機能の消費には安定した Idempotency-Key が必要です。consume によるプラットフォーム API の引き落としはありません。",
        "operationId": "post_api_v1_consume",
        "parameters": [
          {
            "description": "操作ごとに新しいキーを生成し、再試行では同じキーと本文を使用します。最大 80 文字、空白不可。検証とハートビートでは任意です。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ConsumptionResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "/consume"
      }
    },
    "/api/v1/consume/cancel": {
      "post": {
        "description": "業務操作の前に予約し、成功後にのみ確定し、失敗時はキャンセルします。再試行では同じジョブ識別子とリクエスト本文を保持します。タイムアウトした確定の結果は不明です。確定を再試行し、キャンセルや完了済み作業の再実行は決してしないでください。完了した予約は現在の状態を返します。プラットフォーム API の引き落としはありません。完了時に license.consume が発行され、仮の確保では消費イベントは発行されません。",
        "operationId": "post_api_v1_consume_cancel",
        "parameters": [
          {
            "description": "操作ごとに新しいキーを生成し、再試行では同じキーと本文を使用します。最大 80 文字、空白不可。検証とハートビートでは任意です。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ReservationResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "機能単位：キャンセル"
      }
    },
    "/api/v1/consume/commit": {
      "post": {
        "description": "業務操作の前に予約し、成功後にのみ確定し、失敗時はキャンセルします。再試行では同じジョブ識別子とリクエスト本文を保持します。タイムアウトした確定の結果は不明です。確定を再試行し、キャンセルや完了済み作業の再実行は決してしないでください。完了した予約は現在の状態を返します。プラットフォーム API の引き落としはありません。完了時に license.consume が発行され、仮の確保では消費イベントは発行されません。",
        "operationId": "post_api_v1_consume_commit",
        "parameters": [
          {
            "description": "操作ごとに新しいキーを生成し、再試行では同じキーと本文を使用します。最大 80 文字、空白不可。検証とハートビートでは任意です。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ReservationResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "機能単位：確定"
      }
    },
    "/api/v1/consume/reserve": {
      "post": {
        "description": "業務操作の前に予約し、成功後にのみ確定し、失敗時はキャンセルします。再試行では同じジョブ識別子とリクエスト本文を保持します。タイムアウトした確定の結果は不明です。確定を再試行し、キャンセルや完了済み作業の再実行は決してしないでください。完了した予約は現在の状態を返します。プラットフォーム API の引き落としはありません。完了時に license.consume が発行され、仮の確保では消費イベントは発行されません。",
        "operationId": "post_api_v1_consume_reserve",
        "parameters": [
          {
            "description": "操作ごとに新しいキーを生成し、再試行では同じキーと本文を使用します。最大 80 文字、空白不可。検証とハートビートでは任意です。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ReservationResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "機能単位：予約"
      }
    },
    "/api/v1/customer/activations/{id}/release": {
      "post": {
        "operationId": "post_api_v1_customer_activations_by_id_release",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerReleaseInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomerReleaseResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "customerSession": []
          }
        ],
        "summary": "/customer/activations/{id}/release"
      }
    },
    "/api/v1/customer/cases": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_customer_cases",
        "parameters": [
          {
            "description": "件数の集計とページ分割の前に 1 種類のリクエストを除外します。サポート一覧から返金案件を除くには refund を使用します。アクセス範囲は現在のセッションに制限されたままです。",
            "in": "query",
            "name": "exclude_kind",
            "schema": {
              "maxLength": 24,
              "type": "string"
            }
          },
          {
            "description": "返金案件をウォレットへのチャージまたはサービスキャンセルに限定します。",
            "in": "query",
            "name": "refund_scope",
            "required": false,
            "schema": {
              "enum": [
                "wallet",
                "service"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "顧客リクエスト一覧",
        "x-required-role": "session"
      },
      "post": {
        "description": "安定した request_id はワークスペースを範囲とします。内容を変更して同じ ID を再利用することはできません。",
        "operationId": "post__api_v1_customer_cases",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupportCaseInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCase"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "サポート、プライバシー、異議申し立てのリクエストを作成",
        "x-required-role": "session"
      }
    },
    "/api/v1/customer/cases/unread": {
      "get": {
        "description": "返金チャットは除外されます。顧客には認可されたワークスペースのチケットのみ、メンバーには自分のチケットのみが表示されます。各管理者は独立した既読位置を持ちます。",
        "operationId": "get__api_v1_customer_cases_unread",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportUnread"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "個人のチケットと通知の未読数を取得",
        "x-required-role": "session"
      }
    },
    "/api/v1/customer/cases/{id}": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_customer_cases__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "リクエストと返信を取得",
        "x-required-role": "session"
      }
    },
    "/api/v1/customer/cases/{id}/messages": {
      "post": {
        "description": "返金案件は REFUND_REVIEW_WORKFLOW で返信を拒否し、管理者が直接承認または却下します。通常のサポートチケットでは返信が維持されます。審査済みの閉鎖はプライバシーワークフローの状態を保持します。",
        "operationId": "post__api_v1_customer_cases__id__messages",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupportReply"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "サポートチケットに返信",
        "x-required-role": "session"
      }
    },
    "/api/v1/customer/cases/{id}/read": {
      "post": {
        "description": "最後に表示されたメッセージまでのみ既読になります。後から届いたメッセージは未読のままで、遅延した確認によって既読位置が後退することはありません。",
        "operationId": "post__api_v1_customer_cases__id__read",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupportReadInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "表示されたチケットメッセージを確認済みにする",
        "x-required-role": "session"
      }
    },
    "/api/v1/customer/compensations": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_customer_compensations",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "created_at": "2026-10-18T00:00:00Z",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "incident_id": "33333333-3333-4333-8333-333333333333",
                        "intervals": "",
                        "mode": "timed",
                        "purchase_id": "33333333-3333-4333-8333-333333333333",
                        "seconds": 0
                      }
                    ]
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ServiceCompensationList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "サービス補償一覧",
        "x-management-reference": {
          "group": "service"
        },
        "x-required-role": "session",
        "x-required-scope": "read"
      }
    },
    "/api/v1/customer/licenses": {
      "get": {
        "operationId": "get_api_v1_customer_licenses",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomerLicenses"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "customerSession": []
          }
        ],
        "summary": "紐付いた購入者ライセンス"
      }
    },
    "/api/v1/customer/login": {
      "post": {
        "operationId": "post_api_v1_customer_login",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Email"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Notice"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "/customer/login"
      }
    },
    "/api/v1/customer/logout": {
      "post": {
        "operationId": "post_api_v1_customer_logout",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LoggedOut"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "customerSession": []
          }
        ],
        "summary": "/customer/logout"
      }
    },
    "/api/v1/customer/notices": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_customer_notices",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "body": "",
                        "created_at": "2026-10-18T00:00:00Z",
                        "effective_at": null,
                        "emailed_at": null,
                        "id": "33333333-3333-4333-8333-333333333333",
                        "kind": "",
                        "read_at": null,
                        "reference": "",
                        "title": ""
                      }
                    ]
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceNoticeList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "サービス通知一覧",
        "x-management-reference": {
          "group": "service"
        },
        "x-required-role": "session",
        "x-required-scope": "read"
      }
    },
    "/api/v1/customer/notices/{id}/read": {
      "post": {
        "description": "",
        "operationId": "post__api_v1_customer_notices__id__read",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "自分の通知を既読にする",
        "x-required-role": "session"
      }
    },
    "/api/v1/customer/offline/respond": {
      "post": {
        "operationId": "post_api_v1_customer_offline_respond",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OfflineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OfflineResponse"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "customerSession": []
          }
        ],
        "summary": "/customer/offline/respond"
      }
    },
    "/api/v1/customer/refunds": {
      "post": {
        "description": "明示的な範囲には確認と、返された quote_hash および quoted_at が必要です。管理者が承認するまでサービスは有効です。状態が変更された場合や見積もりが期限切れの場合は新しいプレビューが必要で、競合する保留中の申請は拒否されます。範囲のないリクエストでは明示的な確認後に、条件を満たす即時キャンセルが可能です。order_id では reason=failed_delivery を指定して paid_unapplied の Waffo/Paddle 支払いを選択することもできます。この操作は付与されていないウォレット残高を凍結しません。",
        "operationId": "post__api_v1_customer_refunds",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRefundInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCase"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "直接審査のために返金申請を提出",
        "x-required-role": "owner"
      }
    },
    "/api/v1/customer/refunds/quote": {
      "post": {
        "description": "明示的な購入／サービス範囲に対し、限定されたスナップショットハッシュ、影響を受ける購入、通貨別の返金見積額、残りの日付を返します。提出してもサービスは終了しません。ギフトに現金価値はありません。支払い済みアップグレードは審査のうえ引き続き返金可能です。",
        "operationId": "post__api_v1_customer_refunds_quote",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRefundQuoteInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomerRefundQuote"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "キャンセル範囲、返金、残りのサービスをプレビュー",
        "x-required-role": "owner"
      }
    },
    "/api/v1/customer/refunds/{id}/cancel": {
      "post": {
        "operationId": "post__api_v1_customer_refunds__id__cancel",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelCustomerRefund"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "未審査の残りの返金リクエストを撤回",
        "x-required-role": "owner"
      }
    },
    "/api/v1/customer/verify": {
      "post": {
        "operationId": "post_api_v1_customer_verify",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Token"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomerSession"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "/customer/verify"
      }
    },
    "/api/v1/deactivate": {
      "post": {
        "description": "product_id + license_key + device_id で認証します。Cookie／CSRF／ベンダーキーは不要です。activate を除き activation_id が必要です。成功した各リクエストは API 呼び出しを 1 回消費し、冪等な再実行と失敗は消費しません。超過分はウォレットからアトミックに引き落とされるか、API_QUOTA_EXCEEDED/API_BALANCE_INSUFFICIENT を返します。ワークスペースのデバイス枠は現在のアクティベーションに従います。解放すると枠が戻り、フローティングリースの期限切れでも枠が戻りますが、オフラインの通常登録は引き続きカウントされます。デバイス超過料金は枠の月の請求ピークが支払い済み容量を超えて増加した場合にのみ請求され、解放しても発生済み料金は返金されません。API 使用量は別です。",
        "operationId": "post_api_v1_deactivate",
        "parameters": [
          {
            "description": "操作ごとに新しいキーを生成し、再試行では同じキーと本文を使用します。最大 80 文字、空白不可。検証とハートビートでは任意です。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RuntimeResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "ランタイムの非アクティベーション"
      }
    },
    "/api/v1/demo/trial": {
      "post": {
        "operationId": "post_api_v1_demo_trial",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Trial"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Owner ごとに隔離された 7 日間の SDK トライアルを 1 件作成",
        "x-required-role": "owner"
      }
    },
    "/api/v1/examples/sdk": {
      "get": {
        "operationId": "get_api_v1_examples_sdk",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SDKExampleInfo"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "公開 SDK サンプルの利用可否"
      }
    },
    "/api/v1/examples/sdk/download/{name}": {
      "get": {
        "operationId": "get_api_v1_examples_sdk_download_{name}",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "description": "言語名と .zip。例：csharp.zip",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/zip": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "公開製品設定がコードに入力済みのソースをダウンロード"
      }
    },
    "/api/v1/examples/sdk/trial": {
      "post": {
        "description": "ブラウザーの CSRF と HttpOnly 訪問者 Cookie が必要です。各訪問者は別々のライセンスを取得し、3 日間は初回アクティベーション時に始まります。繰り返し取得しても期限は延長されません。export を有効にし、pro は有効にしません。",
        "operationId": "post_api_v1_examples_sdk_trial",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SDKExampleTrial"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "この訪問者専用の 3 日間トライアルを取得／復旧"
      }
    },
    "/api/v1/forum/images": {
      "post": {
        "operationId": "post__api_v1_forum_images",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "image": {
                    "description": "PNG、JPEG または GIF。最大 5 MB、4096 × 4096、1600 万ピクセル。GIF は静止 PNG として保存されます。公開投稿に添付されるまでは非公開です。",
                    "format": "binary",
                    "type": "string"
                  }
                },
                "required": [
                  "image"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ForumImage"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "非公開のドラフト画像をアップロード",
        "tags": [
          "Community"
        ]
      }
    },
    "/api/v1/forum/replies/{id}": {
      "delete": {
        "operationId": "delete__api_v1_forum_replies__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "返信を削除（投稿者またはプラットフォーム管理者）",
        "tags": [
          "Community"
        ]
      },
      "patch": {
        "operationId": "patch__api_v1_forum_replies__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForumReplyInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "自分の返信を編集",
        "tags": [
          "Community"
        ]
      }
    },
    "/api/v1/forum/topics": {
      "get": {
        "operationId": "get__api_v1_forum_topics",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "category",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "language",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ForumTopicList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          }
        },
        "security": [],
        "summary": "公開ディスカッション一覧。固定されたものを先に表示",
        "tags": [
          "Community"
        ]
      },
      "post": {
        "operationId": "post__api_v1_forum_topics",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForumTopicInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "ディスカッションを作成（認証済みテナントメンバー全員）",
        "tags": [
          "Community"
        ]
      }
    },
    "/api/v1/forum/topics/{id}": {
      "delete": {
        "operationId": "delete__api_v1_forum_topics__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "ディスカッションを削除（投稿者またはプラットフォーム管理者）",
        "tags": [
          "Community"
        ]
      },
      "get": {
        "operationId": "get__api_v1_forum_topics__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ForumTopicDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          }
        },
        "security": [],
        "summary": "公開ディスカッションと返信を取得",
        "tags": [
          "Community"
        ]
      },
      "patch": {
        "operationId": "patch__api_v1_forum_topics__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForumTopicInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "自分のディスカッションを編集",
        "tags": [
          "Community"
        ]
      }
    },
    "/api/v1/forum/topics/{id}/moderation": {
      "post": {
        "operationId": "post__api_v1_forum_topics__id__moderation",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForumModerationInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "ディスカッションの固定、固定解除、非表示、ロック（プラットフォーム管理者）",
        "tags": [
          "Community"
        ]
      }
    },
    "/api/v1/forum/topics/{id}/replies": {
      "post": {
        "operationId": "post__api_v1_forum_topics__id__replies",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForumReplyInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "エラーコードとリクエスト ID。アカウントの詳細は公開されません"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "ディスカッションに返信",
        "tags": [
          "Community"
        ]
      }
    },
    "/api/v1/forum/topics/{id}/translate": {
      "post": {
        "description": "匿名の訪問者も CSRF トークンを使用してこのエンドポイントを利用できます。保存された公開済みフォーラムテキストのみを受け付け、任意に送信されたテキストは受け付けません。翻訳は内容と対象言語ごとにキャッシュされます。非表示のトピック／返信は 404 を返し、同時翻訳では TRANSLATION_PENDING を返す場合があります。原文は保持されます。",
        "operationId": "post__api_v1_forum_topics__id__translate",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForumTranslationInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ForumTranslationResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          }
        },
        "security": [],
        "summary": "公開済みトピックまたは返信を翻訳"
      }
    },
    "/api/v1/forum/translation": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_forum_translation",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TranslationOptions"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          }
        },
        "security": [],
        "summary": "公開されている翻訳先言語を取得"
      }
    },
    "/api/v1/heartbeat": {
      "post": {
        "description": "product_id + license_key + device_id で認証します。Cookie／CSRF／ベンダーキーは不要です。activate を除き activation_id が必要です。成功した各リクエストは API 呼び出しを 1 回消費し、冪等な再実行と失敗は消費しません。超過分はウォレットからアトミックに引き落とされるか、API_QUOTA_EXCEEDED/API_BALANCE_INSUFFICIENT を返します。検証とハートビートの再試行レシートは 3600 秒後に期限切れになります。元の認可が有効な間、この時間内の一致するリクエストは追加の引き落としなく再実行されます。時間経過後は新しいキーを使用してください。使用済みキーは新規リクエストとして処理されることがあります。アクティベーション、非アクティベーション、機能使用のレシートは永続的に保持されます。ワークスペースのデバイス枠は現在のアクティベーションに従います。解放すると枠が戻り、フローティングリースの期限切れでも枠が戻りますが、オフラインの通常登録は引き続きカウントされます。デバイス超過料金は枠の月の請求ピークが支払い済み容量を超えて増加した場合にのみ請求され、解放しても発生済み料金は返金されません。API 使用量は別です。",
        "operationId": "post_api_v1_heartbeat",
        "parameters": [
          {
            "description": "操作ごとに新しいキーを生成し、再試行では同じキーと本文を使用します。最大 80 文字、空白不可。検証とハートビートでは任意です。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RuntimeResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "ランタイムのハートビート"
      }
    },
    "/api/v1/launch/connections": {
      "get": {
        "description": "Launch 信頼接続一覧。判断、再試行、範囲チェックは Licentivo が実行します。",
        "operationId": "launch_get__api_v1_launch_connections",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {},
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "description": "この操作の結果。",
                      "properties": {
                        "items": {
                          "description": "要求された範囲内の一致するレコード。",
                          "items": {
                            "$ref": "#/components/schemas/LaunchConnection"
                          },
                          "type": "array"
                        }
                      },
                      "required": [],
                      "type": "object"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Launch 信頼接続一覧",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-scope": "read"
      },
      "post": {
        "description": "Launch 発行者とコマース環境を登録します。判断、再試行、範囲チェックは Licentivo が実行します。",
        "operationId": "launch_post__api_v1_launch_connections",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "audience": "licentivo:launch",
                "enabled": true,
                "environment": "live",
                "issuer": "https://shop.example.test",
                "public_keys": {
                  "launch-1": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                }
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchConnectionInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "audience": "licentivo:launch",
                    "enabled": true,
                    "environment": "live",
                    "id": "11111111-1111-4111-8111-111111111111",
                    "issuer": "https://shop.example.test"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LaunchConnection",
                      "description": "この操作の結果。"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Launch 発行者とコマース環境を登録",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}": {
      "put": {
        "description": "発行者、対象者、環境は変更できません。信頼できる公開鍵セット全体を指定してください。",
        "operationId": "launch_put__api_v1_launch_connections_id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "audience": "licentivo:launch",
                "enabled": true,
                "environment": "live",
                "issuer": "https://shop.example.test",
                "public_keys": {
                  "launch-1": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                }
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchConnectionInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "audience": "licentivo:launch",
                    "enabled": true,
                    "environment": "live",
                    "id": "11111111-1111-4111-8111-111111111111",
                    "issuer": "https://shop.example.test"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LaunchConnection",
                      "description": "この操作の結果。"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Launch キーをローテーションまたはランタイム制限を更新",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}/devices/{activation}/release": {
      "post": {
        "description": "Licentivo は 30 日間のセルフ解放枠を確保し、操作を記録し、再試行と手動レビューを管理します。ワーカーは同一のトランザクションロックの下で紐付けバージョンを比較し、セッションと認証情報を失効させます。古い Launch ログインセッションは失効したデバイスで別の ID アサーションを交換できません。",
        "operationId": "launch_post__api_v1_launch_connections_id_devices_activation_release",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "activation",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "account_ref": "account_ref_example",
                "entitlement_ref": "entitlement_ref_example",
                "environment": "live",
                "expected_generation": 1,
                "operation_id": "11111111-1111-4111-8111-111111111111"
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchDeviceReleaseInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "activation_id": "11111111-1111-4111-8111-111111111111",
                    "expected_generation": 1,
                    "license_id": "11111111-1111-4111-8111-111111111111",
                    "operation_id": "11111111-1111-4111-8111-111111111111",
                    "source": "logout",
                    "status": "pending"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/DeviceReleaseOperation",
                      "description": "この操作の結果。"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "バージョン付きリモートアカウントデバイス解放を要求",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}/entitlements/{entitlement}/devices": {
      "get": {
        "description": "アカウントのデバイス、正規の解放枠、操作を取得します。判断、再試行、範囲チェックは Licentivo が実行します。",
        "operationId": "launch_get__api_v1_launch_connections_id_entitlements_entitlement_devices",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entitlement",
            "required": true,
            "schema": {
              "description": "大文字小文字を区別する変更不可の購入権利参照。",
              "pattern": "^[A-Za-z0-9_-]{1,128}$",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "account_ref",
            "required": true,
            "schema": {
              "description": "大文字小文字を区別する変更不可の購入権利参照。",
              "pattern": "^[A-Za-z0-9_-]{1,128}$",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "environment",
            "required": true,
            "schema": {
              "description": "接続と署名済み許可の両方に固定されたコマース環境。",
              "enum": [
                "live",
                "sandbox"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {},
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "description": "この操作の結果。",
                      "properties": {
                        "can_release": {
                          "description": "この信頼接続が新しいランタイム使用を認可できるかどうか。",
                          "type": "boolean"
                        },
                        "items": {
                          "description": "要求された範囲内の一致するレコード。",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "device_name": {
                                "description": "人が読めるデバイスラベル。",
                                "type": "string"
                              },
                              "generation": {
                                "description": "現在のデバイス紐付けの世代。",
                                "type": "integer"
                              },
                              "id": {
                                "description": "Licentivo リソース UUID。",
                                "format": "uuid",
                                "type": "string"
                              },
                              "last_seen_at": {
                                "description": "レコード作成時刻（UTC）。",
                                "format": "date-time",
                                "type": "string"
                              },
                              "status": {
                                "description": "サーバーが管理する現在のライフサイクルまたは処理状態。",
                                "type": "string"
                              }
                            },
                            "required": [],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "operations": {
                          "description": "サーバーが管理するデバイス解放操作の履歴。",
                          "items": {
                            "$ref": "#/components/schemas/DeviceReleaseOperation"
                          },
                          "type": "array"
                        },
                        "remaining": {
                          "description": "Licentivo が計算した、過去 30 日間の残りセルフサービス解放回数。",
                          "type": "integer"
                        }
                      },
                      "required": [],
                      "type": "object"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "アカウントのデバイス、正規の解放枠、操作を取得",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/launch/connections/{id}/events": {
      "post": {
        "description": "確認応答の前に永続化します。重複 ID で本文が異なる場合は競合します。ワーカーは絶対的な有効期間と単調増加する集計バージョンをトランザクション内で適用し、古いバージョンを無視し、失敗を最大 12 回試行してから手動レビューに移します。既存の権利では、所有権とバージョンのチェックを維持しながら、返金、停止、期限切れはプランマッピング、ポリシーバージョン、有効期間モード、デバイス占有数に関係なくアクセスを失効させます。プランのダウングレードは新しい機能、計量ルール、実効デバイス上限を同時に適用し、最も古い紐付けを保持し、超過デバイスのセッションと認証情報をセルフ解放枠を消費せずに失効させます。更新、プラン変更、ポリシー保存では独立した手動の機能上限とデバイス上限を保持します。明示的な entitlement.downgraded スナップショットは有効な商用状態を保持しますが、適用に失敗した場合は古い権利を永続的にブロックします。削減を証明できる既存の有効なスナップショットにも同じ保護が適用されます。保留中の制限バージョン以上の適用済みスナップショットのみがその障壁を解除します。冪等なランタイム再試行は操作の重複排除を保持しつつ、変更された認可と購入期限を更新します。認可が準備完了と宣言する前にイベントをポーリングしてください。",
        "operationId": "launch_post__api_v1_launch_connections_id_events",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "account_ref": "account_ref_example",
                "entitlement_ref": "entitlement_ref_example",
                "environment": "live",
                "event_id": "11111111-1111-4111-8111-111111111111",
                "launch_product_id": "11111111-1111-4111-8111-111111111111",
                "plan_ref": "plan_ref_example",
                "type": "entitlement.created",
                "valid_from": "2026-10-24T00:00:00Z",
                "version": 1
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchCommerceEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "attempts": 1,
                    "available_at": "2026-10-24T00:00:00Z",
                    "connection_id": "11111111-1111-4111-8111-111111111111",
                    "event_id": "11111111-1111-4111-8111-111111111111",
                    "status": "pending"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LaunchEvent",
                      "description": "この操作の結果。"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "完全な Launch コマーススナップショットを受信",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}/events/{event}": {
      "get": {
        "description": "Launch コマースイベントの結果を取得します。判断、再試行、範囲チェックは Licentivo が実行します。",
        "operationId": "launch_get__api_v1_launch_connections_id_events_event_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "attempts": 1,
                    "available_at": "2026-10-24T00:00:00Z",
                    "connection_id": "11111111-1111-4111-8111-111111111111",
                    "event_id": "11111111-1111-4111-8111-111111111111",
                    "status": "pending"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LaunchEvent",
                      "description": "この操作の結果。"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Launch コマースイベントの結果を取得",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/launch/connections/{id}/events/{event}/retry": {
      "post": {
        "description": "未適用の Launch イベントを再試行します。判断、再試行、範囲チェックは Licentivo が実行します。",
        "operationId": "launch_post__api_v1_launch_connections_id_events_event_retry",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "additionalProperties": false,
                "properties": {},
                "required": [],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {},
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "description": "この操作の結果。",
                      "properties": {
                        "queued": {
                          "description": "この信頼接続が新しいランタイム使用を認可できるかどうか。",
                          "type": "boolean"
                        }
                      },
                      "required": [],
                      "type": "object"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "未適用の Launch イベントを再試行",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}/plans/{plan}": {
      "put": {
        "description": "Launch プランバージョンをライセンスポリシーにマッピングします。判断、再試行、範囲チェックは Licentivo が実行します。",
        "operationId": "launch_put__api_v1_launch_connections_id_plans_plan_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "plan",
            "required": true,
            "schema": {
              "description": "大文字小文字を区別する変更不可の購入権利参照。",
              "pattern": "^[A-Za-z0-9_-]{1,128}$",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "launch_product_id": "11111111-1111-4111-8111-111111111111",
                "policy_id": "11111111-1111-4111-8111-111111111111",
                "policy_version": 1,
                "product_id": "11111111-1111-4111-8111-111111111111"
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchPlanMappingInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {},
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "description": "この操作の結果。",
                      "properties": {
                        "saved": {
                          "description": "この信頼接続が新しいランタイム使用を認可できるかどうか。",
                          "type": "boolean"
                        }
                      },
                      "required": [],
                      "type": "object"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Launch プランバージョンをライセンスポリシーにマッピング",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}/session-revocations": {
      "post": {
        "description": "同期的なアトミック失効：HTTP 200 はセッション、認証情報、一致するデバイス紐付け、永続レシートのコミットを意味します。接続が環境を決定します。任意の空でない environment は一致する必要があります。省略と一致する明示値は冪等性において同等です。同時再試行を含め、再試行には event_id と同じ正規化済み本文を再利用します。異なる本文は競合します。成功した再実行は元の件数を返し、新しいログインを失効させません。不明なアカウント／sid でも対象行数ゼロで成功し、ログイン拒否マーカーを保持します。アカウント範囲ではサーバー受け付け時刻の認証カットオフを記録します。購入権利の有効期間とライセンス条件は保持されます。無効な接続も失効を受け付けます。",
        "operationId": "launch_post__api_v1_launch_connections_id_session_revocations",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "account_ref": "account_456",
                "event_id": "11111111-1111-4111-8111-111111111111",
                "reason": "forced_logout",
                "scope": "session",
                "sid": "login_123"
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchSessionRevocationInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "account_ref": "account_456",
                    "completed_at": "2026-10-24T05:00:00.145678Z",
                    "connection_id": "11111111-1111-4111-8111-111111111111",
                    "created_at": "2026-10-24T05:00:00.123456Z",
                    "environment": "live",
                    "event_id": "11111111-1111-4111-8111-111111111111",
                    "reason": "forced_logout",
                    "released_devices": 2,
                    "revoked_credentials": 2,
                    "revoked_sessions": 2,
                    "scope": "session",
                    "sid": "login_123",
                    "status": "succeeded"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LaunchSessionRevocation",
                      "description": "この操作の結果。"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "404": {
            "description": "このテナントに接続が存在しません"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "415": {
            "description": "Content-Type: application/json を使用"
          },
          "500": {
            "description": "データベース障害または結果不明。ID や本文を変更せず元のイベントを照会または再試行してください"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Launch ログインまたはアカウントの全認可セッションを失効",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}/session-revocations/{event}": {
      "get": {
        "description": "このテナントと接続の元の永続レシートを返します。HTTP 404 は現在コミット済みの結果が見えないことを意味します。同じ event_id と本文で元の POST を再試行してください。非同期ワーカーは不要です。",
        "operationId": "launch_get__api_v1_launch_connections_id_session_revocations_event_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "account_ref": "account_456",
                    "completed_at": "2026-10-24T05:00:00.145678Z",
                    "connection_id": "11111111-1111-4111-8111-111111111111",
                    "created_at": "2026-10-24T05:00:00.123456Z",
                    "environment": "live",
                    "event_id": "11111111-1111-4111-8111-111111111111",
                    "reason": "forced_logout",
                    "released_devices": 2,
                    "revoked_credentials": 2,
                    "revoked_sessions": 2,
                    "scope": "session",
                    "sid": "login_123",
                    "status": "succeeded"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LaunchSessionRevocation",
                      "description": "この操作の結果。"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "404": {
            "description": "このテナントと接続にはコミット済みの結果がありません"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "500": {
            "description": "データベース障害または結果不明。ID や本文を変更せず元のイベントを照会または再試行してください"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "コミット済み Launch セッション失効の結果を照会",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/launch/device-operations/{operation}": {
      "get": {
        "description": "リモート解放の進行状況を取得します。判断、再試行、範囲チェックは Licentivo が実行します。",
        "operationId": "launch_get__api_v1_launch_device_operations_operation_",
        "parameters": [
          {
            "in": "path",
            "name": "operation",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "activation_id": "11111111-1111-4111-8111-111111111111",
                    "expected_generation": 1,
                    "license_id": "11111111-1111-4111-8111-111111111111",
                    "operation_id": "11111111-1111-4111-8111-111111111111",
                    "source": "logout",
                    "status": "pending"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/DeviceReleaseOperation",
                      "description": "この操作の結果。"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "リモート解放の進行状況を取得",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/launch/device-operations/{operation}/retry": {
      "post": {
        "description": "manual_review 操作には Owner の approve=true が必要です。承認しても元の紐付けバージョンのチェックは回避されません。",
        "operationId": "launch_post__api_v1_launch_device_operations_operation_retry",
        "parameters": [
          {
            "in": "path",
            "name": "operation",
            "required": true,
            "schema": {
              "description": "Licentivo リソース UUID。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "approve": {
                    "description": "この信頼接続が新しいランタイム使用を認可できるかどうか。",
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {},
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "description": "この操作の結果。",
                      "properties": {
                        "queued": {
                          "description": "この信頼接続が新しいランタイム使用を認可できるかどうか。",
                          "type": "boolean"
                        }
                      },
                      "required": [],
                      "type": "object"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "審査済みの解放を再試行または明示的に承認",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/exchange": {
      "post": {
        "description": "Idempotency-Key は必須です。JWT ヘッダー alg=Ed25519、typ=licentivo-launch-identity+jwt、固定された kid、および正確な iss/aud/environment、sub、sid、jti、iat、nbf、exp、auth_time、session_exp、launch_product_id、product_id、entitlement_ref が必要です。アサーションの有効期間は最大 120 秒です。再実行は同じリクエストと冪等性キーによる同じ有効なデバイスセッションの復旧のみ可能です。購入情報は Licentivo からのみ読み取ります。",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "description": "この Launch 認可操作の Idempotency-Key。",
              "maxLength": 80,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                "environment": "live",
                "identity_token": "identity_token_example",
                "launch_connection_id": "11111111-1111-4111-8111-111111111111",
                "product_id": "11111111-1111-4111-8111-111111111111"
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchExchangeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "activation_id": "11111111-1111-4111-8111-111111111111"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RuntimeResult",
                      "description": "この操作の結果。"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [],
        "summary": "Launch アカウント ID をデバイス認可に交換",
        "tags": [
          "Launch account licensing"
        ]
      }
    },
    "/api/v1/legal/policy": {
      "get": {
        "description": "対応する全 13 言語の確定済みサービス、返金、プライバシー文書を返します。未確認の任意プロフィール詳細は省略されます。公開済みバージョンには明示的な同意が必要です。初回公開までは既存のフローが継続します。",
        "operationId": "get__api_v1_legal_policy",
        "parameters": [
          {
            "in": "query",
            "name": "version",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommercePolicy"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [],
        "summary": "変更不可の法的ポリシーを取得"
      }
    },
    "/api/v1/licenses": {
      "get": {
        "operationId": "get_api_v1_licenses",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "product_id",
            "schema": {
              "description": "現在のワークスペースの製品 UUID。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "description": "検索テキスト。対象フィールドと最大長は操作によって異なります。",
              "maxLength": 254,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
              "enum": [
                "active",
                "expired",
                "suspended",
                "revoked"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "created_at": "2026-10-18T00:00:00Z",
                        "customer": "Order #1001",
                        "duration_days": 30,
                        "expires_at": null,
                        "features": [
                          "export"
                        ],
                        "first_activated_at": null,
                        "id": "33333333-3333-4333-8333-333333333333",
                        "key_prefix": "lv_lic_AAAAAAA",
                        "max_devices": 1,
                        "mode": "timed",
                        "policy_id": "22222222-2222-4222-8222-222222222222",
                        "policy_version": 1,
                        "product_id": "11111111-1111-4111-8111-111111111111",
                        "status": "active",
                        "updated_at": "2026-10-18T00:00:00Z"
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicenseList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ライセンス一覧",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-scope": "read"
      },
      "post": {
        "description": "Owner セッションまたは有効な Owner の書き込みキーが必要です。Idempotency-Key による自動再試行はありません。",
        "operationId": "post_api_v1_licenses",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "customer": "Order #1001",
                "customer_email": "buyer@example.com",
                "duration_days": 30,
                "policy_id": "22222222-2222-4222-8222-222222222222",
                "product_id": "11111111-1111-4111-8111-111111111111"
              },
              "schema": {
                "$ref": "#/components/schemas/LicenseCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "duration_days": 30,
                    "expires_at": null,
                    "first_activated_at": null,
                    "id": "33333333-3333-4333-8333-333333333333",
                    "key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                    "key_prefix": "lv_lic_AAAAAAA"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicenseSecret",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ライセンスを発行",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-request-variants": [
          {
            "name": "timed",
            "request": {
              "customer": "Order #1001",
              "customer_email": "buyer@example.com",
              "duration_days": 30,
              "policy_id": "22222222-2222-4222-8222-222222222222",
              "product_id": "11111111-1111-4111-8111-111111111111"
            },
            "response": {
              "data": {
                "duration_days": 30,
                "expires_at": null,
                "first_activated_at": null,
                "id": "33333333-3333-4333-8333-333333333333",
                "key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                "key_prefix": "lv_lic_AAAAAAA"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          },
          {
            "name": "perpetual",
            "request": {
              "customer": "Order #1001",
              "customer_email": "buyer@example.com",
              "duration_days": null,
              "policy_id": "22222222-2222-4222-8222-222222222223",
              "product_id": "11111111-1111-4111-8111-111111111111"
            },
            "response": {
              "data": {
                "duration_days": null,
                "expires_at": null,
                "first_activated_at": null,
                "id": "33333333-3333-4333-8333-333333333333",
                "key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                "key_prefix": "lv_lic_AAAAAAA"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          }
        ],
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/batch": {
      "post": {
        "description": "ポリシーの適用ではライセンスのモードや有効期間は変更されません。作成時には各有期限／トライアルライセンスについて、各項目または共通の一括フィールドで明示的な期間が必要です。Launch 管理のライセンスは単独または一括の独立した更新を HTTP 409 LAUNCH_VALIDITY_MANAGED で拒否します。Launch で購入を更新し、絶対的な有効期間を同期してください。混在する一括更新は全体がロールバックされます。",
        "operationId": "post_api_v1_licenses_batch",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "duration_days": 30,
                "entries": [
                  {
                    "customer": "Order #1001",
                    "customer_email": "buyer@example.com"
                  }
                ],
                "operation": "create",
                "policy_id": "22222222-2222-4222-8222-222222222222",
                "product_id": "11111111-1111-4111-8111-111111111111",
                "request_id": "55555555-5555-4555-8555-555555555555"
              },
              "schema": {
                "$ref": "#/components/schemas/BatchInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "count": 1,
                    "items": [
                      {
                        "customer": "Order #1001",
                        "customer_email": "buyer@example.com",
                        "duration_days": 30,
                        "expires_at": null,
                        "first_activated_at": null,
                        "id": "33333333-3333-4333-8333-333333333333",
                        "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                      }
                    ],
                    "operation": "create",
                    "request_id": "55555555-5555-4555-8555-555555555555"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BatchResult",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ライセンスの一括処理",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-request-variants": [
          {
            "name": "create",
            "request": {
              "duration_days": 30,
              "entries": [
                {
                  "customer": "Order #1001",
                  "customer_email": "buyer@example.com"
                }
              ],
              "operation": "create",
              "policy_id": "22222222-2222-4222-8222-222222222222",
              "product_id": "11111111-1111-4111-8111-111111111111",
              "request_id": "55555555-5555-4555-8555-555555555555"
            },
            "response": {
              "data": {
                "count": 1,
                "items": [
                  {
                    "customer": "Order #1001",
                    "customer_email": "buyer@example.com",
                    "duration_days": 30,
                    "expires_at": null,
                    "first_activated_at": null,
                    "id": "33333333-3333-4333-8333-333333333333",
                    "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                  }
                ],
                "operation": "create",
                "request_id": "55555555-5555-4555-8555-555555555555"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          },
          {
            "name": "renew",
            "request": {
              "days": 30,
              "ids": [
                "33333333-3333-4333-8333-333333333333"
              ],
              "operation": "renew",
              "request_id": "55555555-5555-4555-8555-555555555555"
            },
            "response": {
              "data": {
                "count": 1,
                "items": [
                  {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "operation": "renew"
                  }
                ],
                "operation": "renew",
                "request_id": "55555555-5555-4555-8555-555555555555"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          },
          {
            "name": "revoke",
            "request": {
              "ids": [
                "33333333-3333-4333-8333-333333333333"
              ],
              "operation": "revoke",
              "request_id": "55555555-5555-4555-8555-555555555555"
            },
            "response": {
              "data": {
                "count": 1,
                "items": [
                  {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "operation": "revoke"
                  }
                ],
                "operation": "revoke",
                "request_id": "55555555-5555-4555-8555-555555555555"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          },
          {
            "name": "apply_policy",
            "request": {
              "ids": [
                "33333333-3333-4333-8333-333333333333"
              ],
              "operation": "apply_policy",
              "policy_id": "22222222-2222-4222-8222-222222222222",
              "preview_token": "REPLACE_WITH_THE_UNEXPIRED_PREVIEW_TOKEN",
              "request_id": "55555555-5555-4555-8555-555555555555"
            },
            "response": {
              "data": {
                "count": 1,
                "items": [
                  {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "operation": "apply_policy"
                  }
                ],
                "operation": "apply_policy",
                "request_id": "55555555-5555-4555-8555-555555555555"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          }
        ],
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/export.csv": {
      "get": {
        "operationId": "get_api_v1_licenses_export_csv",
        "parameters": [
          {
            "in": "query",
            "name": "product_id",
            "schema": {
              "description": "現在のワークスペースの製品 UUID。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "description": "検索テキスト。対象フィールドと最大長は操作によって異なります。",
              "maxLength": 254,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "description": "現在のリソース状態。enum と操作に関する注記を参照してください。",
              "enum": [
                "active",
                "expired",
                "suspended",
                "revoked"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "example": "id,product_id,key_prefix,customer,mode,status,max_devices,expires_at\n",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "413": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "EXPORT_TOO_LARGE",
                    "message": "Filter the export to at most 5000 records"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "最大 5000 件に絞り込む"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ライセンスをエクスポート",
        "x-csv-columns": [
          "id",
          "product_id",
          "key_prefix",
          "customer",
          "mode",
          "status",
          "max_devices",
          "expires_at"
        ],
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/licenses/policy-preview": {
      "post": {
        "description": "ポリシーの適用ではライセンスのモードや有効期間は変更されません。作成時には各有期限／トライアルライセンスについて、各項目または共通の一括フィールドで明示的な期間が必要です。",
        "operationId": "post_api_v1_licenses_policy-preview",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "ids": [
                  "33333333-3333-4333-8333-333333333333"
                ],
                "policy_id": "22222222-2222-4222-8222-222222222222"
              },
              "schema": {
                "$ref": "#/components/schemas/PreviewInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "changes": [],
                    "expires_in": 600,
                    "note": "",
                    "policy_version": 1,
                    "preview_token": ""
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PolicyPreview",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ポリシー適用をプレビュー",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/{id}": {
      "delete": {
        "operationId": "delete_api_v1_licenses_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ライセンスをアーカイブ",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      },
      "get": {
        "operationId": "get_api_v1_licenses_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "created_at": "2026-10-18T00:00:00Z",
                    "customer": "Order #1001",
                    "duration_days": 30,
                    "expires_at": null,
                    "features": [
                      "export"
                    ],
                    "first_activated_at": null,
                    "id": "33333333-3333-4333-8333-333333333333",
                    "key_prefix": "lv_lic_AAAAAAA",
                    "max_devices": 1,
                    "mode": "timed",
                    "policy_id": "22222222-2222-4222-8222-222222222222",
                    "policy_version": 1,
                    "product_id": "11111111-1111-4111-8111-111111111111",
                    "status": "active",
                    "updated_at": "2026-10-18T00:00:00Z"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/License",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ライセンスを取得",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "operationId": "patch_api_v1_licenses_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "status": "suspended"
              },
              "schema": {
                "$ref": "#/components/schemas/LicenseUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ライセンスを更新",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/{id}/capabilities": {
      "get": {
        "operationId": "get_api_v1_licenses_by_id_capabilities",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "customer_email": "buyer@example.com",
                    "license": {
                      "license_id": "33333333-3333-4333-8333-333333333333",
                      "license_model": "node_locked",
                      "maintenance_days": 0,
                      "maintenance_until": null,
                      "max_version": "",
                      "min_version": "",
                      "product_id": "11111111-1111-4111-8111-111111111111",
                      "updated_at": "2026-10-18T00:00:00Z"
                    },
                    "meter_rules": [],
                    "usage": null
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicenseCapabilityResult",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ライセンスの機能を取得",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/licenses/{id}/customer": {
      "patch": {
        "operationId": "patch_api_v1_licenses_by_id_customer",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "email": "buyer@example.com",
                "name": "Sample customer"
              },
              "schema": {
                "$ref": "#/components/schemas/CustomerAssignment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "顧客を割り当て",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/{id}/maintenance/renew": {
      "post": {
        "operationId": "post_api_v1_licenses_by_id_maintenance_renew",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "days": 30
              },
              "schema": {
                "$ref": "#/components/schemas/Renew"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "license_id": "33333333-3333-4333-8333-333333333333",
                    "license_model": "node_locked",
                    "maintenance_days": 0,
                    "maintenance_until": null,
                    "max_version": "",
                    "min_version": "",
                    "product_id": "11111111-1111-4111-8111-111111111111",
                    "updated_at": "2026-10-18T00:00:00Z"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicenseCapabilities",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "メンテナンスを更新",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/{id}/renew": {
      "post": {
        "description": "初回アクティベーション前の更新は duration_days を増加させます。アクティベーション後、延長は現在時刻と expires_at の遅い方から始まります。期限切れライセンスでも購入した延長期間は失われません。Launch 管理のライセンスは単独または一括の独立した更新を HTTP 409 LAUNCH_VALIDITY_MANAGED で拒否します。Launch で購入を更新し、絶対的な有効期間を同期してください。混在する一括更新は全体がロールバックされます。",
        "operationId": "post_api_v1_licenses_by_id_renew",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "days": 30
              },
              "schema": {
                "$ref": "#/components/schemas/Renew"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "duration_days": 60,
                    "expires_at": null,
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Renewed",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ライセンスを更新",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-request-variants": [
          {
            "name": "before_activation",
            "request": {
              "days": 30
            },
            "response": {
              "data": {
                "duration_days": 60,
                "expires_at": null,
                "id": "33333333-3333-4333-8333-333333333333"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          },
          {
            "name": "after_activation",
            "request": {
              "days": 30
            },
            "response": {
              "data": {
                "duration_days": 30,
                "expires_at": "2026-12-17T00:00:00Z",
                "id": "33333333-3333-4333-8333-333333333333"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          }
        ],
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/{id}/reveal-key": {
      "post": {
        "description": "Requires an active Owner browser session and CSRF token. Management API keys and read-only members are forbidden. Keys are encrypted at rest and each view is audited without recording the secret. Ordinary lists, details and CSV exports contain only the prefix. Older encrypted batch/onboarding receipts are recovered during migration. Older hash-only issuances return LICENSE_KEY_UNAVAILABLE (409); Launch account licenses return LICENSE_KEY_NOT_APPLICABLE (409). Viewing does not rotate the key or change validity, devices or usage.",
        "operationId": "post_api_v1_licenses_by_id_reveal-key",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicenseKeyReveal"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "View the original license key",
        "x-required-role": "owner"
      }
    },
    "/api/v1/licenses/{id}/revoke": {
      "post": {
        "operationId": "post_api_v1_licenses_by_id_revoke",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ライセンスを失効",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/members": {
      "get": {
        "operationId": "get_api_v1_members",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MemberList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "get /members",
        "x-required-role": "owner"
      },
      "post": {
        "operationId": "post_api_v1_members",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Invite"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Invited"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "post /members",
        "x-required-role": "owner"
      }
    },
    "/api/v1/members/{id}": {
      "patch": {
        "operationId": "patch_api_v1_members_by_id",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemberUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "patch /members/{id}",
        "x-required-role": "owner"
      }
    },
    "/api/v1/offline/respond": {
      "post": {
        "operationId": "post_api_v1_offline_respond",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "activation_id": "44444444-4444-4444-8444-444444444444",
                "app_version": "1.0.0",
                "created_at": 1792281600,
                "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                "device_name": "Office PC",
                "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                "operation": "deactivate",
                "product_id": "11111111-1111-4111-8111-111111111111",
                "request_id": "55555555-5555-4555-8555-555555555555",
                "version": 1
              },
              "schema": {
                "$ref": "#/components/schemas/OfflineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "operation": "deactivate",
                    "request_id": "55555555-5555-4555-8555-555555555555",
                    "result": {
                      "activation_id": "44444444-4444-4444-8444-444444444444",
                      "deactivated": true
                    },
                    "version": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OfflineResponse",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "オフライン応答を発行",
        "x-management-reference": {
          "group": "integration"
        },
        "x-request-variants": [
          {
            "name": "activate",
            "request": {
              "app_version": "1.0.0",
              "created_at": 1792281600,
              "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
              "device_name": "Office PC",
              "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
              "operation": "activate",
              "product_id": "11111111-1111-4111-8111-111111111111",
              "request_id": "55555555-5555-4555-8555-555555555555",
              "version": 1
            },
            "response": {
              "data": {
                "operation": "activate",
                "request_id": "55555555-5555-4555-8555-555555555555",
                "result": {
                  "activation_id": "44444444-4444-4444-8444-444444444444",
                  "device_key": "lv_dev_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                  "heartbeat_seconds": 600,
                  "lease": {
                    "key_id": "66666666-6666-4666-8666-666666666666",
                    "payload": "BASE64URL_ENCODED_SIGNED_CLAIMS",
                    "signature": "BASE64URL_ED25519_SIGNATURE",
                    "version": 1
                  }
                },
                "version": 1
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          },
          {
            "name": "deactivate",
            "request": {
              "activation_id": "44444444-4444-4444-8444-444444444444",
              "app_version": "1.0.0",
              "created_at": 1792281600,
              "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
              "device_name": "Office PC",
              "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
              "operation": "deactivate",
              "product_id": "11111111-1111-4111-8111-111111111111",
              "request_id": "55555555-5555-4555-8555-555555555555",
              "version": 1
            },
            "response": {
              "data": {
                "operation": "deactivate",
                "request_id": "55555555-5555-4555-8555-555555555555",
                "result": {
                  "activation_id": "44444444-4444-4444-8444-444444444444",
                  "deactivated": true
                },
                "version": 1
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          }
        ],
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/onboarding": {
      "post": {
        "operationId": "post_api_v1_onboarding",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "duration_days": 7,
                "mode": "trial",
                "name": "Report app",
                "request_id": "55555555-5555-4555-8555-555555555555"
              },
              "schema": {
                "$ref": "#/components/schemas/OnboardingInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "config": {
                      "allow_http": false,
                      "app_version": "1.0.0",
                      "base_url": "https://license.example.com",
                      "cache_path": "",
                      "device_name": "My application",
                      "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                      "product_id": "11111111-1111-4111-8111-111111111111",
                      "trusted_keys": {
                        "66666666-6666-4666-8666-666666666666": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                      }
                    },
                    "license_id": "33333333-3333-4333-8333-333333333333",
                    "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                    "next": "Choose a language and download the configured SDK bundle.",
                    "policy_id": "22222222-2222-4222-8222-222222222222",
                    "product_id": "11111111-1111-4111-8111-111111111111"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OnboardingResult",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "連携リソースを作成",
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/payments/paddle/webhook": {
      "post": {
        "operationId": "post__api_v1_payments_paddle_webhook",
        "parameters": [
          {
            "in": "header",
            "name": "Paddle-Signature",
            "required": true,
            "schema": {
              "description": "決済サービスの表示名。",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaddleWebhookEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookReceived"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [],
        "summary": "Paddle 署名を検証し完了済み決済または調整を照合",
        "x-licentivo-access": "public"
      }
    },
    "/api/v1/payments/paypal/webhook": {
      "post": {
        "operationId": "post_api_v1_payments_paypal_webhook",
        "parameters": [
          {
            "in": "header",
            "name": "Paypal-Auth-Algo",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Paypal-Cert-Url",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Paypal-Transmission-Id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Paypal-Transmission-Sig",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Paypal-Transmission-Time",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookReceived"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "検証済みの売上確定／返金／取り消し通知"
      }
    },
    "/api/v1/payments/waffo/webhook": {
      "post": {
        "operationId": "post__api_v1_payments_waffo_webhook",
        "parameters": [
          {
            "in": "header",
            "name": "X-Waffo-Signature",
            "required": true,
            "schema": {
              "description": "MER_ で始まる事業者識別子。",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WaffoWebhookEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookReceived"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [],
        "summary": "Waffo 署名を検証し支払いまたは返金を照合",
        "x-licentivo-access": "public"
      }
    },
    "/api/v1/policies": {
      "get": {
        "operationId": "get_api_v1_policies",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "product_id",
            "schema": {
              "description": "現在のワークスペースの製品 UUID。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "created_at": "2026-10-18T00:00:00Z",
                        "features": [
                          "export"
                        ],
                        "heartbeat_seconds": 600,
                        "id": "22222222-2222-4222-8222-222222222222",
                        "max_devices": 1,
                        "mode": "timed",
                        "name": "One device",
                        "offline_mode": "limited",
                        "offline_seconds": 86400,
                        "product_id": "11111111-1111-4111-8111-111111111111",
                        "updated_at": "2026-10-18T00:00:00Z",
                        "version": 1
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PolicyList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ポリシー一覧",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-scope": "read"
      },
      "post": {
        "description": "Owner セッションまたは有効な Owner の書き込みキーが必要です。Idempotency-Key による自動再試行はありません。",
        "operationId": "post_api_v1_policies",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "features": [
                  "export"
                ],
                "heartbeat_seconds": 600,
                "max_devices": 1,
                "mode": "timed",
                "name": "One device",
                "offline_mode": "limited",
                "offline_seconds": 86400,
                "product_id": "11111111-1111-4111-8111-111111111111"
              },
              "schema": {
                "$ref": "#/components/schemas/PolicyCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ポリシーを作成",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/policies/{id}": {
      "delete": {
        "operationId": "delete_api_v1_policies_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ポリシーをアーカイブ",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      },
      "get": {
        "operationId": "get_api_v1_policies_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "created_at": "2026-10-18T00:00:00Z",
                    "features": [
                      "export"
                    ],
                    "heartbeat_seconds": 600,
                    "id": "22222222-2222-4222-8222-222222222222",
                    "max_devices": 1,
                    "mode": "timed",
                    "name": "One device",
                    "offline_mode": "limited",
                    "offline_seconds": 86400,
                    "product_id": "11111111-1111-4111-8111-111111111111",
                    "updated_at": "2026-10-18T00:00:00Z",
                    "version": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Policy",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ポリシーを取得",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "description": "ポリシーと、リンクされた未失効のすべてのライセンススナップショットをアトミックに更新します。既存ライセンスの条件、確定済み使用量、別個のメンテナンス延長は保持されます。synced_licenses を返します。ACTIVE_DEVICES_CONFLICT は保存全体をロールバックします。",
        "operationId": "patch_api_v1_policies_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "max_devices": 2
              },
              "schema": {
                "$ref": "#/components/schemas/PolicyUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "synced_licenses": 0
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PolicySyncResult",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "基本ポリシーを更新",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/policies/{id}/capabilities": {
      "get": {
        "operationId": "get_api_v1_policies_by_id_capabilities",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "allow_vm": true,
                    "device_match": "system",
                    "license_model": "node_locked",
                    "maintenance_days": 0,
                    "max_version": "",
                    "meter_rules": [],
                    "min_version": "",
                    "policy_id": "22222222-2222-4222-8222-222222222222",
                    "policy_version": 1,
                    "product_id": "11111111-1111-4111-8111-111111111111",
                    "require_hardware": false,
                    "self_release_limit": 3,
                    "session_seconds": 7200,
                    "updated_at": "2026-10-18T00:00:00Z"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PolicyCapabilities",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ポリシーの機能を取得",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "description": "現在の policy_version を使用します。発行済みの条件、確定済み使用量、別個のメンテナンス延長を保持しながら、ポリシーとリンクされた未失効のすべてのライセンススナップショットをアトミックに更新します。synced_licenses を返します。POLICY_CHANGED または ACTIVE_DEVICES_CONFLICT は保存全体をロールバックします。",
        "operationId": "patch_api_v1_policies_by_id_capabilities",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "license_model": "node_locked",
                "meter_rules": [
                  {
                    "allow_overage": false,
                    "feature": "export",
                    "limit": 500,
                    "max_overage": 0,
                    "period": "month"
                  }
                ],
                "policy_version": 1
              },
              "schema": {
                "$ref": "#/components/schemas/PolicyCapabilitiesInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "synced_licenses": 0
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PolicySyncResult",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ポリシーの機能を更新",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/products": {
      "get": {
        "operationId": "get_api_v1_products",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "description": "検索テキスト。対象フィールドと最大長は操作によって異なります。",
              "maxLength": 120,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "created_at": "2026-10-18T00:00:00Z",
                        "description": "Desktop reporting software",
                        "id": "11111111-1111-4111-8111-111111111111",
                        "name": "Report app",
                        "status": "active",
                        "updated_at": "2026-10-18T00:00:00Z"
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "製品一覧",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-scope": "read"
      },
      "post": {
        "description": "Owner セッションまたは有効な Owner の書き込みキーが必要です。Idempotency-Key による自動再試行はありません。",
        "operationId": "post_api_v1_products",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "description": "Desktop reporting software",
                "name": "Report app"
              },
              "schema": {
                "$ref": "#/components/schemas/ProductCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "製品を作成",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/products/{id}": {
      "delete": {
        "operationId": "delete_api_v1_products_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "製品をアーカイブ",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      },
      "get": {
        "operationId": "get_api_v1_products_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "created_at": "2026-10-18T00:00:00Z",
                    "description": "Desktop reporting software",
                    "id": "11111111-1111-4111-8111-111111111111",
                    "name": "Report app",
                    "status": "active",
                    "updated_at": "2026-10-18T00:00:00Z"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Product",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "製品を取得",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "operationId": "patch_api_v1_products_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "name": "Report app Pro",
                "status": "active"
              },
              "schema": {
                "$ref": "#/components/schemas/ProductUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "製品を更新",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/products/{id}/public-keys": {
      "get": {
        "operationId": "get_api_v1_products_by_id_public-keys",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyBundle"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "製品の固定キーバンドル"
      }
    },
    "/api/v1/products/{id}/releases": {
      "get": {
        "operationId": "get_api_v1_products_by_id_releases",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "channel": "stable",
                        "created_at": "2026-10-18T00:00:00Z",
                        "download_url": "",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "notes": "Initial release",
                        "product_id": "11111111-1111-4111-8111-111111111111",
                        "published_at": "2026-10-18T00:00:00Z",
                        "sha256": "",
                        "version": "1.0.0"
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ReleaseList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "リリース一覧",
        "x-management-reference": {
          "group": "releases"
        },
        "x-required-scope": "read"
      },
      "post": {
        "operationId": "post_api_v1_products_by_id_releases",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "channel": "stable",
                "notes": "Initial release",
                "version": "1.0.0"
              },
              "schema": {
                "$ref": "#/components/schemas/ReleaseInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "channel": "stable",
                    "created_at": "2026-10-18T00:00:00Z",
                    "download_url": "",
                    "id": "33333333-3333-4333-8333-333333333333",
                    "notes": "Initial release",
                    "product_id": "11111111-1111-4111-8111-111111111111",
                    "published_at": "2026-10-18T00:00:00Z",
                    "sha256": "",
                    "version": "1.0.0"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Release",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "リリースを公開",
        "x-management-reference": {
          "group": "releases"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/products/{id}/sdk-bundle": {
      "post": {
        "operationId": "post_api_v1_products_by_id_sdk-bundle",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "language": "go"
              },
              "schema": {
                "$ref": "#/components/schemas/BundleInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/zip": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "製品のサンプルソースをダウンロード",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/products/{id}/sdk-initializer": {
      "get": {
        "operationId": "get_api_v1_products_by_id_sdk-initializer",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "language",
            "schema": {
              "default": "go",
              "description": "ダウンロードバンドルの SDK 言語識別子。",
              "enum": [
                "go",
                "java",
                "c",
                "cpp",
                "csharp",
                "python",
                "javascript",
                "rust",
                "ruby"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "language": "go",
                    "product_id": "11111111-1111-4111-8111-111111111111",
                    "source": "const productID = \"11111111-1111-4111-8111-111111111111\"\nvar trustedKeys = map[string]string{\"66666666-6666-4666-8666-666666666666\": \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"}\n",
                    "trusted_keys": {
                      "66666666-6666-4666-8666-666666666666": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                    }
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SDKInitializer",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "製品初期化コードをコピー",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/products/{id}/signing-keys": {
      "get": {
        "operationId": "get_api_v1_products_by_id_signing-keys",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "keys": [],
                    "product_id": "11111111-1111-4111-8111-111111111111"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ManagementKeyBundle",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "署名キー一覧",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/products/{id}/signing-keys/rotate": {
      "post": {
        "operationId": "post_api_v1_products_by_id_signing-keys_rotate",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "active": true,
                    "algorithm": "Ed25519",
                    "created_at": "2026-10-18T00:00:00Z",
                    "key_id": "66666666-6666-4666-8666-666666666666",
                    "public_key": "",
                    "retired_at": null
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SigningKey",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "署名キーをローテーション",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/releases/eligible": {
      "post": {
        "description": "ライセンス認証によるランタイム操作。ベンダー Cookie や API Key は不要です。機能の消費には安定した Idempotency-Key が必要です。consume によるプラットフォーム API の引き落としはありません。",
        "operationId": "post_api_v1_releases_eligible",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/EligibleReleases"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "/releases/eligible"
      }
    },
    "/api/v1/service/status": {
      "get": {
        "description": "全体向けの通知のみ公開され、対象ワークスペース ID は公開されません。",
        "operationId": "get__api_v1_service_status",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ServiceIncidentList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [],
        "summary": "公開メンテナンス情報とインシデントを取得"
      }
    },
    "/api/v1/sessions/logout": {
      "post": {
        "description": "ブラウザー Cookie や CSRF トークンは不要です。重複操作は新しい紐付けを解放せず再実行されます。状態 stale は古い失効操作が正常に完了したことを意味します。SDK はこのリクエストを送信する前にローカル使用を拒否し、ランタイム認証情報を消去します。",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "activation_id": "11111111-1111-4111-8111-111111111111",
                "expected_generation": 1,
                "operation_id": "11111111-1111-4111-8111-111111111111",
                "product_id": "11111111-1111-4111-8111-111111111111",
                "release_token": "lv_out_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
              },
              "schema": {
                "$ref": "#/components/schemas/LogoutTicket"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "activation_id": "11111111-1111-4111-8111-111111111111",
                    "expected_generation": 1,
                    "license_id": "11111111-1111-4111-8111-111111111111",
                    "operation_id": "11111111-1111-4111-8111-111111111111",
                    "source": "logout",
                    "status": "pending"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/DeviceReleaseOperation",
                      "description": "この操作の結果。"
                    },
                    "request_id": {
                      "description": "HTTP リクエストの相関識別子。",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "受け付け済みの結果"
          },
          "400": {
            "description": "無効な入力"
          },
          "401": {
            "description": "認証または ID アサーションが拒否されました"
          },
          "403": {
            "description": "権利、認証情報、環境またはログインが失効しました"
          },
          "409": {
            "description": "冪等性、ポリシー、審査または紐付けバージョンの競合"
          },
          "503": {
            "description": "一時的な障害。元の操作を再試行してください"
          }
        },
        "security": [],
        "summary": "紐付け解除専用チケットでバージョン付きデバイス紐付けを 1 件失効",
        "tags": [
          "Launch account licensing"
        ]
      }
    },
    "/api/v1/summary": {
      "get": {
        "operationId": "get_api_v1_summary",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "active_licenses": 0,
                    "licenses": 0,
                    "policies": 0,
                    "products": 0
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Summary",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "ワークスペースの件数",
        "x-management-reference": {
          "group": "usage"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/support/contact": {
      "get": {
        "description": "設定された連絡先メールアドレスのみを返します。空の場合は非表示です。メールは送信されません。",
        "operationId": "get__api_v1_support_contact",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportContact"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [],
        "summary": "公開サポートメールを取得"
      }
    },
    "/api/v1/system/billing-notifications": {
      "get": {
        "description": "認証メールの転送、送信者、暗号化された永続キュー、再試行を再利用します。各種類はプラットフォームの許可と受信者の同意の両方が必要です。配信時に現在の同意とイベント状態を再確認します。メールの選択はウォレットの引き落としへの同意を付与または撤回しません。Sandbox メッセージにはラベルが付きます。未払いの保留中の購入やギフトについて通知は作成されません。",
        "operationId": "get__api_v1_system_billing_notifications",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingNotificationSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "プラットフォームの請求メールルールを取得",
        "x-platform-admin": true,
        "x-required-role": "owner"
      },
      "patch": {
        "description": "部分更新。明示的な false 値は保持されます。認証メールの転送、送信者、暗号化された永続キュー、再試行を再利用します。各種類はプラットフォームの許可と受信者の同意の両方が必要です。配信時に現在の同意とイベント状態を再確認します。メールの選択はウォレットの引き落としへの同意を付与または撤回しません。Sandbox メッセージにはラベルが付きます。未払いの保留中の購入やギフトについて通知は作成されません。",
        "operationId": "patch__api_v1_system_billing_notifications",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingNotificationSettingsInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingNotificationSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "請求メールルールと公開サポート連絡先を設定",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/billing-notifications/preview": {
      "get": {
        "description": "保存されたプラットフォーム設定とサンプルの sandbox データを使用します。購入やメールジョブは作成されません。",
        "operationId": "get__api_v1_system_billing_notifications_preview",
        "parameters": [
          {
            "in": "query",
            "name": "kind",
            "required": true,
            "schema": {
              "enum": [
                "purchase_success",
                "expiry_reminder",
                "auto_renewal_success",
                "auto_renewal_problem"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "schema": {
              "default": "zh",
              "enum": [
                "zh",
                "zh-hant",
                "en",
                "es",
                "hi",
                "ar",
                "fr",
                "bn",
                "pt",
                "id",
                "ur"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingEmailPreview"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "請求メールを送信せずにプレビュー",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/billing-notifications/test": {
      "post": {
        "description": "明示的なテストではサンプルの sandbox データを使用し、[TEST] を追加して既存のメール設定に従います。その顧客通知の種類が無効でもテンプレートをテストできます。決済や更新は行われません。",
        "operationId": "post__api_v1_system_billing_notifications_test",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingEmailTestInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MailQueued"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "要求された請求メールテストをキューに追加",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/check-mail": {
      "post": {
        "description": "保存済みサービスのみをチェックします。API プロバイダーのチェックは読み取り専用リクエストを使用し、メールを送信しません。送信専用キーでは check_status=limited、ok=false となる場合があり、認証情報の有効性や配信成功は確認できません。送信テストには明示的なテストメールリクエストが必要です。",
        "operationId": "post_api_v1_system_check-mail",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MailConnection"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "MAIL_PROVIDER_AUTH_FAILED、MAIL_PROVIDER_RATE_LIMITED または MAIL_PROVIDER_UNAVAILABLE。テストメールの配信は非同期です。配信エラーは元の HTTP 202 レスポンスではなくジョブ結果に表示されます。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "post /system/check-mail",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_system_customer_cases",
        "parameters": [
          {
            "description": "件数の集計とページ分割の前に 1 種類のリクエストを除外します。サポート一覧から返金案件を除くには refund を使用します。アクセス範囲は現在のセッションに制限されたままです。",
            "in": "query",
            "name": "exclude_kind",
            "schema": {
              "maxLength": 24,
              "type": "string"
            }
          },
          {
            "description": "返金案件をウォレットへのチャージまたはサービスキャンセルに限定します。",
            "in": "query",
            "name": "refund_scope",
            "required": false,
            "schema": {
              "enum": [
                "wallet",
                "service"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "顧客リクエスト一覧",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/unread": {
      "get": {
        "description": "返金チャットは除外されます。顧客には認可されたワークスペースのチケットのみ、メンバーには自分のチケットのみが表示されます。各管理者は独立した既読位置を持ちます。",
        "operationId": "get__api_v1_system_customer_cases_unread",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportUnread"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "個人のチケットと通知の未読数を取得",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_system_customer_cases__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "リクエストと返信を取得",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/deletion-review": {
      "post": {
        "description": "金銭債務の確認が必要です。通常のアクセスを直ちに失効させ、顧客のエクスポートをちょうど 30 日後に終了し、認可された管理者によるエクスポートのためにすべての業務記録を保持します。",
        "operationId": "post__api_v1_system_customer_cases__id__deletion_review",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountClosureReview"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "論理的なアカウント閉鎖を確認または却下",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/manual-refund": {
      "post": {
        "description": "顧客の同意と支払い完了の証拠が必要です。これは決済を記録するもので、銀行振込を送金しません。繰り返し確認しても二重に引き落とされません。サービスを含む元の Waffo/Paddle 支払いは、この申告のみの方法を ORIGINAL_REFUND_REQUIRED で拒否します。",
        "operationId": "post__api_v1_system_customer_cases__id__manual_refund",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManualRefundInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "実際に完了した代替返金を記録",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/messages": {
      "post": {
        "description": "返金案件は REFUND_REVIEW_WORKFLOW で返信を拒否し、管理者が直接承認または却下します。通常のサポートチケットでは返信が維持されます。審査済みの閉鎖はプライバシーワークフローの状態を保持します。",
        "operationId": "post__api_v1_system_customer_cases__id__messages",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupportReply"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "サポートチケットに返信",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/read": {
      "post": {
        "description": "最後に表示されたメッセージまでのみ既読になります。後から届いたメッセージは未読のままで、遅延した確認によって既読位置が後退することはありません。",
        "operationId": "post__api_v1_system_customer_cases__id__read",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupportReadInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "表示されたチケットメッセージを確認済みにする",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/recover-original-refund": {
      "post": {
        "description": "代替振込が実際には行われていないことについて、管理者の明示的な確認が必要です。元の証拠を保持し、補償仕訳を使用します。元の支払いからは残額のみを要求します。",
        "operationId": "post__api_v1_system_customer_cases__id__recover_original_refund",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecoverOriginalRefund"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "未払いの手動申告を訂正し元の経路への返金を要求",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/refund-quote": {
      "post": {
        "description": "最新の範囲、金額、スケジュールのプレビュー。サービス範囲が変更された場合は顧客による新しい申請が必要です。管理者は古い申請を直接却下できます。",
        "operationId": "post__api_v1_system_customer_cases__id__refund_quote",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmptyRefundPreviewInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ScopedRefundPreview"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "承認前に保留中の範囲指定申請をプレビュー",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/refund-review": {
      "post": {
        "description": "対象ワークスペースで直列化します。承認により利用可能なウォレット資金を確保し、安定したプロバイダーリクエスト ID を使用して元の決済経路への返金を割り当て、合意された代替方法が必要な残額を保持します。Waffo/Paddle の承認は元のプロバイダーへの永続的な返金インテントを作成し、事業者の返金 API リクエストを発行します。手動の申告でこれらの返金を完了することはできません。processing/pending の承認状態は決済済みの資金ではありません。",
        "operationId": "post__api_v1_system_customer_cases__id__refund_review",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundReview"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "顧客の返金を承認または却下",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/legal/policy": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_system_legal_policy",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommercePolicy"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "運営者プロフィールと保留中のポリシーバージョンを取得",
        "x-platform-admin": true,
        "x-required-role": "owner"
      },
      "patch": {
        "description": "公開には確認済みの運営者の法的名称と有効な連絡先メールアドレスが必要です。その他のプロフィール詳細は任意で、未確認の項目は公開文書から省略されます。公開済みの差し替えでは、コンソールと正常に送信されたメールによる少なくとも 30 日間の通知期間中、以前のバージョンが維持されます。",
        "operationId": "patch__api_v1_system_legal_policy",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommercePolicyInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommercePolicy"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "サービスのポリシーを公開または公開予約",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/mail-jobs": {
      "get": {
        "description": "プラットフォーム管理者セッションのみ。最新 50 件のメッセージについて種類、環境、受信者、試行回数、状態、キャンセル理由を表示します。配信済み／キャンセル済みのペイロードは消去されます。SMTP の受け付けは受信箱への配信や開封を意味しません。",
        "operationId": "get_api_v1_system_mail-jobs",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MailJobList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "get /system/mail-jobs",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/mail-jobs/{id}/retry": {
      "post": {
        "description": "試行回数をリセットし、同じ失敗メッセージをキューに入れます。配信済み、キャンセル済み、実行中、保留中のジョブは MAIL_JOB_NOT_RETRYABLE を返します。請求ジョブは新しい配信の試行前に現在の同意とイベント状態を再確認します。SMTP エラーによって確定済みの支払いが取り消されることはありません。",
        "operationId": "post__api_v1_system_mail_jobs__id__retry",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MailQueued"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "暗号化されたペイロードが保持されている失敗メールを再試行",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/operations": {
      "get": {
        "description": "プラットフォーム管理者セッションのみ。実行者、対象、理由、明示的な変更を含む追記専用アプリケーションログ。",
        "operationId": "get__api_v1_system_operations",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "user_id",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "action",
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformOperationList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "管理者による顧客操作一覧"
      }
    },
    "/api/v1/system/overview": {
      "get": {
        "description": "プラットフォーム管理者セッションのみ。パッケージ指標には現在設定されている決済環境を使用します。新規ユーザーは過去 30 日間、期限切れは今後 7 日間が対象です。",
        "operationId": "get__api_v1_system_overview",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformOverview"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "プラットフォームの顧客とパッケージの合計を取得"
      }
    },
    "/api/v1/system/paddle": {
      "get": {
        "operationId": "get__api_v1_system_paddle",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleSettings"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "秘密鍵を公開せずに Paddle 設定を取得",
        "x-licentivo-access": "platform"
      },
      "patch": {
        "operationId": "patch__api_v1_system_paddle",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaddleSettingsInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleSettings"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "暗号化された Paddle Billing 認証情報を保存",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/paddle/check": {
      "post": {
        "operationId": "post__api_v1_system_paddle_check",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleCheck"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Paddle 認証情報と有効な製品を検証",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/paddle/orders": {
      "get": {
        "operationId": "get__api_v1_system_paddle_orders",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleOrderList"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Paddle サービス決済とウォレットチャージ一覧",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/paddle/orders/{id}/reconcile": {
      "post": {
        "operationId": "post__api_v1_system_paddle_orders__id__reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "ローカルのサービス決済識別子。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaddleReconcileInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleOrderResult"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "請求を作成せず元の取引を照合または復旧",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/payment-channels": {
      "get": {
        "operationId": "get__api_v1_system_payment_channels",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaymentChannels"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "個別に設定可能な決済チャネル一覧",
        "x-licentivo-access": "platform"
      },
      "patch": {
        "operationId": "patch__api_v1_system_payment_channels",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentChannelInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaymentChannels"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "楽観的並行制御によりチャネルをアトミックに有効化または無効化",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/paypal": {
      "get": {
        "operationId": "get_api_v1_system_paypal",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "paypal",
        "x-platform-admin": true,
        "x-required-role": "owner"
      },
      "patch": {
        "operationId": "patch_api_v1_system_paypal",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayPalInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "paypal",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/paypal/check": {
      "post": {
        "operationId": "post_api_v1_system_paypal_check",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalCheck"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "paypal/check",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/paypal/orders/{id}/refund": {
      "post": {
        "description": "プラットフォーム管理者セッションのみ。PayPal への連絡前に利用可能な未使用ウォレット残高を確保します。pending は結果が未確認であることを意味し、同じリクエストを照合してください。パッケージは自動的にキャンセルされません。",
        "operationId": "post__api_v1_system_paypal_orders__id__refund",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalRefund"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "未使用のウォレット資金を元の PayPal 支払い方法に返金"
      }
    },
    "/api/v1/system/paypal/refund-requests": {
      "get": {
        "description": "Cookie セッションのみ。管理 API キーは受け付けません。顧客の読み取りは自分のワークスペースに限定されます。顧客の書き込みにはプラットフォーム管理者権限を持たない認証済みワークスペース Owner が必要です。申請によって資金の移動や確保は行われません。管理者による承認時に現在のウォレットと未返金の確定済み金額を再確認し、既存の冪等な元の決済経路への返金と資金確保のフローを使用します。承認してもプランはキャンセルされません。",
        "operationId": "get__api_v1_system_paypal_refund_requests",
        "parameters": [
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletRefundRequestList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "審査対象の顧客返金申請一覧",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/paypal/refund-requests/{id}/review": {
      "post": {
        "description": "Cookie セッションのみ。管理 API キーは受け付けません。顧客の読み取りは自分のワークスペースに限定されます。顧客の書き込みにはプラットフォーム管理者権限を持たない認証済みワークスペース Owner が必要です。申請によって資金の移動や確保は行われません。管理者による承認時に現在のウォレットと未返金の確定済み金額を再確認し、既存の冪等な元の決済経路への返金と資金確保のフローを使用します。承認してもプランはキャンセルされません。",
        "operationId": "post__api_v1_system_paypal_refund_requests__id__review",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WalletRefundReview"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletRefundRequest"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、認証、所有権、審査の競合または残高のエラー"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "顧客返金申請を承認または却下",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/paypal/refunds": {
      "get": {
        "description": "プラットフォーム管理者セッションのみ。",
        "operationId": "get__api_v1_system_paypal_refunds",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RefundList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "選択した決済環境の返金リクエスト一覧"
      }
    },
    "/api/v1/system/paypal/refunds/{id}/reconcile": {
      "post": {
        "description": "プラットフォーム管理者セッションのみ。返金 ID を受け取っていない場合は同じ PayPal-Request-Id を再試行し、そうでなければ既存のプロバイダー返金を取得します。",
        "operationId": "post__api_v1_system_paypal_refunds__id__reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalRefund"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "新しい請求 ID を作成せず同じ返金を照合"
      }
    },
    "/api/v1/system/plan-gifts": {
      "get": {
        "description": "プラットフォーム管理者セッションのみ。指定された受信者は重複排除されたワークスペースを表します。検索は受信者のメールアドレス、ワークスペース、パッケージ名に一致します。",
        "operationId": "get__api_v1_system_plan_gifts",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "user_id",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanGiftList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "ギフト履歴一覧"
      },
      "post": {
        "description": "プラットフォーム管理者セッションのみ。アトミックな一括処理です。プレビューの fingerprint と安定した request_id を指定します。一致する再実行は同じバッチを返します。階層またはスケジュールの変更には新しいプレビューが必要です。ギフトの実際の支払い額はゼロのままで、現金返金にはなりません。記録された特典価値はアップグレード時に通常どおり充当されます。新規で未開始の現在の階層のギフトのみ、日付を保持したまま追加支払いなしで後のアップグレードに追従します。過去のギフトは再調整されず、月間枠と超過ルールが通常どおり適用されます。混在バッチは current/--- メタデータを使用します。実際の階層と通貨は購入に紐付く各ギフト記録を確認してください。",
        "operationId": "post__api_v1_system_plan_gifts",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlanGiftInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanGiftResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "確認済みの現在の階層のギフトを確定"
      }
    },
    "/api/v1/system/plan-gifts/preview": {
      "post": {
        "description": "プラットフォーム管理者セッションのみ。異なる有効な顧客ユーザー ID を 1–100 件指定します。同じワークスペースのユーザーには 1 つの契約が付与されます。各項目は、その顧客の現在有効なパッケージ、または選択環境で最後に期限切れになったパッケージを継承します。階層が混在する一括処理では各項目の実際のプランと特典価値を返します。plan/currency/price_version は省略してください。任意で明示した値は全顧客の既存パッケージと一致する必要があります。パッケージを持たない顧客はこのエンドポイントで別の階層を受け取れません。after_current は支払い済み／ギフトの全サービス期間の後に追加し、immediate は権利の重複を拒否します。書き込みや請求は行いません。",
        "operationId": "post__api_v1_system_plan_gifts_preview",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlanGiftPreviewInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanGiftPreview"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "現在の階層のパッケージギフトをプレビュー"
      }
    },
    "/api/v1/system/plan-gifts/{id}/cancel": {
      "post": {
        "description": "プラットフォーム管理者セッションのみ。繰り返しのキャンセルは安全です。履歴の削除、超過料金の返金、他の予約契約の移動を行わず、この契約を停止します。",
        "operationId": "post__api_v1_system_plan_gifts__id__cancel",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformReason"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanGiftCancellation"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "有効または予約済みのギフトをキャンセル"
      }
    },
    "/api/v1/system/plans": {
      "get": {
        "operationId": "get_api_v1_system_plans",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AdminPlanList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "plans",
        "x-platform-admin": true,
        "x-required-role": "owner"
      },
      "post": {
        "operationId": "post_api_v1_system_plans",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlanInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Price"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "plans",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/plans/customer-controls": {
      "patch": {
        "description": "プラットフォーム管理者セッションのみ。両方のスイッチのデフォルトは false です。device_enabled、api_enabled、または両方を指定します。省略されたスイッチは現在の状態を保持します。無効なスイッチはそれぞれの顧客向け操作を非表示にし、再度有効になるまで対応する保存済み設定のみを無視します。unlimited とされた API 枠は無制限のままです。",
        "operationId": "patch__api_v1_system_plans_customer_controls",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerControlsInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomerControlsResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "顧客によるデバイスまたは API の超過設定を個別に許可"
      }
    },
    "/api/v1/system/plans/default": {
      "patch": {
        "operationId": "patch_api_v1_system_plans_default",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefaultPlan"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/DefaultPlan"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "plans/default",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/privacy/retention": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_system_privacy_retention",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "アーカイブと保持の実行履歴を取得",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/privacy/retention/run": {
      "post": {
        "description": "論理的なアーカイブのみで、顧客／業務の行は保持されます。認証済みの管理対象 .lvb バックアップファイルを 90 日後、アプリ所有のセキュリティログを暦の 6 か月後にローテーションします。実行はデータベースロックで直列化されます。",
        "operationId": "post__api_v1_system_privacy_retention_run",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Confirmation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "実行期限に達したアーカイブと保持処理を実行",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/provider-refunds/{id}/reconcile": {
      "post": {
        "description": "プロバイダー／業務参照を使って既存のリクエストを照会します。以前に送信されていない永続的なインテントのみが最初のリクエストを発行できます。重複または結果不明の送信を再投稿することはありません。完了には元のプロバイダーのレシートを独立して検証する必要があります。",
        "operationId": "post__api_v1_system_provider_refunds__id__reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProviderRefund"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "既存の元のチャネルへの返金を照合",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/refund-requests": {
      "get": {
        "description": "読み取り専用のプラットフォーム管理者セッション。ウォレット返金申請とプロバイダーのウォレット／サービスキャンセル案件を統合します。環境別の保留件数はページ分割や範囲フィルターとは独立しています。読み取りにより資金が承認、凍結、返金されることはありません。各ソースの既存の審査エンドポイントを使用してください。",
        "operationId": "get_system_refund_requests",
        "parameters": [
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "review",
            "schema": {
              "enum": [
                "pending",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "scope",
            "schema": {
              "enum": [
                "wallet",
                "service"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RefundInboxList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "環境別のリクエストと審査待ち件数"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、セッションまたは権限エラー"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、セッションまたは権限エラー"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、セッションまたは権限エラー"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、セッションまたは権限エラー"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、セッションまたは権限エラー"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "統合された顧客返金審査キュー",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/refunds": {
      "get": {
        "operationId": "get__api_v1_system_refunds",
        "parameters": [
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RefundHistory"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "PayPal、Waffo、Paddle の返金一覧",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/revenue": {
      "get": {
        "operationId": "get_api_v1_system_revenue",
        "parameters": [
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "month",
            "schema": {
              "description": "all または UTC YYYY-MM",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Revenue"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "revenue",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/sdk-example": {
      "post": {
        "description": "プラットフォーム管理者の Owner セッションと CSRF のみ。API キーは拒否されます。専用の製品とポリシーを再利用し、既存のトライアルは更新しません。",
        "operationId": "post_api_v1_system_sdk-example",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SDKExampleSetup"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SDKExampleSetting"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "管理者専用の公開 SDK サンプル製品を準備／有効化",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/service/incidents": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_system_service_incidents",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ServiceIncidentList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "すべてのサービス通知を取得",
        "x-platform-admin": true,
        "x-required-role": "owner"
      },
      "post": {
        "description": "緊急でないメンテナンスには少なくとも 24 時間前の通知が必要です。24 時間を超える継続した検証済みインシデントでは、実際に影響を受けた支払い済み時間を補償します。重複期間は二重に補償しません。7 日を超える場合、未使用サービスの返金対象となることがあります。",
        "operationId": "post__api_v1_system_service_incidents",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceIncidentInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ServiceIncident"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "メンテナンスを公開またはインシデントを解決",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/settings": {
      "get": {
        "operationId": "get_api_v1_system_settings",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SystemSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "get /system/settings",
        "x-platform-admin": true,
        "x-required-role": "owner"
      },
      "patch": {
        "operationId": "patch_api_v1_system_settings",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MailInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MailSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "patch /system/settings",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/test-mail": {
      "post": {
        "description": "保存された配信サービスを使用し、指定された受信者宛てに実際のテストメッセージを 1 件明示的にキューへ追加します。HTTP 202 はキューへの受け付けを示し、受信箱への到着を意味しません。ジョブの状態を追跡し、配信の問題についてプロバイダーのダッシュボード／受信箱を確認してください。",
        "operationId": "post_api_v1_system_test-mail",
        "parameters": [
          {
            "description": "Cookie／公開認証の書き込みに必要。対応する Bearer リソースの書き込みのみ免除されます。",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestMail"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MailQueued"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "post /system/test-mail",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/tls": {
      "get": {
        "description": "プラットフォーム管理者のブラウザーセッションのみ。管理 API キーとテナント Owner は拒否されます。このプロセスが使用する証明書を反映します。証明書 PEM や秘密鍵は公開されません。",
        "operationId": "get__api_v1_system_tls",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TLSStatus"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功。公開証明書のメタデータのみを返します。"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "有効な HTTPS 証明書を取得"
      },
      "patch": {
        "description": "プラットフォーム管理者のブラウザーセッションのみ。管理 API キーとテナント Owner は拒否されます。証明書／鍵を検証して MySQL に暗号化保存し、監査イベントを記録してから有効な証明書を切り替えます。新しい TLS ハンドシェイクには直ちに使用され、既存の接続は通常どおり継続します。再起動時にはブートストラップファイルよりデータベースの証明書が優先されます。",
        "operationId": "patch__api_v1_system_tls",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TLSCertificateUpdateInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TLSCertificateResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功。公開証明書のメタデータのみを返します。"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "HTTPS 証明書を直ちに置き換える"
      }
    },
    "/api/v1/system/tls/check": {
      "post": {
        "description": "プラットフォーム管理者のブラウザーセッションのみ。管理 API キーとテナント Owner は拒否されます。形式、鍵の強度、鍵の一致、ホスト名、有効期間、信頼チェーンを確認します。直接 HTTPS が有効である必要があります。有効な証明書は変更されません。",
        "operationId": "post__api_v1_system_tls_check",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TLSCertificateInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TLSCertificateInfo"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功。公開証明書のメタデータのみを返します。"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code を確認してください。TLS_KEY_MISMATCH、TLS_DOMAIN_MISMATCH、TLS_EXPIRED、TLS_CHAIN_UNTRUSTED、TLS_SETTINGS_CONFLICT の場合、以前の証明書が維持されます。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "証明書と秘密鍵を保存せずに検証"
      }
    },
    "/api/v1/system/translation": {
      "get": {
        "description": "プラットフォーム管理者セッションのみ。",
        "operationId": "get__api_v1_system_translation",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TranslationSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "API キーを公開せずに DeepL 設定を取得"
      },
      "patch": {
        "description": "プラットフォーム管理者セッションのみ。直近の GET の expected_version を使用します。キーは返されません。",
        "operationId": "patch__api_v1_system_translation",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TranslationSettingsInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TranslationSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "暗号化された DeepL 設定を保存"
      }
    },
    "/api/v1/system/translation/check": {
      "post": {
        "description": "DeepL の言語と使用量のエンドポイントのみを呼び出し、フォーラムの内容は送信しません。",
        "operationId": "post__api_v1_system_translation_check",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TranslationCheck"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を参照してください。request_id はリクエストを識別します。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "保存済み API キーを検証し、対応言語と使用量を取得"
      }
    },
    "/api/v1/system/users": {
      "get": {
        "description": "プラットフォーム管理者セッションのみ。未確認アカウントとチームメンバーを含みます。ハッシュや認証トークンは返しません。",
        "operationId": "get__api_v1_system_users",
        "parameters": [
          {
            "description": "メールアドレス、名前、ワークスペースの大文字小文字を区別しない部分一致。ワイルドカード文字はエスケープされます。",
            "in": "query",
            "name": "q",
            "schema": {
              "maxLength": 254,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "enum": [
                "active",
                "disabled"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "role",
            "schema": {
              "enum": [
                "owner",
                "read_only"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "verified",
            "schema": {
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformUserList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "登録ユーザー全員の一覧"
      }
    },
    "/api/v1/system/users/export.csv": {
      "get": {
        "description": "プラットフォーム管理者セッションのみ。一致する最大 10000 件、UTF-8 BOM、表計算の数式エスケープを使用します。認証情報は含みません。",
        "operationId": "get__api_v1_system_users_export_csv",
        "parameters": [
          {
            "description": "メールアドレス、名前、ワークスペースの大文字小文字を区別しない部分一致。ワイルドカード文字はエスケープされます。",
            "in": "query",
            "name": "q",
            "schema": {
              "maxLength": 254,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "enum": [
                "active",
                "disabled"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "role",
            "schema": {
              "enum": [
                "owner",
                "read_only"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "verified",
            "schema": {
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "CSV 添付ファイル"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "フィルターされた登録ユーザーを CSV でエクスポート"
      }
    },
    "/api/v1/system/users/{id}": {
      "get": {
        "description": "プラットフォーム管理者セッションのみ。ワークスペースの残高、最新 20 件の契約、PayPal の累計支払い／返金額は通貨と環境ごとに分けられます。",
        "operationId": "get__api_v1_system_users__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformUserDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "顧客とワークスペースの詳細を取得"
      },
      "patch": {
        "description": "プラットフォーム管理者セッションのみ。操作理由と楽観的バージョンが必要です。無効化すると既存のセッション、キー、ログインリンクが失効します。復元してもキーは復元されません。プラットフォーム管理者アカウントは保護されています。",
        "operationId": "patch__api_v1_system_users__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformUserUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformUserDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "顧客の状態または非公開の管理者メモを更新"
      }
    },
    "/api/v1/system/users/{id}/data-export": {
      "post": {
        "description": "アカウント閉鎖後および顧客の期限後に利用できます。管理者パスワード、範囲、監査される運用上の理由が必要です。業務記録は消去されません。",
        "operationId": "post__api_v1_system_users__id__data_export",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerDataExportInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/zip": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "保持された顧客記録をエクスポート",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/users/{id}/revoke-credentials": {
      "post": {
        "description": "プラットフォーム管理者セッションのみ。アカウントは無効化されず、顧客は再ログインできます。管理者の認証情報はここでは失効できません。",
        "operationId": "post__api_v1_system_users__id__revoke_credentials",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformReason"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformRevocation"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "既存の顧客セッションと API キーを失効"
      }
    },
    "/api/v1/system/waffo": {
      "get": {
        "operationId": "get__api_v1_system_waffo",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoSettings"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "署名キーを公開せずに Waffo 設定を取得",
        "x-licentivo-access": "platform"
      },
      "patch": {
        "operationId": "patch__api_v1_system_waffo",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WaffoSettingsInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoSettings"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "暗号化された Waffo 認証情報を保存",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/waffo/check": {
      "post": {
        "operationId": "post__api_v1_system_waffo_check",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoCheck"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Waffo 認証情報と有効な一回払い製品を検証",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/waffo/orders": {
      "get": {
        "operationId": "get__api_v1_system_waffo_orders",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoOrderList"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Waffo サービス決済とウォレットチャージ一覧",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/waffo/orders/{id}/reconcile": {
      "post": {
        "operationId": "post__api_v1_system_waffo_orders__id__reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "ローカルのサービス決済識別子。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoOrderResult"
                    },
                    "request_id": {
                      "description": "ローカルのサービス決済識別子。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "元の Waffo 支払いを復旧して照合",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/workspaces/{id}/status": {
      "patch": {
        "description": "プラットフォーム管理者セッションのみ。停止するとログイン、管理 API、オンラインライセンスがブロックされ、認証情報が失効します。契約の有効期限は進み続けます。プラットフォームのワークスペースは保護され、署名済みオフラインキャッシュは既存の有効期限に従います。",
        "operationId": "patch__api_v1_system_workspaces__id__status",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformWorkspaceUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformWorkspaceStatus"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code と error.message を確認してください。"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "顧客ワークスペース全体を停止または復元"
      }
    },
    "/api/v1/system/{provider}/orders/{id}/refund": {
      "post": {
        "description": "プラットフォーム管理者セッション。支払い済みサービスには代わりにキャンセルが必要です。未適用の支払いはウォレットの資金移動なしで返金されます。安定した request_id はゲートウェイ呼び出し前にインテントを永続化します。結果不明の場合は照会し、盲目的に再送しません。",
        "operationId": "post__api_v1_system__provider__orders__id__refund",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "provider",
            "required": true,
            "schema": {
              "enum": [
                "waffo",
                "paddle"
              ],
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OriginalRefundInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OriginalRefundResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "検証、所有権、環境、返金状態またはプロバイダーのエラー"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "未使用残高または未適用の支払いに対する元のチャネルへの返金を開始",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/usage": {
      "get": {
        "description": "現在の月はアクティブなデバイス登録数を表示し、過去の月は記録されたデバイス使用履歴を表示します。購入したパッケージの API 枠はそれぞれの枠月に従います。デバイス履歴は解放後も保持されます。現在の占有数と請求ピークは別の指標です。",
        "operationId": "get_api_v1_usage",
        "parameters": [
          {
            "description": "UTC の暦月。デフォルトは現在の月",
            "in": "query",
            "name": "month",
            "schema": {
              "description": "UTC の月 YYYY-MM。クエリ値を省略すると現在の月を使用します。請求ジョブには締め済みの月が必要です。",
              "pattern": "^[0-9]{4}-[0-9]{2}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "active_devices": 0,
                    "api_calls": 0,
                    "api_period": null,
                    "billable_devices": 0,
                    "estimated_total_cents": 0,
                    "estimated_total_micros": 0,
                    "month": "2026-09",
                    "operations": [],
                    "overage_devices": 0,
                    "period": null,
                    "products": [],
                    "purchased": null,
                    "purchased_active_devices": 0,
                    "sandbox": false,
                    "timezone": "UTC",
                    "warning": "normal"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Usage",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "503": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "DEFAULT_PLAN_DISABLED",
                    "message": "The default allowance plan has not been enabled by the administrator"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "デフォルト枠は無効です（DEFAULT_PLAN_DISABLED）"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Current device occupancy, historical device use and metered API usage",
        "x-management-reference": {
          "group": "usage"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/usage/devices": {
      "get": {
        "description": "選択した UTC 月のデバイス使用記録。デバイスの解放後も保持されます。これは利用履歴であり、現在オンラインのデバイス一覧ではありません。現在の占有数には GET /api/v1/usage を使用してください。",
        "operationId": "get_api_v1_usage_devices",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "UTC の暦月。デフォルトは現在の月",
            "in": "query",
            "name": "month",
            "schema": {
              "description": "UTC の月 YYYY-MM。クエリ値を省略すると現在の月を使用します。請求ジョブには締め済みの月が必要です。",
              "pattern": "^[0-9]{4}-[0-9]{2}$",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "product_id",
            "schema": {
              "description": "現在のワークスペースの製品 UUID。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                        "first_seen_at": "2026-09-01T00:00:00Z",
                        "last_seen_at": "2026-09-30T00:00:00Z",
                        "month": "2026-09",
                        "product_id": "11111111-1111-4111-8111-111111111111"
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/UsageDeviceList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "使用デバイス一覧",
        "x-management-reference": {
          "group": "usage"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/usage/export.csv": {
      "get": {
        "description": "選択した UTC 月のデバイス使用記録。デバイスの解放後も保持されます。これは利用履歴であり、現在オンラインのデバイス一覧ではありません。現在の占有数には GET /api/v1/usage を使用してください。",
        "operationId": "get_api_v1_usage_export_csv",
        "parameters": [
          {
            "description": "UTC の暦月。デフォルトは現在の月",
            "in": "query",
            "name": "month",
            "schema": {
              "description": "UTC の月 YYYY-MM。クエリ値を省略すると現在の月を使用します。請求ジョブには締め済みの月が必要です。",
              "pattern": "^[0-9]{4}-[0-9]{2}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "example": "month,product_id,device_id,first_seen_utc,last_seen_utc\n",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "使用量をエクスポート",
        "x-csv-columns": [
          "month",
          "product_id",
          "device_id",
          "first_seen_utc",
          "last_seen_utc"
        ],
        "x-management-reference": {
          "group": "usage"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/validate": {
      "post": {
        "description": "product_id + license_key + device_id で認証します。Cookie／CSRF／ベンダーキーは不要です。activate を除き activation_id が必要です。成功した各リクエストは API 呼び出しを 1 回消費し、冪等な再実行と失敗は消費しません。超過分はウォレットからアトミックに引き落とされるか、API_QUOTA_EXCEEDED/API_BALANCE_INSUFFICIENT を返します。検証とハートビートの再試行レシートは 3600 秒後に期限切れになります。元の認可が有効な間、この時間内の一致するリクエストは追加の引き落としなく再実行されます。時間経過後は新しいキーを使用してください。使用済みキーは新規リクエストとして処理されることがあります。アクティベーション、非アクティベーション、機能使用のレシートは永続的に保持されます。ワークスペースのデバイス枠は現在のアクティベーションに従います。解放すると枠が戻り、フローティングリースの期限切れでも枠が戻りますが、オフラインの通常登録は引き続きカウントされます。デバイス超過料金は枠の月の請求ピークが支払い済み容量を超えて増加した場合にのみ請求され、解放しても発生済み料金は返金されません。API 使用量は別です。",
        "operationId": "post_api_v1_validate",
        "parameters": [
          {
            "description": "操作ごとに新しいキーを生成し、再試行では同じキーと本文を使用します。最大 80 文字、空白不可。検証とハートビートでは任意です。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RuntimeResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "ランタイムの検証"
      }
    },
    "/api/v1/webhook-deliveries/{id}/attempts": {
      "get": {
        "operationId": "get_api_v1_webhook-deliveries_by_id_attempts",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": null
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AttemptList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "配信試行一覧",
        "x-management-reference": {
          "group": "webhooks"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/webhook-deliveries/{id}/retry": {
      "post": {
        "operationId": "post_api_v1_webhook-deliveries_by_id_retry",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Webhook 配信を再試行",
        "x-management-reference": {
          "group": "webhooks"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/webhooks": {
      "get": {
        "operationId": "get_api_v1_webhooks",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "event_types": [],
                    "items": [
                      {
                        "created_at": "2026-10-18T00:00:00Z",
                        "enabled": true,
                        "events": [],
                        "id": "33333333-3333-4333-8333-333333333333",
                        "name": "Report app",
                        "updated_at": "2026-10-18T00:00:00Z",
                        "url": "https://merchant.example.com/license-events"
                      }
                    ]
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicensingWebhookList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Webhook 一覧",
        "x-management-reference": {
          "group": "webhooks"
        },
        "x-required-scope": "read"
      },
      "post": {
        "operationId": "post_api_v1_webhooks",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "enabled": true,
                "events": [
                  "license.created",
                  "license.renewed"
                ],
                "name": "Order system",
                "url": "https://merchant.example.com/license-events"
              },
              "schema": {
                "$ref": "#/components/schemas/LicensingWebhookInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "secret": "whsec_BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicensingWebhookSecret",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Webhook を保存",
        "x-management-reference": {
          "group": "webhooks"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/webhooks/{id}/deliveries": {
      "get": {
        "operationId": "get_api_v1_webhooks_by_id_deliveries",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "このリソースの一意 ID。パスには対応するリソース ID を使用します。",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "ページサイズ。デフォルト 25、範囲 1–100。",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "スキップするレコード数。デフォルト 0、範囲 0–100000。次のページには limit を加算します。",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": null,
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/DeliveryList",
                      "description": "成功時の業務結果。失敗時は代わりに error を使用します。"
                    },
                    "request_id": {
                      "description": "トップレベルの HTTP トレース UUID。一括処理／オンボーディング入力では呼び出し元が生成する冪等性 UUID であり、用途は異なります。",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Webhook 配信一覧",
        "x-management-reference": {
          "group": "webhooks"
        },
        "x-required-scope": "read"
      }
    },
    "/healthz": {
      "get": {
        "operationId": "get_healthz",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Health"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          }
        },
        "security": [],
        "summary": "プロセスの生存確認"
      }
    },
    "/readyz": {
      "get": {
        "operationId": "get_readyz",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Health"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "docs/error-codes.md を参照。適用範囲はエンドポイントごとに異なります。"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "データベースを利用できません"
          }
        },
        "security": [],
        "summary": "データベースの準備状態"
      }
    }
  },
  "servers": [
    {
      "url": "https://www.licentivo.com"
    }
  ]
}
