{
  "components": {
    "examples": {
      "ProjectApiKeyResource": {
        "summary": "リソース操作APIキー",
        "value": {
          "access_token": "********",
          "created_at": "2024-05-01T14:30:00Z",
          "description": "通常のリソース操作用",
          "iam_roles": [
            "viewer",
            "editor",
            "admin"
          ],
          "id": 111222333444,
          "name": "リソース操作APIキー",
          "project_id": 123456789123,
          "server_resource_id": null,
          "updated_at": "2024-05-02T14:30:00Z",
          "zone_id": null
        }
      },
      "ProjectApiKeyResourceWithSecret": {
        "summary": "リソース操作APIキー（シークレットあり）",
        "value": {
          "access_token": "********",
          "access_token_secret": "********",
          "created_at": "2024-05-01T14:30:00Z",
          "description": "通常のリソース操作用",
          "iam_roles": [
            "viewer",
            "editor",
            "admin"
          ],
          "id": 111222333444,
          "name": "リソース操作APIキー",
          "project_id": 123456789123,
          "server_resource_id": null,
          "updated_at": "2024-05-02T14:30:00Z",
          "zone_id": null
        }
      },
      "ProjectApiKeySingleServer": {
        "summary": "シングルサーバAPIキー",
        "value": {
          "access_token": "********",
          "created_at": "2024-05-01T14:30:00Z",
          "description": "シングルサーバコントロールパネル用",
          "iam_roles": [
            "viewer",
            "editor",
            "admin"
          ],
          "id": 222333444555,
          "name": "シングルサーバAPIキー",
          "project_id": 123456789123,
          "server_resource_id": "321987654321",
          "updated_at": "2024-05-02T14:30:00Z",
          "zone_id": "is1a"
        }
      },
      "ProjectApiKeySingleServerWithSecret": {
        "summary": "シングルサーバAPIキー（シークレットあり）",
        "value": {
          "access_token": "********",
          "access_token_secret": "********",
          "created_at": "2024-05-01T14:30:00Z",
          "description": "シングルサーバコントロールパネル用",
          "iam_roles": [
            "viewer",
            "editor",
            "admin"
          ],
          "id": 222333444555,
          "name": "シングルサーバAPIキー",
          "project_id": 123456789123,
          "server_resource_id": "321987654321",
          "updated_at": "2024-05-02T14:30:00Z",
          "zone_id": "is1a"
        }
      }
    },
    "parameters": {
      "FolderID": {
        "description": "フォルダID",
        "in": "path",
        "name": "folder_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "GroupID": {
        "description": "グループID",
        "in": "path",
        "name": "group_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "IamRoleID": {
        "description": "IAMロールID",
        "in": "path",
        "name": "iam_role_id",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "IdRoleID": {
        "description": "IDロールID",
        "in": "path",
        "name": "id_role_id",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "PaginationPage": {
        "in": "query",
        "name": "page",
        "schema": {
          "type": "integer"
        }
      },
      "PaginationPerPage": {
        "in": "query",
        "name": "per_page",
        "schema": {
          "type": "integer"
        }
      },
      "ProjectApiKeyID": {
        "description": "APIキーID",
        "in": "path",
        "name": "apikey_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "ProjectID": {
        "description": "プロジェクトID",
        "in": "path",
        "name": "project_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "SSOProfileID": {
        "description": "SSOプロファイルID",
        "in": "path",
        "name": "sso_profile_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "SecurityKeyID": {
        "description": "セキュリティキーID",
        "in": "path",
        "name": "security_key_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "ServicePrincipalID": {
        "description": "サービスプリンシパルID",
        "in": "path",
        "name": "service_principal_id",
        "required": true,
        "schema": {
          "example": 123456789123,
          "type": "integer"
        }
      },
      "ServicePrincipalKeyID": {
        "description": "サービスプリンシパルキーID",
        "in": "path",
        "name": "service_principal_key_id",
        "required": true,
        "schema": {
          "example": "00000000-0000-0000-0000-000000000000",
          "format": "uuid",
          "type": "string"
        }
      },
      "TrustedDeviceID": {
        "description": "ユーザID",
        "in": "path",
        "name": "trusted_device_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "UserID": {
        "description": "ユーザID",
        "in": "path",
        "name": "user_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      }
    },
    "schemas": {
      "AuthConditions": {
        "properties": {
          "datetime_restriction": {
            "properties": {
              "after": {
                "description": "日時がこの時間より後であることを要求 (ISO 8601形式; デフォルトは未設定 (`null`))",
                "example": "2025-09-01T00:00:00+09:00",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "before": {
                "description": "日時がこの時間より前であることを要求 (ISO 8601形式; デフォルトは未設定 (`null`))",
                "example": "2025-10-01T00:00:00+09:00",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              }
            },
            "required": [
              "after",
              "before"
            ],
            "type": "object"
          },
          "ip_restriction": {
            "description": "認証を許可するIPサブネットワーク (デフォルトはすべて許可)",
            "oneOf": [
              {
                "properties": {
                  "mode": {
                    "description": "allow_all = すべて許可\nallow_list = source_networkで許可リスト指定\n",
                    "enum": [
                      "allow_all"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              {
                "properties": {
                  "mode": {
                    "description": "allow_all = すべて許可\nallow_list = source_networkで許可リスト指定\n",
                    "enum": [
                      "allow_list"
                    ],
                    "type": "string"
                  },
                  "source_network": {
                    "description": "modeがallow_listの場合のみ必須",
                    "items": {
                      "description": "IPv4のCIDR表記",
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            ],
            "required": [
              "mode"
            ],
            "type": "object"
          },
          "require_two_factor_auth": {
            "example": {
              "enabled": false
            },
            "properties": {
              "enabled": {
                "description": "2要素認証によるログインを必須とするかどうか (デフォルトは `false`)",
                "type": "boolean"
              }
            },
            "required": [
              "enabled"
            ],
            "type": "object"
          }
        },
        "required": [
          "ip_restriction",
          "require_two_factor_auth",
          "datetime_restriction"
        ],
        "type": "object"
      },
      "Folder": {
        "properties": {
          "created_at": {
            "description": "作成日時",
            "example": "2024-05-01T14:30:00Z",
            "readOnly": true,
            "type": "string"
          },
          "description": {
            "description": "フォルダの説明",
            "example": "My Sakura Folder description",
            "type": "string"
          },
          "id": {
            "description": "フォルダID",
            "example": 1,
            "readOnly": true,
            "type": "integer"
          },
          "name": {
            "description": "フォルダ名",
            "example": "フォルダ名",
            "type": "string"
          },
          "parent_id": {
            "default": null,
            "description": "親フォルダID",
            "example": 1,
            "nullable": true,
            "type": "integer"
          },
          "updated_at": {
            "description": "更新日時",
            "example": "2024-05-02T14:30:00Z",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "name",
          "parent_id",
          "description",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "Group": {
        "properties": {
          "created_at": {
            "description": "作成日時",
            "example": "2024-05-02T16:32:23Z",
            "readOnly": true,
            "type": "string"
          },
          "description": {
            "description": "グループの説明",
            "example": "グループの説明",
            "type": "string"
          },
          "id": {
            "description": "グループID",
            "example": 1,
            "readOnly": true,
            "type": "integer"
          },
          "name": {
            "description": "グループ名",
            "example": "グループの名前",
            "type": "string"
          },
          "updated_at": {
            "description": "更新日時",
            "example": "2024-05-02T16:32:23Z",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "GroupMemberships": {
        "properties": {
          "compat_users": {
            "items": {
              "properties": {
                "id": {
                  "description": "ユーザID",
                  "example": 111111111111,
                  "type": "integer"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "compat_users"
        ],
        "type": "object"
      },
      "Http400BadRequest": {
        "properties": {
          "detail": {
            "description": "問題の詳細を説明した文字列（人が読んで問題解決に繋がるような説明）",
            "example": "不正な入力です。",
            "type": "string"
          },
          "errors": {
            "additionalProperties": {
              "description": "リクエストボディの特定キーに関するエラー",
              "items": {
                "properties": {
                  "code": {
                    "description": "エラーの内容を表す文字列",
                    "type": "string"
                  },
                  "message": {
                    "description": "エラー内容を説明した文字列",
                    "type": "string"
                  }
                },
                "required": [
                  "message",
                  "code"
                ],
                "type": "object"
              },
              "type": "array"
            },
            "example": {
              "key1": [
                {
                  "code": "required",
                  "message": "この項目は必須です。"
                }
              ],
              "key2": [
                {
                  "code": "invalid",
                  "message": "有効な値ではありません。"
                }
              ],
              "key3": [
                {
                  "code": "min_length",
                  "message": "この項目は少なくとも*文字以上にしてください。"
                }
              ],
              "key4": [
                {
                  "code": "max_length",
                  "message": "この項目が*文字より長くならないようにしてください。"
                }
              ]
            },
            "properties": {
              "non_field_errors": {
                "description": "リクエストボディの特定キーに関係しないエラー",
                "items": {
                  "properties": {
                    "code": {
                      "description": "エラーの内容を表す文字列",
                      "type": "string"
                    },
                    "message": {
                      "description": "エラー内容を説明した文字列",
                      "type": "string"
                    }
                  },
                  "required": [
                    "message",
                    "code"
                  ],
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "status": {
            "description": "HTTPステータスコード",
            "example": 400,
            "type": "integer"
          },
          "title": {
            "description": "問題を表す簡単な文字列",
            "example": "invalid",
            "type": "string"
          },
          "type": {
            "description": "問題を説明するドキュメントへのURI（基本的にはabout:blank）",
            "example": "about:blank",
            "type": "string"
          }
        },
        "required": [
          "type",
          "status",
          "title",
          "detail",
          "errors"
        ],
        "type": "object"
      },
      "Http401Unauthorized": {
        "properties": {
          "detail": {
            "description": "問題の詳細を説明した文字列（人が読んで問題解決に繋がるような説明）",
            "example": "認証情報が含まれていません。",
            "type": "string"
          },
          "status": {
            "description": "HTTPステータスコード",
            "example": 401,
            "type": "integer"
          },
          "title": {
            "description": "問題を表す簡単な文字列",
            "example": "authentication_failed",
            "type": "string"
          },
          "type": {
            "description": "問題を説明するドキュメントへのURI（基本的にはabout:blank）",
            "example": "about:blank",
            "type": "string"
          }
        },
        "required": [
          "type",
          "status",
          "title",
          "detail"
        ],
        "type": "object"
      },
      "Http403Forbidden": {
        "properties": {
          "detail": {
            "description": "問題の詳細を説明した文字列（人が読んで問題解決に繋がるような説明）",
            "example": "このアクションを実行する権限がありません。",
            "type": "string"
          },
          "status": {
            "description": "HTTPステータスコード",
            "example": 403,
            "type": "integer"
          },
          "title": {
            "description": "問題を表す簡単な文字列",
            "example": "permission_denied",
            "type": "string"
          },
          "type": {
            "description": "問題を説明するドキュメントへのURI（基本的にはabout:blank）",
            "example": "about:blank",
            "type": "string"
          }
        },
        "required": [
          "type",
          "status",
          "title",
          "detail"
        ],
        "type": "object"
      },
      "Http404NotFound": {
        "properties": {
          "detail": {
            "description": "問題の詳細を説明した文字列（人が読んで問題解決に繋がるような説明）",
            "example": "見つかりませんでした。",
            "type": "string"
          },
          "status": {
            "description": "HTTPステータスコード",
            "example": 404,
            "type": "integer"
          },
          "title": {
            "description": "問題を表す簡単な文字列",
            "example": "not_found",
            "type": "string"
          },
          "type": {
            "description": "問題を説明するドキュメントへのURI（基本的にはabout:blank）",
            "example": "about:blank",
            "type": "string"
          }
        },
        "required": [
          "type",
          "status",
          "title",
          "detail"
        ],
        "type": "object"
      },
      "Http409Conflict": {
        "properties": {
          "detail": {
            "description": "問題の詳細を説明した文字列（人が読んで問題解決に繋がるような説明）",
            "example": "状態の競合によりリクエストを処理できません。",
            "type": "string"
          },
          "status": {
            "description": "HTTPステータスコード",
            "example": 409,
            "type": "integer"
          },
          "title": {
            "description": "問題を表す簡単な文字列",
            "example": "conflict",
            "type": "string"
          },
          "type": {
            "description": "問題を説明するドキュメントへのURI（基本的にはabout:blank）",
            "example": "about:blank",
            "type": "string"
          }
        },
        "required": [
          "type",
          "status",
          "title",
          "detail"
        ],
        "type": "object"
      },
      "Http429TooManyRequests": {
        "properties": {
          "detail": {
            "description": "問題の詳細を説明した文字列（人が読んで問題解決に繋がるような説明）",
            "example": "リクエストの処理は絞られました。 60秒後に利用可能になります。",
            "type": "string"
          },
          "status": {
            "description": "HTTPステータスコード",
            "example": 429,
            "type": "integer"
          },
          "title": {
            "description": "問題を表す簡単な文字列",
            "example": "throttled",
            "type": "string"
          },
          "type": {
            "description": "問題を説明するドキュメントへのURI（基本的にはabout:blank）",
            "example": "about:blank",
            "type": "string"
          }
        },
        "required": [
          "type",
          "status",
          "title",
          "detail"
        ],
        "type": "object"
      },
      "Http503ServiceUnavailable": {
        "properties": {
          "detail": {
            "description": "問題の詳細を説明した文字列（人が読んで問題解決に繋がるような説明）",
            "example": "一時的にエラーが発生しました。",
            "type": "string"
          },
          "status": {
            "description": "HTTPステータスコード",
            "example": 503,
            "type": "integer"
          },
          "title": {
            "description": "問題を表す簡単な文字列",
            "example": "temporary_unavailable",
            "type": "string"
          },
          "type": {
            "description": "問題を説明するドキュメントへのURI（基本的にはabout:blank）",
            "example": "about:blank",
            "type": "string"
          }
        },
        "required": [
          "type",
          "status",
          "title",
          "detail"
        ],
        "type": "object"
      },
      "IamPolicy": {
        "properties": {
          "principals": {
            "items": {
              "$ref": "#/components/schemas/Principal"
            },
            "type": "array"
          },
          "role": {
            "properties": {
              "id": {
                "description": "IAMロールID",
                "example": "admin",
                "type": "string"
              },
              "type": {
                "enum": [
                  "preset"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "IamRole": {
        "properties": {
          "category": {
            "description": "IAMロールのカテゴリ",
            "example": "apprun",
            "type": "string"
          },
          "description": {
            "description": "IAMロールの説明",
            "example": "管理者権限のIAMロール",
            "type": "string"
          },
          "id": {
            "description": "IAMロールID",
            "example": "viewer",
            "readOnly": true,
            "type": "string"
          },
          "lowest_grantable_resource": {
            "description": "このIAMロールを付与可能な最低階層。\n* `\"organization\"` - 組織\n* `\"folder\"` - フォルダ\n* `\"project\"` - プロジェクト\n",
            "enum": [
              "organization",
              "folder",
              "project"
            ],
            "example": "folder",
            "type": "string"
          },
          "name": {
            "description": "IAMロール名",
            "example": "管理者",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "category",
          "lowest_grantable_resource"
        ],
        "type": "object"
      },
      "IdPolicy": {
        "properties": {
          "principals": {
            "items": {
              "$ref": "#/components/schemas/Principal"
            },
            "type": "array"
          },
          "role": {
            "properties": {
              "id": {
                "description": "IDロールID",
                "example": "identity-admin",
                "type": "string"
              },
              "type": {
                "enum": [
                  "preset"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "IdRole": {
        "properties": {
          "description": {
            "description": "IDロールの説明",
            "example": "管理者権限のIDロール",
            "type": "string"
          },
          "id": {
            "description": "IDロールID",
            "example": "identity-admin",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "IDロール名",
            "example": "ID管理者",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "description"
        ],
        "type": "object"
      },
      "MoveFolders": {
        "properties": {
          "folder_ids": {
            "description": "移動するフォルダID",
            "example": [
              1,
              2,
              3,
              4,
              5
            ],
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "parent_id": {
            "description": "移動先のフォルダID",
            "example": 1,
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "folder_ids",
          "parent_id"
        ],
        "type": "object"
      },
      "MoveProjects": {
        "properties": {
          "parent_folder_id": {
            "description": "移動先のフォルダID",
            "example": 1,
            "nullable": true,
            "type": "integer"
          },
          "project_ids": {
            "description": "移動するプロジェクトID",
            "example": [
              1,
              2,
              3
            ],
            "items": {
              "type": "integer"
            },
            "type": "array"
          }
        },
        "required": [
          "project_ids",
          "parent_folder_id"
        ],
        "type": "object"
      },
      "Organization": {
        "properties": {
          "id": {
            "description": "組織のリソースID",
            "example": 123456789123,
            "readOnly": true,
            "type": "integer"
          },
          "name": {
            "description": "組織名",
            "example": "組織名",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "Pagination": {
        "properties": {
          "count": {
            "description": "データ総数",
            "example": 100,
            "type": "integer"
          },
          "next": {
            "description": "次のページへのURL",
            "example": "https://api.example.com/?page=3\u0026per_page=10",
            "format": "uri",
            "nullable": true,
            "type": "string"
          },
          "previous": {
            "description": "前のページへのURL",
            "example": "https://api.example.com/?per_page=10",
            "format": "uri",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "count",
          "next",
          "previous"
        ],
        "type": "object"
      },
      "PasswordPolicy": {
        "properties": {
          "min_length": {
            "description": "パスワードの最小文字数 (8文字以上64文字以下; デフォルトは`8`)",
            "example": 8,
            "type": "integer"
          },
          "require_lowercase": {
            "description": "小文字を必須とするか (デフォルトは`false`)\n`false` であっても英字自体は必須\n",
            "example": false,
            "type": "boolean"
          },
          "require_symbols": {
            "description": "記号を必須とするか (デフォルトは`false`)",
            "example": false,
            "type": "boolean"
          },
          "require_uppercase": {
            "description": "大文字を必須とするか (デフォルトは`false`)\n`false` であっても英字自体は必須\n",
            "example": false,
            "type": "boolean"
          }
        },
        "required": [
          "min_length",
          "require_uppercase",
          "require_lowercase",
          "require_symbols"
        ],
        "type": "object"
      },
      "Principal": {
        "properties": {
          "id": {
            "description": "プリンシパルのID",
            "example": 111111111111,
            "type": "integer"
          },
          "type": {
            "description": "プリンシパルのタイプ",
            "example": "user",
            "type": "string"
          }
        },
        "type": "object"
      },
      "Project": {
        "properties": {
          "code": {
            "description": "プロジェクトコード",
            "example": "my-sakura-project-code",
            "maxLength": 64,
            "type": "string"
          },
          "created_at": {
            "description": "作成日時",
            "example": "2024-05-01T14:30:00Z",
            "type": "string"
          },
          "description": {
            "description": "プロジェクトの説明",
            "example": "My Sakura Project description",
            "type": "string"
          },
          "id": {
            "description": "プロジェクトID",
            "example": 111111111111,
            "readOnly": true,
            "type": "integer"
          },
          "name": {
            "description": "プロジェクトの名前",
            "example": "My Sakura Project",
            "type": "string"
          },
          "parent_folder_id": {
            "description": "親フォルダID",
            "example": 1,
            "nullable": true,
            "readOnly": true,
            "type": "integer"
          },
          "status": {
            "description": "プロジェクトのステータス",
            "enum": [
              "available"
            ],
            "example": "available",
            "readOnly": true,
            "type": "string"
          },
          "updated_at": {
            "description": "更新日時",
            "example": "2024-05-02T16:32:23Z",
            "type": "string"
          }
        },
        "required": [
          "id",
          "code",
          "name",
          "description",
          "status",
          "created_at",
          "updated_at",
          "parent_folder_id"
        ],
        "type": "object"
      },
      "ProjectApiKey": {
        "properties": {
          "access_token": {
            "description": "アクセストークン",
            "example": "********",
            "type": "string"
          },
          "created_at": {
            "description": "作成日時",
            "example": "2024-05-01T14:30:00Z",
            "type": "string"
          },
          "description": {
            "description": "APIキーの説明",
            "example": "通常のリソース操作用",
            "type": "string"
          },
          "iam_roles": {
            "description": "IAMのロール。",
            "example": [
              "viewer",
              "editor",
              "admin"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "APIキーID",
            "example": 111222333444,
            "readOnly": true,
            "type": "integer"
          },
          "name": {
            "description": "APIキー名",
            "example": "リソース操作APIキー",
            "type": "string"
          },
          "project_id": {
            "description": "プロジェクトID",
            "example": 123456789123,
            "type": "integer"
          },
          "server_resource_id": {
            "description": "APIキーがシングルサーバコントロールパネルで利用される場合は必須。",
            "example": null,
            "nullable": true,
            "type": "string"
          },
          "updated_at": {
            "description": "更新日時",
            "example": "2024-05-02T14:30:00Z",
            "type": "string"
          },
          "zone_id": {
            "description": "ゾーンを指定。APIキーがシングルサーバコントロールパネルで利用される場合は必須。",
            "example": null,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "id",
          "project_id",
          "name",
          "description",
          "access_token",
          "iam_roles"
        ],
        "type": "object"
      },
      "ProjectApiKeyWithSecret": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProjectApiKey"
          },
          {
            "properties": {
              "access_token_secret": {
                "description": "アクセストークンシークレット",
                "example": "********",
                "type": "string"
              }
            },
            "required": [
              "access_token_secret"
            ],
            "type": "object"
          }
        ]
      },
      "Rule": {
        "allOf": [
          {
            "properties": {
              "code": {
                "description": "ルールテンプレートのコード",
                "type": "string"
              },
              "dry_run_spec": {
                "$ref": "#/components/schemas/RuleSpec"
              },
              "spec": {
                "$ref": "#/components/schemas/RuleSpec"
              }
            },
            "type": "object"
          },
          {
            "$ref": "#/components/schemas/RuleStatus"
          }
        ],
        "required": [
          "code",
          "is_active",
          "is_dry_run"
        ],
        "type": "object"
      },
      "RuleContent": {
        "properties": {
          "allow_all": {
            "description": "すべての値を許可する。リスト型ルールの場合のみ設定可能。",
            "type": "boolean"
          },
          "deny_all": {
            "description": "すべての値を許可する。リスト型ルールの場合のみ設定可能。",
            "type": "boolean"
          },
          "enforce": {
            "description": "ブール型ルールを強制するかどうか",
            "type": "boolean"
          },
          "values": {
            "properties": {
              "allowed_values": {
                "description": "許可する値のリスト",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "denied_values": {
                "description": "拒否する値のリスト",
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "RuleResponse": {
        "allOf": [
          {
            "properties": {
              "code": {
                "description": "ルールテンプレートのコード",
                "type": "string"
              },
              "dry_run_spec": {
                "$ref": "#/components/schemas/RuleSpec"
              },
              "name": {
                "description": "ルール名",
                "example": "Example Rule",
                "type": "string"
              },
              "spec": {
                "$ref": "#/components/schemas/RuleSpec"
              }
            },
            "type": "object"
          },
          {
            "$ref": "#/components/schemas/RuleStatus"
          }
        ]
      },
      "RuleSpec": {
        "description": "spec, dry_run_specのどちらか一方は必須",
        "properties": {
          "contents": {
            "items": {
              "$ref": "#/components/schemas/RuleContent"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "RuleStatus": {
        "properties": {
          "is_active": {
            "description": "ルールが有効かどうか",
            "example": true,
            "type": "boolean"
          },
          "is_dry_run": {
            "description": "ルールがドライランかどうか",
            "example": false,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "RuleTemplate": {
        "properties": {
          "code": {
            "description": "ルールテンプレートコード",
            "example": "example.template.code",
            "type": "string"
          },
          "description": {
            "description": "ルールテンプレートの説明",
            "example": "ルールテンプレートの説明",
            "type": "string"
          },
          "name": {
            "description": "ルールテンプレート名",
            "example": "ルールテンプレート1",
            "type": "string"
          },
          "prefixes": {
            "description": "ルールテンプレートのプレフィックス",
            "example": [
              "is"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "supports_dry_run": {
            "description": "ドライランがサポートされているかどうか",
            "example": true,
            "type": "boolean"
          },
          "type": {
            "description": "ルールテンプレートのタイプ",
            "example": "boolean",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SSOProfile": {
        "properties": {
          "assigned": {
            "description": "このプロファイルを割り当ているかどうか",
            "readOnly": true,
            "type": "boolean"
          },
          "created_at": {
            "description": "作成日時",
            "example": "2024-05-01T14:30:00Z",
            "readOnly": true,
            "type": "string"
          },
          "description": {
            "description": "SSOプロファイルの説明",
            "example": "SSOプロファイル1の説明",
            "type": "string"
          },
          "id": {
            "description": "SSOプロファイルID",
            "example": 1,
            "readOnly": true,
            "type": "integer"
          },
          "idp_certificate": {
            "description": "IdPのX.509証明書",
            "example": "-----BEGIN CERTIFICATE-----\nMIIDqjCCApKgAwIBA\u003csnip\u003e\n-----END CERTIFICATE-----",
            "type": "string"
          },
          "idp_entity_id": {
            "description": "IdPのエンティティID",
            "example": "https://idp.example.com/ile2ephei7saeph6",
            "type": "string"
          },
          "idp_login_url": {
            "description": "IdPのログインURL",
            "example": "https://idp.example.com/ile2ephei7saeph6/sso/login",
            "type": "string"
          },
          "idp_logout_url": {
            "description": "IdPのログアウトURL",
            "example": "https://idp.example.com/ile2ephei7saeph6/sso/logout",
            "type": "string"
          },
          "name": {
            "description": "SSOプロファイル名",
            "example": "SSOプロファイル1",
            "type": "string"
          },
          "sp_acs_url": {
            "description": "SPのAssertion Consumer Service URL",
            "example": "https://sp.example.com/samlrp/ang5eizeevahvooy/acs",
            "readOnly": true,
            "type": "string"
          },
          "sp_entity_id": {
            "description": "SPのエンティティID",
            "example": "https://sp.example.com/samlrp/ang5eizeevahvooy",
            "readOnly": true,
            "type": "string"
          },
          "updated_at": {
            "description": "更新日時",
            "example": "2024-05-02T14:30:00Z",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "sp_entity_id",
          "sp_acs_url",
          "idp_entity_id",
          "idp_login_url",
          "idp_logout_url",
          "idp_certificate",
          "assigned",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "ScimConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ScimConfigurationBase"
          },
          {
            "properties": {
              "secret_token": {
                "description": "ユーザープロビジョニングの認証に使用するシークレットトークン",
                "example": "your_secret_token",
                "readOnly": true,
                "type": "string"
              }
            },
            "required": [
              "secret_token"
            ],
            "type": "object"
          }
        ]
      },
      "ScimConfigurationBase": {
        "properties": {
          "base_url": {
            "description": "ユーザープロビジョニングエンドポイントのベースURL（ユーザープロビジョニングIDを含む）",
            "example": "https://secure.sakura.ad.jp/cloud/api/iam/1.0/scim/550e8400-e29b-41d4-a716-446655440000/v2/",
            "format": "uri",
            "readOnly": true,
            "type": "string"
          },
          "created_at": {
            "description": "作成日時",
            "example": "2024-05-01T14:30:00Z",
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "description": "ユーザープロビジョニングID",
            "format": "uuid",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "ユーザープロビジョニング名",
            "example": "MicrosoftEntraID",
            "type": "string"
          },
          "updated_at": {
            "description": "更新日時",
            "example": "2024-05-02T14:30:00Z",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "base_url",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "ScimConfigurationPublic": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ScimConfigurationBase"
          }
        ]
      },
      "ServicePrincipal": {
        "properties": {
          "created_at": {
            "description": "作成日時",
            "example": "2024-05-01T14:30:00Z",
            "type": "string"
          },
          "description": {
            "description": "サービスプリンシパルの説明",
            "example": "サービスプリンシパルの説明",
            "type": "string"
          },
          "id": {
            "description": "サービスプリンシパルID",
            "example": 1,
            "readOnly": true,
            "type": "integer"
          },
          "name": {
            "description": "サービスプリンシパル名",
            "example": "Sakura Service Principal",
            "type": "string"
          },
          "project_id": {
            "description": "プロジェクトID",
            "example": 1,
            "type": "integer"
          },
          "updated_at": {
            "description": "更新日時",
            "example": "2024-05-02T14:30:00Z",
            "type": "string"
          }
        },
        "required": [
          "id",
          "project_id",
          "name",
          "description"
        ],
        "type": "object"
      },
      "ServicePrincipalJWTGrantRequest": {
        "properties": {
          "assertion": {
            "description": "サービスプリンシパルキーで署名されたJWT",
            "example": "eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk",
            "type": "string"
          },
          "grant_type": {
            "description": "固定値 JWT Bearer Grant Type",
            "enum": [
              "urn:ietf:params:oauth:grant-type:jwt-bearer"
            ],
            "example": "urn:ietf:params:oauth:grant-type:jwt-bearer",
            "type": "string"
          }
        },
        "required": [
          "grant_type",
          "assertion"
        ],
        "type": "object"
      },
      "ServicePrincipalKey": {
        "properties": {
          "created_at": {
            "description": "作成日時",
            "example": "2024-05-01T14:30:00Z",
            "type": "string"
          },
          "id": {
            "description": "サービスプリンシパルキーID",
            "example": "00000000-0000-0000-0000-000000000000",
            "format": "uuid",
            "readOnly": true,
            "type": "string"
          },
          "key_expires_at": {
            "description": "有効期限",
            "example": "2024-05-01T14:30:00Z",
            "nullable": true,
            "type": "string"
          },
          "key_origin": {
            "description": "鍵の生成元\n",
            "enum": [
              "user"
            ],
            "example": "user",
            "readOnly": true,
            "type": "string"
          },
          "kid": {
            "description": "公開鍵のkid",
            "example": "1234567890abcdef1234567890abcdef12345678",
            "readOnly": true,
            "type": "string"
          },
          "public_key": {
            "$ref": "#/components/schemas/ServiceprincipalKeyPublicKey"
          },
          "status": {
            "description": "サービスプリンシパルキーの状態\n* enabled 有効\n* disabled 無効\n",
            "enum": [
              "enabled",
              "disabled"
            ],
            "example": "enabled",
            "type": "string"
          }
        },
        "required": [
          "id",
          "kid",
          "status",
          "key_origin",
          "public_key",
          "created_at"
        ],
        "type": "object"
      },
      "ServicePrincipalOAuth2AccessToken": {
        "properties": {
          "access_token": {
            "description": "アクセストークン",
            "example": "abcdefghijklmnopqrstuvwxyz0123456789-._~+/ABCDEFGHIJKLMN",
            "type": "string"
          },
          "expires_in": {
            "description": "アクセストークンの有効期限（秒単位）",
            "example": 3600,
            "type": "integer"
          },
          "token_expired_at": {
            "description": "アクセストークンの有効期限 (ISO 8601形式)",
            "example": "2021-01-01T00:00:01+09:00",
            "format": "date-time",
            "type": "string"
          },
          "token_type": {
            "description": "トークンの種類",
            "example": "Bearer",
            "type": "string"
          }
        },
        "required": [
          "access_token",
          "token_expired_at"
        ],
        "type": "object"
      },
      "ServiceprincipalKeyPublicKey": {
        "description": "PEM形式の公開鍵文字列\nRSA鍵のみをサポート\n鍵長は2048ビット以上かつ4096ビット以下をサポート\n",
        "example": "BEGIN PUBLIC KEY\\n...\\nEND PUBLIC KEY",
        "type": "string"
      },
      "User": {
        "properties": {
          "code": {
            "description": "ユーザコード",
            "example": "user_code",
            "readOnly": true,
            "type": "string"
          },
          "created_at": {
            "description": "作成日時",
            "example": "2024-05-02T16:32:23Z",
            "readOnly": true,
            "type": "string"
          },
          "description": {
            "description": "ユーザの説明",
            "example": "ユーザの説明",
            "type": "string"
          },
          "email": {
            "description": "メールアドレス",
            "example": "user@example.com",
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "description": "ユーザID",
            "example": 111111111111,
            "readOnly": true,
            "type": "integer"
          },
          "is_passwordless": {
            "description": "パスワードレス認証かどうか",
            "example": false,
            "readOnly": true,
            "type": "boolean"
          },
          "is_security_key_registered": {
            "description": "セキュリティキーを登録済みかどうか",
            "type": "boolean"
          },
          "member": {
            "properties": {
              "code": {
                "description": "会員ID(xxx00000)",
                "example": "abc01234",
                "type": "string"
              },
              "id": {
                "description": "会員のID",
                "example": 1,
                "type": "integer"
              }
            },
            "readOnly": true,
            "required": [
              "id",
              "code"
            ],
            "type": "object"
          },
          "name": {
            "description": "ユーザ名",
            "example": "ユーザの名前",
            "type": "string"
          },
          "otp": {
            "properties": {
              "has_recovery_code": {
                "description": "リカバリーコード作成済みかどうか",
                "example": false,
                "type": "boolean"
              },
              "status": {
                "description": "OTP設定状態\n* deactivated OTP無効状態\n* activated OTP有効状態\n* activating OTP有効化中\n",
                "enum": [
                  "deactivated",
                  "activated",
                  "activating"
                ],
                "example": "deactivated",
                "type": "string"
              }
            },
            "required": [
              "status",
              "has_recovery_code"
            ],
            "type": "object"
          },
          "status": {
            "description": "ユーザのステータス",
            "enum": [
              "available"
            ],
            "example": "available",
            "readOnly": true,
            "type": "string"
          },
          "updated_at": {
            "description": "更新日時",
            "example": "2024-05-02T16:32:23Z",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "id",
          "member",
          "name",
          "code",
          "status",
          "description",
          "otp",
          "is_security_key_registered",
          "email",
          "is_passwordless",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "UserSecurityKey": {
        "properties": {
          "aaguid": {
            "description": "セキュリティキーの識別子",
            "example": "a25342c0-3cdc-4414-8e46-f4807fca511c",
            "type": "string"
          },
          "id": {
            "description": "セキュリティキーID",
            "minimum": 1,
            "type": "integer"
          },
          "last_used_at": {
            "description": "最終使用日時",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "セキュリティキー名",
            "example": "ユーザが任意に設定する名前",
            "type": "string"
          },
          "registered_at": {
            "description": "登録日時",
            "format": "date-time",
            "type": "string"
          },
          "sign_count": {
            "description": "使用回数",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name",
          "sign_count",
          "aaguid",
          "registered_at",
          "last_used_at"
        ],
        "type": "object"
      },
      "UserTrustedDevice": {
        "properties": {
          "created_at": {
            "description": "作成日時",
            "example": "2021-01-01T00:00:01+09:00",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "ユーザの信頼済みデバイスID",
            "example": 1,
            "type": "integer"
          },
          "name": {
            "description": "名前",
            "example": "xxxxxxxx",
            "maxLength": 32,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "created_at"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "ProjectApiKeyAuth": {
        "description": "APIキー認証\n- ユーザー名に発行したAPIキーのアクセストークンを指定\n- パスワードに発行したAPIキーのアクセストークンシークレットを指定\n",
        "scheme": "basic",
        "type": "http"
      },
      "ServicePrincipalAuth": {
        "description": "サービスプリンシパル認証\n- サービスプリンシパルのアクセストークンを指定\n",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "contact": {
      "name": "SAKURA internet Inc."
    },
    "description": "さくらのクラウドIAMのAPIドキュメントです",
    "title": "さくらのクラウドIAM API",
    "version": "2.1.0"
  },
  "openapi": "3.0.3",
  "paths": {
    "/auth/context": {
      "get": {
        "description": "APIキー・サービスプリンシパルの属性情報を取得する。usacloudなどOSSプロダクトからの利用を想定としたAPI。",
        "operationId": "readAuthContext",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "auth_type": {
                      "description": "認証種別。APIキーまたはサービスプリンシパル。",
                      "enum": [
                        "apikey",
                        "service_principal"
                      ],
                      "nullable": false,
                      "type": "string"
                    },
                    "limited_to_project_id": {
                      "description": "操作可能なプロジェクトのID。現状、APIキー・サービスプリンシパルが属するプロジェクトのIDが設定されるが、将来的に操作可能なプロジェクトの制限が撤廃された場合にはnullが設定される可能性がある。",
                      "example": 123456789012,
                      "nullable": true,
                      "type": "integer"
                    },
                    "member_code": {
                      "description": "APIキー・サービスプリンシパルに紐づく会員IDを取得する",
                      "example": "aaa00000",
                      "nullable": false,
                      "type": "string"
                    },
                    "resource_id": {
                      "description": "APIキーのIDまたはサービスプリンシパルのID",
                      "example": 987654321098,
                      "format": "int64",
                      "nullable": false,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "resource_id",
                    "auth_type",
                    "limited_to_project_id",
                    "member_code"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "認証情報のコンテキストの取得に成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証に失敗"
          }
        },
        "security": [
          {
            "ProjectApiKeyAuth": []
          },
          {
            "ServicePrincipalAuth": []
          }
        ],
        "summary": "認証情報のコンテキストを取得",
        "tags": [
          "auth"
        ]
      }
    },
    "/compat/api-keys": {
      "get": {
        "description": "サービスプリンシパルによる操作の場合、サービスプリンシパルが所属するプロジェクトとは異なるプロジェクトのAPIキーは操作できません。",
        "operationId": "listApiKeys",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "description": "並び替えキー\n* `name` - APIキー名昇順\n* `-name` - APIキー名降順\n",
            "in": "query",
            "name": "ordering",
            "schema": {
              "enum": [
                "name",
                "-name"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/ProjectApiKey"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "APIキー一覧を取得する",
        "tags": [
          "project-apikey"
        ]
      },
      "post": {
        "description": "サービスプリンシパルによる操作の場合、サービスプリンシパルが所属するプロジェクトとは異なるプロジェクトのAPIキーは操作できません。",
        "operationId": "createApiKey",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "resource-api-key": {
                  "summary": "リソース操作APIキー",
                  "value": {
                    "description": "通常のリソース操作用",
                    "iam_roles": [
                      "admin"
                    ],
                    "name": "リソース操作APIキー",
                    "project_id": 123456789123
                  }
                },
                "single-server-api-key": {
                  "summary": "シングルサーバAPIキー",
                  "value": {
                    "description": "シングルサーバコントロールパネル用",
                    "iam_roles": [
                      "viewer",
                      "editor"
                    ],
                    "name": "シングルサーバAPIキー",
                    "project_id": 123456789123,
                    "server_resource_id": "111222333444",
                    "zone_id": "is1a"
                  }
                }
              },
              "schema": {
                "properties": {
                  "description": {
                    "description": "APIキーの説明",
                    "type": "string"
                  },
                  "iam_roles": {
                    "description": "IAMのロール",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "name": {
                    "description": "APIキー名",
                    "type": "string"
                  },
                  "project_id": {
                    "description": "プロジェクトID",
                    "type": "integer"
                  },
                  "server_resource_id": {
                    "description": "APIキーがシングルサーバコントロールパネルで利用される場合は必須",
                    "type": "string"
                  },
                  "zone_id": {
                    "description": "ゾーンを指定。APIキーがシングルサーバコントロールパネルで利用される場合は必須。",
                    "type": "string"
                  }
                },
                "required": [
                  "project_id",
                  "name",
                  "description",
                  "iam_roles"
                ],
                "type": "object"
              }
            }
          },
          "description": "APIキーの情報",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "resource-api-key": {
                    "$ref": "#/components/examples/ProjectApiKeyResourceWithSecret"
                  },
                  "single-server-api-key": {
                    "$ref": "#/components/examples/ProjectApiKeySingleServerWithSecret"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ProjectApiKeyWithSecret"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "Response1": {
                    "summary": "このアクションを実行する権限がない",
                    "value": {
                      "detail": "このアクションを実行する権限がありません。",
                      "status": 403,
                      "title": "permission_denied",
                      "type": "about:blank"
                    }
                  },
                  "Response2": {
                    "summary": "サービスポリシーを違反した",
                    "value": {
                      "detail": "要求された操作は許可されていません。サービスポリシーを違反しました。\niam-disable-api-key-creationの内容を確認してください。",
                      "status": 403,
                      "title": "permission_denied",
                      "type": "about:blank"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "APIキーを作成する",
        "tags": [
          "project-apikey"
        ]
      }
    },
    "/compat/api-keys/{apikey_id}": {
      "delete": {
        "description": "サービスプリンシパルによる操作の場合、サービスプリンシパルが所属するプロジェクトとは異なるプロジェクトのAPIキーは操作できません。",
        "operationId": "deleteApiKey",
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したAPIキーが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "指定したAPIキーを削除する",
        "tags": [
          "project-apikey"
        ]
      },
      "get": {
        "description": "サービスプリンシパルによる操作の場合、サービスプリンシパルが所属するプロジェクトとは異なるプロジェクトのAPIキーは操作できません。",
        "operationId": "readApiKey",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "resource-api-key": {
                    "$ref": "#/components/examples/ProjectApiKeyResource"
                  },
                  "single-server-api-key": {
                    "$ref": "#/components/examples/ProjectApiKeySingleServer"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ProjectApiKey"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したAPIキーが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したAPIキーを取得する",
        "tags": [
          "project-apikey"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/ProjectApiKeyID"
        }
      ],
      "put": {
        "description": "サービスプリンシパルによる操作の場合、サービスプリンシパルが所属するプロジェクトとは異なるプロジェクトのAPIキーは操作できません。",
        "operationId": "updateApiKey",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "resource-api-key": {
                  "summary": "リソース操作APIキー",
                  "value": {
                    "description": "通常のリソース操作用",
                    "iam_roles": [
                      "admin"
                    ],
                    "name": "リソース操作APIキー"
                  }
                },
                "single-server-api-key": {
                  "summary": "シングルサーバAPIキー",
                  "value": {
                    "description": "シングルサーバコントロールパネル用",
                    "iam_roles": [
                      "viewer",
                      "editor"
                    ],
                    "name": "シングルサーバAPIキー",
                    "server_resource_id": "111222333444",
                    "zone_id": "is1a"
                  }
                }
              },
              "schema": {
                "properties": {
                  "description": {
                    "description": "APIキーの説明",
                    "type": "string"
                  },
                  "iam_roles": {
                    "description": "IAMのロール。",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "name": {
                    "description": "APIキー名",
                    "type": "string"
                  },
                  "server_resource_id": {
                    "description": "APIキーがシングルサーバコントロールパネルで利用される場合のみ変更可能",
                    "type": "string"
                  },
                  "zone_id": {
                    "description": "ゾーンを指定。APIキーがシングルサーバコントロールパネルで利用される場合のみ変更可能",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "description",
                  "iam_roles"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "resource-api-key": {
                    "$ref": "#/components/examples/ProjectApiKeyResource"
                  },
                  "single-server-api-key": {
                    "$ref": "#/components/examples/ProjectApiKeySingleServer"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ProjectApiKey"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したAPIキーが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "指定したAPIキーを更新する",
        "tags": [
          "project-apikey"
        ]
      }
    },
    "/compat/users": {
      "get": {
        "operationId": "listUsers",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "description": "並び替えキー\n* `code` - ユーザコード昇順\n* `-code` - ユーザコード降順\n",
            "in": "query",
            "name": "ordering",
            "schema": {
              "enum": [
                "code",
                "-code"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/User"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザ一覧を取得する",
        "tags": [
          "user"
        ]
      },
      "post": {
        "operationId": "createUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "code": {
                    "description": "ユーザコード",
                    "example": "user_code",
                    "type": "string"
                  },
                  "description": {
                    "example": "ユーザの説明",
                    "type": "string"
                  },
                  "email": {
                    "description": "SSOプロファイル有効時に外部IdPのログインで利用するメールアドレス",
                    "format": "email",
                    "type": "string"
                  },
                  "name": {
                    "description": "ユーザの名前",
                    "example": "ユーザの名前",
                    "type": "string"
                  },
                  "password": {
                    "description": "ユーザのパスワード\n英数字とASCII標準文字における記号 !\"#$%\u0026'()*+,-./:;\u003c=\u003e?@[\\]^_`{|}~ のみ受け付ける\n英字と数字を必ず含める必要がある\n",
                    "example": "********",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "password",
                  "code",
                  "description"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "ユーザコードやメールアドレスの重複"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "ユーザを作成する",
        "tags": [
          "user"
        ]
      }
    },
    "/compat/users/{user_id}": {
      "delete": {
        "operationId": "deleteUser",
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "指定したユーザを削除する",
        "tags": [
          "user"
        ]
      },
      "get": {
        "operationId": "readUser",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したユーザを取得する",
        "tags": [
          "user"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        }
      ],
      "put": {
        "operationId": "updateUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "description": {
                    "example": "ユーザの説明",
                    "type": "string"
                  },
                  "name": {
                    "example": "ユーザの名前",
                    "type": "string"
                  },
                  "password": {
                    "example": "********",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "description"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "指定したユーザを更新する",
        "tags": [
          "user"
        ]
      }
    },
    "/compat/users/{user_id}/clear-trusted-devices": {
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        }
      ],
      "post": {
        "operationId": "clearTrustedDevices",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザの全信頼済みデバイスを削除する",
        "tags": [
          "user-2fa"
        ]
      }
    },
    "/compat/users/{user_id}/deactivate-otp": {
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        }
      ],
      "post": {
        "description": "指定したユーザのワンタイムパスワード認証を無効化します。\n",
        "operationId": "deactivateOtp",
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザのOTPを無効化する",
        "tags": [
          "user-2fa"
        ]
      }
    },
    "/compat/users/{user_id}/register-email": {
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        }
      ],
      "post": {
        "operationId": "registerEmail",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "email": {
                    "description": "メールアドレス",
                    "example": "user@example.com",
                    "type": "string"
                  }
                },
                "required": [
                  "email"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザが存在しない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "メールアドレスが重複している"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザにメールアドレスを登録する",
        "tags": [
          "user"
        ]
      }
    },
    "/compat/users/{user_id}/security-keys": {
      "get": {
        "operationId": "listSecurityKeys",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/UserSecurityKey"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザのセキュリティキー一覧を取得する",
        "tags": [
          "user-2fa"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        }
      ]
    },
    "/compat/users/{user_id}/security-keys/{security_key_id}": {
      "delete": {
        "operationId": "deleteSecurityKey",
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したセキュリティキーが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザのセキュリティキーを削除する",
        "tags": [
          "user-2fa"
        ]
      },
      "get": {
        "operationId": "readSecurityKey",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "Response1": {
                    "summary": "登録直後のレスポンス",
                    "value": {
                      "aaguid": "00000000-0000-0000-0000-000000000000",
                      "id": 1,
                      "last_used_at": null,
                      "name": "",
                      "registered_at": "2025-08-27T10:00:00.123456+09:00",
                      "sign_count": 0
                    }
                  },
                  "Response2": {
                    "summary": "ログイン認証で利用後のレスポンス",
                    "value": {
                      "aaguid": "00000000-0000-0000-0000-000000000000",
                      "id": 1,
                      "last_used_at": "2025-08-27T11:00:00.123456+09:00",
                      "name": "ユーザが設定した名前",
                      "registered_at": "2025-08-27T10:00:00.123456+09:00",
                      "sign_count": 1
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/UserSecurityKey"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したセキュリティキーが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザのセキュリティキーを取得する",
        "tags": [
          "user-2fa"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        },
        {
          "$ref": "#/components/parameters/SecurityKeyID"
        }
      ]
    },
    "/compat/users/{user_id}/trusted-devices": {
      "get": {
        "operationId": "listTrustedDevices",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/UserTrustedDevice"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザの信頼済みデバイス一覧を取得する",
        "tags": [
          "user-2fa"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        }
      ]
    },
    "/compat/users/{user_id}/trusted-devices/{trusted_device_id}": {
      "delete": {
        "operationId": "deleteTrustedDevice",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザの信頼済みデバイスを削除する",
        "tags": [
          "user-2fa"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        },
        {
          "$ref": "#/components/parameters/TrustedDeviceID"
        }
      ]
    },
    "/compat/users/{user_id}/unregister-email": {
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        }
      ],
      "post": {
        "operationId": "unregisterEmail",
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザのメールアドレスを削除する",
        "tags": [
          "user"
        ]
      }
    },
    "/disable-service-policy": {
      "post": {
        "operationId": "disableServicePolicy",
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "サービスポリシーがすでに無効"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "サービスポリシーを無効化する",
        "tags": [
          "service-policy"
        ]
      }
    },
    "/enable-service-policy": {
      "post": {
        "operationId": "enableServicePolicy",
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "サービスポリシーがすでに有効"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "サービスポリシーを有効化する",
        "tags": [
          "service-policy"
        ]
      }
    },
    "/folders": {
      "get": {
        "operationId": "listFolders",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "description": "フォルダ名での絞り込み。",
            "in": "query",
            "name": "folder_name",
            "schema": {
              "example": "フォルダ名",
              "type": "string"
            }
          },
          {
            "description": "親のフォルダIDでの絞り込み。",
            "in": "query",
            "name": "parent_id",
            "schema": {
              "example": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/Folder"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "フォルダ一覧を取得する",
        "tags": [
          "folder"
        ]
      },
      "post": {
        "operationId": "createFolder",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "description": {
                    "description": "フォルダの説明",
                    "example": "My Sakura Folder description",
                    "type": "string"
                  },
                  "name": {
                    "description": "フォルダ名",
                    "example": "本番環境用",
                    "type": "string"
                  },
                  "parent_id": {
                    "default": null,
                    "description": "親フォルダID",
                    "example": 1,
                    "nullable": true,
                    "type": "integer"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Folder"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "DuplicateFolderNames": {
                    "summary": "同じ階層に同じ名前のフォルダを登録できない",
                    "value": {
                      "detail": "同じ階層に同じ名前のフォルダを登録できません。",
                      "errors": {},
                      "status": 400,
                      "title": "duplicate_folder_names",
                      "type": "about:blank"
                    }
                  },
                  "FolderRegistrationLimitOver": {
                    "summary": "フォルダの登録数上限◯◯を超えている",
                    "value": {
                      "detail": "フォルダの登録数上限◯◯を超えています。",
                      "errors": {},
                      "status": 400,
                      "title": "folder_registration_limit_over",
                      "type": "about:blank"
                    }
                  },
                  "ParentIdNotFound": {
                    "summary": "親フォルダが見つからない",
                    "value": {
                      "detail": "親フォルダが見つかりません。",
                      "errors": {},
                      "status": 400,
                      "title": "parant_not_found",
                      "type": "about:blank"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "フォルダを作成する",
        "tags": [
          "folder"
        ]
      }
    },
    "/folders/{folder_id}": {
      "delete": {
        "operationId": "deleteFolder",
        "responses": {
          "204": {
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "FolderIsNotEmpty": {
                    "summary": "削除前に下の階層にフォルダかプロジェクトがあれば削除できない。",
                    "value": {
                      "detail": "下の階層にフォルダまたはプロジェクトがあります。",
                      "errors": {},
                      "status": 400,
                      "title": "exist_dependency_folders_or_projects",
                      "type": "about:blank"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "フォルダが存在しない。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "フォルダを削除する",
        "tags": [
          "folder"
        ]
      },
      "get": {
        "operationId": "readFolder",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Folder"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "特定のフォルダの情報を取得する",
        "tags": [
          "folder"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/FolderID"
        }
      ],
      "put": {
        "operationId": "updateFolder",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "description": {
                    "description": "フォルダの説明",
                    "example": "My Sakura Folder description",
                    "type": "string"
                  },
                  "name": {
                    "description": "フォルダ名",
                    "example": "フォルダ名",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Folder"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "DuplicateFolderNames": {
                    "summary": "同じ階層に同じ名前のフォルダを登録できない",
                    "value": {
                      "detail": "同じ階層に同じ名前のフォルダを登録できません。\nフォルダ名を変更してください。\n",
                      "errors": {},
                      "status": 400,
                      "title": "duplicate_folder_names",
                      "type": "about:blank"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "フォルダが存在しない。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "特定のフォルダの情報を更新する",
        "tags": [
          "folder"
        ]
      }
    },
    "/folders/{folder_id}/iam-policy": {
      "get": {
        "operationId": "readFolderIamPolicy",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "bindings": [
                    {
                      "principals": [
                        {
                          "id": 111111111111,
                          "type": "user"
                        },
                        {
                          "id": 1,
                          "type": "group"
                        },
                        {
                          "id": 111111111111,
                          "type": "service-principal"
                        }
                      ],
                      "role": {
                        "id": "admin",
                        "type": "preset"
                      }
                    }
                  ]
                },
                "schema": {
                  "properties": {
                    "bindings": {
                      "items": {
                        "$ref": "#/components/schemas/IamPolicy"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "bindings"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したフォルダが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "フォルダIAMポリシーを取得する",
        "tags": [
          "iam-policy"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/FolderID"
        }
      ],
      "put": {
        "operationId": "updateFolderIamPolicy",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "example": {
                  "bindings": [
                    {
                      "principals": [
                        {
                          "id": 111111111111,
                          "type": "user"
                        },
                        {
                          "id": 1,
                          "type": "group"
                        },
                        {
                          "id": 111111111111,
                          "type": "service-principal"
                        }
                      ],
                      "role": {
                        "id": "admin",
                        "type": "preset"
                      }
                    }
                  ]
                },
                "properties": {
                  "bindings": {
                    "items": {
                      "$ref": "#/components/schemas/IamPolicy"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "bindings"
                ],
                "type": "object"
              }
            }
          },
          "description": "フォルダIAMポリシーの情報を含んだJSON",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "bindings": {
                      "items": {
                        "$ref": "#/components/schemas/IamPolicy"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "bindings"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "LowestGrantableResourceInvalid": {
                    "summary": "付与可能な最低階層を満たしていない",
                    "value": {
                      "detail": "Invalid input.",
                      "errors": {
                        "role": [
                          {
                            "code": "invalid",
                            "message": "\"servicepolicy-admin\"は組織階層以上にのみ付与可能です"
                          }
                        ]
                      },
                      "status": 400,
                      "title": "invalid",
                      "type": "about:blank"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したフォルダが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "フォルダIAMポリシーを更新する",
        "tags": [
          "iam-policy"
        ]
      }
    },
    "/groups": {
      "get": {
        "operationId": "listGroups",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "description": "並び替えキー\n* `name` - グループ名昇順\n* `-name` - グループ名降順\n",
            "in": "query",
            "name": "ordering",
            "schema": {
              "enum": [
                "name",
                "-name"
              ],
              "type": "string"
            }
          },
          {
            "description": "所属するユーザIDでの絞り込み",
            "in": "query",
            "name": "compat_user_id",
            "schema": {
              "example": 111111111111,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/Group"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "グループ一覧を取得する",
        "tags": [
          "group"
        ]
      },
      "post": {
        "operationId": "createGroup",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "description": {
                    "example": "グループの説明",
                    "type": "string"
                  },
                  "name": {
                    "description": "グループの名前",
                    "example": "マイグループ",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "description"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Group"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "グループ数の上限到達"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "グループを作成する",
        "tags": [
          "group"
        ]
      }
    },
    "/groups/{group_id}": {
      "delete": {
        "operationId": "deleteGroup",
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したグループが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "指定したグループを削除する",
        "tags": [
          "group"
        ]
      },
      "get": {
        "operationId": "readGroup",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Group"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したグループが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したグループを取得する",
        "tags": [
          "group"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/GroupID"
        }
      ],
      "put": {
        "operationId": "updateGroup",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "description": {
                    "example": "グループの説明",
                    "type": "string"
                  },
                  "name": {
                    "example": "グループの名前",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "description"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Group"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したグループが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "指定したグループを更新する",
        "tags": [
          "group"
        ]
      }
    },
    "/groups/{group_id}/memberships": {
      "get": {
        "operationId": "listMemberships",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupMemberships"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したグループが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "グループの所属情報を取得する",
        "tags": [
          "group"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/GroupID"
        }
      ],
      "put": {
        "operationId": "updateMemberships",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "compat_users": {
                    "items": {
                      "properties": {
                        "id": {
                          "description": "ユーザID",
                          "example": 111111111111,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "compat_users"
                ],
                "type": "object"
              }
            }
          },
          "description": "グループの所属情報",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupMemberships"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したグループが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "グループの所属情報を更新する",
        "tags": [
          "group"
        ]
      }
    },
    "/iam-roles": {
      "get": {
        "operationId": "listIamRoles",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/IamRole"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "IAMロール一覧を取得する",
        "tags": [
          "iam-role"
        ]
      }
    },
    "/iam-roles/{iam_role_id}": {
      "get": {
        "operationId": "readIamRole",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IamRole"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したIAMロールが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したIAMロールを取得する",
        "tags": [
          "iam-role"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/IamRoleID"
        }
      ]
    },
    "/id-roles": {
      "get": {
        "operationId": "listIdRoles",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/IdRole"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "IDロール一覧を取得する",
        "tags": [
          "id-role"
        ]
      }
    },
    "/id-roles/{id_role_id}": {
      "get": {
        "operationId": "readIdRole",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdRole"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したIAMロールが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したIDロールを取得する",
        "tags": [
          "id-role"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/IdRoleID"
        }
      ]
    },
    "/move-folders": {
      "post": {
        "operationId": "moveFolders",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MoveFolders"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "DuplicateFolderNames": {
                    "summary": "同じ階層に同じ名前のフォルダを登録できない",
                    "value": {
                      "detail": "同じ階層に同じ名前のフォルダを登録できません。",
                      "errors": {},
                      "status": 400,
                      "title": "duplicate_folder_names",
                      "type": "about:blank"
                    }
                  },
                  "FolderIdNotFount": {
                    "summary": "指定されたフォルダが見つからない",
                    "value": {
                      "detail": "指定されたフォルダが見つかりません",
                      "errors": {},
                      "status": 400,
                      "title": "folder_not_found",
                      "type": "about:blank"
                    }
                  },
                  "ParentIdNotFound": {
                    "summary": "親フォルダが見つからない",
                    "value": {
                      "detail": "親フォルダが見つかりません。",
                      "errors": {},
                      "status": 400,
                      "title": "parant_not_found",
                      "type": "about:blank"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "フォルダが存在しない。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "フォルダを移動する",
        "tags": [
          "folder"
        ]
      }
    },
    "/move-projects": {
      "post": {
        "operationId": "moveProjects",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MoveProjects"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "DuplicateProjectNames": {
                    "summary": "同じ階層に同じ名前のプロジェクトを登録できない",
                    "value": {
                      "detail": "同じ階層に同じ名前のプロジェクトを登録できません。",
                      "errors": {},
                      "status": 400,
                      "title": "duplicate_project_names",
                      "type": "about:blank"
                    }
                  },
                  "ParentIdNotFound": {
                    "summary": "親フォルダが見つからない",
                    "value": {
                      "detail": "親フォルダが見つかりません。",
                      "errors": {},
                      "status": 400,
                      "title": "parant_not_found",
                      "type": "about:blank"
                    }
                  },
                  "ProjectIdNotFound": {
                    "summary": "指定されたプロジェクトが見つからない",
                    "value": {
                      "detail": "指定されたプロジェクトが見つかりません。",
                      "errors": {},
                      "status": 400,
                      "title": "project_not_found",
                      "type": "about:blank"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "フォルダが存在しない。"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "プロジェクトを一括で移動する",
        "tags": [
          "project"
        ]
      }
    },
    "/organization": {
      "get": {
        "operationId": "readOrganization",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Organization"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したSSOプロファイルが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "組織を取得する",
        "tags": [
          "organization"
        ]
      },
      "put": {
        "operationId": "updateOrganization",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "name": {
                    "description": "組織名",
                    "example": "組織名",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Organization"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "組織を更新する",
        "tags": [
          "organization"
        ]
      }
    },
    "/organization-auth-conditions": {
      "get": {
        "operationId": "readOrganizationAuthConditions",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "Response1": {
                    "summary": "すべてのネットワークからの認証を許可",
                    "value": {
                      "datetime_restriction": {
                        "after": "2025-09-01T00:00:00+09:00",
                        "before": "2025-10-01T00:00:00+09:00"
                      },
                      "ip_restriction": {
                        "mode": "allow_all"
                      },
                      "require_two_factor_auth": {
                        "enabled": false
                      }
                    }
                  },
                  "Response2": {
                    "summary": "指定したネットワークからの認証を許可",
                    "value": {
                      "datetime_restriction": {
                        "after": "2025-09-01T00:00:00+09:00",
                        "before": "2025-10-01T00:00:00+09:00"
                      },
                      "ip_restriction": {
                        "mode": "allow_list",
                        "source_network": [
                          "192.0.2.0/24",
                          "198.51.100.0/24",
                          "203.0.113.0/24"
                        ]
                      },
                      "require_two_factor_auth": {
                        "enabled": false
                      }
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AuthConditions"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "組織の認証条件を取得する",
        "tags": [
          "auth"
        ]
      },
      "put": {
        "operationId": "updateOrganizationAuthConditions",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "Request1": {
                  "summary": "すべてのネットワークからの認証を許可",
                  "value": {
                    "datetime_restriction": {
                      "after": "2025-09-01T00:00:00+09:00",
                      "before": "2025-10-01T00:00:00+09:00"
                    },
                    "ip_restriction": {
                      "mode": "allow_all"
                    },
                    "require_two_factor_auth": {
                      "enabled": false
                    }
                  }
                },
                "Request2": {
                  "summary": "指定したネットワークからの認証を許可",
                  "value": {
                    "datetime_restriction": {
                      "after": "2025-09-01T00:00:00+09:00",
                      "before": "2025-10-01T00:00:00+09:00"
                    },
                    "ip_restriction": {
                      "mode": "allow_list",
                      "source_network": [
                        "192.0.2.0/24",
                        "198.51.100.0/24",
                        "203.0.113.0/24"
                      ]
                    },
                    "require_two_factor_auth": {
                      "enabled": false
                    }
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/AuthConditions"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthConditions"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "組織の認証条件を更新する",
        "tags": [
          "auth"
        ]
      }
    },
    "/organization-iam-policy": {
      "get": {
        "operationId": "readOrganizationIamPolicy",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "bindings": [
                    {
                      "principals": [
                        {
                          "id": 111111111111,
                          "type": "user"
                        },
                        {
                          "id": 1,
                          "type": "group"
                        },
                        {
                          "id": 111111111111,
                          "type": "service-principal"
                        }
                      ],
                      "role": {
                        "id": "admin",
                        "type": "preset"
                      }
                    }
                  ]
                },
                "schema": {
                  "properties": {
                    "bindings": {
                      "items": {
                        "$ref": "#/components/schemas/IamPolicy"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "bindings"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "組織IAMポリシーを取得する",
        "tags": [
          "iam-policy"
        ]
      },
      "put": {
        "operationId": "updateOrganizationIamPolicy",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "example": {
                  "bindings": [
                    {
                      "principals": [
                        {
                          "id": 111111111111,
                          "type": "user"
                        },
                        {
                          "id": 1,
                          "type": "group"
                        },
                        {
                          "id": 111111111111,
                          "type": "service-principal"
                        }
                      ],
                      "role": {
                        "id": "admin",
                        "type": "preset"
                      }
                    }
                  ]
                },
                "properties": {
                  "bindings": {
                    "items": {
                      "$ref": "#/components/schemas/IamPolicy"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "bindings"
                ],
                "type": "object"
              }
            }
          },
          "description": "組織IAMポリシーの情報を含んだJSON",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "bindings": {
                      "items": {
                        "$ref": "#/components/schemas/IamPolicy"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "bindings"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "組織IAMポリシーを更新する",
        "tags": [
          "iam-policy"
        ]
      }
    },
    "/organization-id-policy": {
      "get": {
        "operationId": "readOrganizationIdPolicy",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "bindings": [
                    {
                      "principals": [
                        {
                          "id": 111111111111,
                          "type": "user"
                        },
                        {
                          "id": 1,
                          "type": "group"
                        },
                        {
                          "id": 111111111111,
                          "type": "service-principal"
                        }
                      ],
                      "role": {
                        "id": "identity-admin",
                        "type": "preset"
                      }
                    }
                  ]
                },
                "schema": {
                  "properties": {
                    "bindings": {
                      "items": {
                        "$ref": "#/components/schemas/IdPolicy"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "bindings"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "組織IDポリシーを取得する",
        "tags": [
          "id-policy"
        ]
      },
      "put": {
        "operationId": "updateOrganizationIdPolicy",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "example": {
                  "bindings": [
                    {
                      "principals": [
                        {
                          "id": 111111111111,
                          "type": "user"
                        },
                        {
                          "id": 1,
                          "type": "group"
                        },
                        {
                          "id": 111111111111,
                          "type": "service-principal"
                        }
                      ],
                      "role": {
                        "id": "identity-admin",
                        "type": "preset"
                      }
                    }
                  ]
                },
                "properties": {
                  "bindings": {
                    "items": {
                      "$ref": "#/components/schemas/IdPolicy"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "bindings"
                ],
                "type": "object"
              }
            }
          },
          "description": "組織IDポリシーの情報を含んだJSON",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "bindings": {
                      "items": {
                        "$ref": "#/components/schemas/IdPolicy"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "bindings"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "組織IDポリシーを更新する",
        "tags": [
          "id-policy"
        ]
      }
    },
    "/organization-password-policy": {
      "get": {
        "operationId": "readOrganizationPasswordPolicy",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasswordPolicy"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "組織のパスワードポリシーを取得する",
        "tags": [
          "auth"
        ]
      },
      "put": {
        "operationId": "updateOrganizationPasswordPolicy",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordPolicy"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasswordPolicy"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "組織のパスワードポリシーを更新する",
        "tags": [
          "auth"
        ]
      }
    },
    "/organization-service-policy": {
      "get": {
        "operationId": "readOrganizationServicePolicy",
        "parameters": [
          {
            "description": "有効かどうか",
            "in": "query",
            "name": "is_active",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "ドライランかどうか",
            "in": "query",
            "name": "is_dry_run",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "ルール名",
            "in": "query",
            "name": "name",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ルールのコード",
            "in": "query",
            "name": "code",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ルールのタイプ",
            "in": "query",
            "name": "type",
            "schema": {
              "enum": [
                "bool",
                "list"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "BoolRulesActiveDryRun": {
                    "summary": "Bool型ルール ルールが有効かつドライランのとき",
                    "value": {
                      "rules": [
                        {
                          "code": "example.rule.code2",
                          "dry_run_spec": {
                            "contents": [
                              {
                                "enforce": true
                              }
                            ]
                          },
                          "is_active": true,
                          "is_dry_run": true,
                          "name": "Example Bool Rule",
                          "spec": {
                            "contents": [
                              {
                                "enforce": true
                              }
                            ]
                          }
                        }
                      ]
                    }
                  },
                  "BoolRulesActiveNotDryRun": {
                    "summary": "Bool型ルール ルールが有効かつ非ドライランのとき",
                    "value": {
                      "rules": [
                        {
                          "code": "example.rule.code2",
                          "dry_run_spec": {
                            "contents": [
                              {
                                "enforce": true
                              }
                            ]
                          },
                          "is_active": true,
                          "is_dry_run": false,
                          "name": "Example Bool Rule",
                          "spec": {
                            "contents": [
                              {
                                "enforce": true
                              }
                            ]
                          }
                        }
                      ]
                    }
                  },
                  "BoolRulesDisableDryRun": {
                    "summary": "Bool型ルール ルールが無効かつドライランのとき",
                    "value": {
                      "rules": [
                        {
                          "code": "example.rule.code2",
                          "dry_run_spec": {
                            "contents": [
                              {
                                "enforce": true
                              }
                            ]
                          },
                          "is_active": false,
                          "is_dry_run": true,
                          "name": "Example Bool Rule",
                          "spec": {
                            "contents": [
                              {
                                "enforce": true
                              }
                            ]
                          }
                        }
                      ]
                    }
                  },
                  "BoolRulesDisableNotDryRun": {
                    "summary": "Bool型ルール ルールが無効かつ非ドライランのとき",
                    "value": {
                      "rules": [
                        {
                          "code": "example.rule.code2",
                          "dry_run_spec": {
                            "contents": [
                              {
                                "enforce": true
                              }
                            ]
                          },
                          "is_active": false,
                          "is_dry_run": false,
                          "name": "Example Bool Rule",
                          "spec": {
                            "contents": [
                              {
                                "enforce": true
                              }
                            ]
                          }
                        }
                      ]
                    }
                  },
                  "listRulesActiveDryRun": {
                    "summary": "List型ルール ルールが有効かつドライランのとき",
                    "value": {
                      "rules": [
                        {
                          "code": "example.rule.code1",
                          "dry_run_spec": {
                            "contents": [
                              {
                                "allow_all": false,
                                "deny_all": true,
                                "values": {
                                  "allowed_values": [
                                    "example1"
                                  ],
                                  "denied_values": [
                                    "example2"
                                  ]
                                }
                              }
                            ]
                          },
                          "is_active": true,
                          "is_dry_run": true,
                          "name": "Example List Rule",
                          "spec": {
                            "contents": [
                              {
                                "allow_all": true,
                                "deny_all": true,
                                "values": {
                                  "allowed_values": [
                                    "example1"
                                  ],
                                  "denied_values": [
                                    "example2"
                                  ]
                                }
                              }
                            ]
                          }
                        }
                      ]
                    }
                  },
                  "listRulesActiveNotDryRun": {
                    "summary": "List型ルール ルールが有効かつ非ドライランのとき",
                    "value": {
                      "rules": [
                        {
                          "code": "example.rule.code1",
                          "dry_run_spec": {
                            "contents": [
                              {
                                "allow_all": false,
                                "deny_all": true,
                                "values": {
                                  "allowed_values": [
                                    "example1"
                                  ],
                                  "denied_values": [
                                    "example2"
                                  ]
                                }
                              }
                            ]
                          },
                          "is_active": true,
                          "is_dry_run": false,
                          "name": "Example List Rule",
                          "spec": {
                            "contents": [
                              {
                                "allow_all": true,
                                "deny_all": true,
                                "values": {
                                  "allowed_values": [
                                    "example1"
                                  ],
                                  "denied_values": [
                                    "example2"
                                  ]
                                }
                              }
                            ]
                          }
                        }
                      ]
                    }
                  },
                  "listRulesDisableDryRun": {
                    "summary": "List型ルール ルールが無効かつドライランのとき",
                    "value": {
                      "rules": [
                        {
                          "code": "example.rule.code1",
                          "dry_run_spec": {
                            "contents": [
                              {
                                "allow_all": false,
                                "deny_all": true,
                                "values": {
                                  "allowed_values": [
                                    "example1"
                                  ],
                                  "denied_values": [
                                    "example2"
                                  ]
                                }
                              }
                            ]
                          },
                          "is_active": false,
                          "is_dry_run": true,
                          "name": "Example List Rule",
                          "spec": {
                            "contents": [
                              {
                                "allow_all": true,
                                "deny_all": true,
                                "values": {
                                  "allowed_values": [
                                    "example1"
                                  ],
                                  "denied_values": [
                                    "example2"
                                  ]
                                }
                              }
                            ]
                          }
                        }
                      ]
                    }
                  },
                  "listRulesDisableNotDryRun": {
                    "summary": "List型ルール ルールが無効かつ非ドライランのとき",
                    "value": {
                      "rules": [
                        {
                          "code": "example.rule.code1",
                          "dry_run_spec": {
                            "contents": [
                              {
                                "allow_all": false,
                                "deny_all": true,
                                "values": {
                                  "allowed_values": [
                                    "example1"
                                  ],
                                  "denied_values": [
                                    "example2"
                                  ]
                                }
                              }
                            ]
                          },
                          "is_active": false,
                          "is_dry_run": false,
                          "name": "Example List Rule",
                          "spec": {
                            "contents": [
                              {
                                "allow_all": true,
                                "deny_all": true,
                                "values": {
                                  "allowed_values": [
                                    "example1"
                                  ],
                                  "denied_values": [
                                    "example2"
                                  ]
                                }
                              }
                            ]
                          }
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "properties": {
                    "rules": {
                      "items": {
                        "$ref": "#/components/schemas/RuleResponse"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "組織のサービスポリシーを構成するルールを取得する",
        "tags": [
          "organization"
        ]
      },
      "put": {
        "description": "組織のサービスポリシーを構成するルールの設定値を更新するエンドポイント。設定を更新するルールをリクエストボディで指定する",
        "operationId": "updateOrganizationServicePolicy",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "listAndBoolRules": {
                  "summary": "List型・Bool型の両方を設定する場合",
                  "value": {
                    "rules": [
                      {
                        "code": "example.rule.list",
                        "is_active": true,
                        "is_dry_run": false,
                        "spec": {
                          "contents": [
                            {
                              "allow_all": true,
                              "deny_all": false,
                              "values": {
                                "allowed_values": [
                                  "example1",
                                  "example2"
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "code": "example.rule.bool",
                        "is_active": false,
                        "is_dry_run": false,
                        "spec": {
                          "contents": [
                            {
                              "enforce": true
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                "listRulesAllowAll": {
                  "summary": "List型ルール allow_allを指定する場合",
                  "value": {
                    "rules": [
                      {
                        "code": "example.rule.list",
                        "is_active": true,
                        "is_dry_run": false,
                        "spec": {
                          "contents": [
                            {
                              "allow_all": true,
                              "deny_all": false,
                              "values": {}
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                "listRulesAllowedValues": {
                  "summary": "List型ルール allowed_valuesを指定する場合",
                  "value": {
                    "rules": [
                      {
                        "code": "example.rule.list",
                        "is_active": true,
                        "is_dry_run": false,
                        "spec": {
                          "contents": [
                            {
                              "allow_all": false,
                              "deny_all": false,
                              "values": {
                                "allowed_values": [
                                  "example1",
                                  "example2"
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                "listRulesDeniedValues": {
                  "summary": "List型ルール denied_valuesを指定する場合",
                  "value": {
                    "rules": [
                      {
                        "code": "example.rule.list",
                        "is_active": true,
                        "is_dry_run": false,
                        "spec": {
                          "contents": [
                            {
                              "allow_all": false,
                              "deny_all": false,
                              "values": {
                                "denied_values": [
                                  "example1",
                                  "example2"
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                "listRulesDenyAll": {
                  "summary": "List型ルール deny_allを指定する場合",
                  "value": {
                    "rules": [
                      {
                        "code": "example.rule.list",
                        "is_active": true,
                        "is_dry_run": false,
                        "spec": {
                          "contents": [
                            {
                              "allow_all": false,
                              "deny_all": true,
                              "values": {}
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              },
              "schema": {
                "properties": {
                  "rules": {
                    "items": {
                      "$ref": "#/components/schemas/Rule"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "rules"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "rules": {
                      "items": {
                        "$ref": "#/components/schemas/RuleResponse"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "サービスポリシーが有効化されていない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "組織のサービスポリシーを更新する",
        "tags": [
          "organization"
        ]
      }
    },
    "/projects": {
      "get": {
        "operationId": "listProjects",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "description": "並び替えキー\n\n* `code` - プロジェクトコード昇順\n* `-code` - プロジェクトコード降順\n",
            "in": "query",
            "name": "ordering",
            "schema": {
              "enum": [
                "code",
                "-code"
              ],
              "type": "string"
            }
          },
          {
            "description": "IAMロールでの絞り込み。カンマ区切りで複数指定可能",
            "in": "query",
            "name": "iam_role",
            "schema": {
              "example": "resource-creator,billing-viewer",
              "type": "string"
            }
          },
          {
            "description": "親のフォルダIDでの絞り込み。",
            "in": "query",
            "name": "parent_folder_id",
            "schema": {
              "example": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/Project"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "プロジェクト一覧を取得する",
        "tags": [
          "project"
        ]
      },
      "post": {
        "operationId": "createProject",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "code": {
                    "description": "プロジェクトコード",
                    "example": "my-sakura-project-code",
                    "type": "string"
                  },
                  "description": {
                    "description": "プロジェクトの説明",
                    "example": "My Sakura Project details",
                    "type": "string"
                  },
                  "name": {
                    "description": "プロジェクトの名前",
                    "example": "My Sakura Project",
                    "type": "string"
                  },
                  "parent_folder_id": {
                    "description": "プロジェクトのフォルダID",
                    "example": 112000000000,
                    "type": "integer"
                  }
                },
                "required": [
                  "code",
                  "name",
                  "description"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            },
            "description": "プロジェクトの作成に成功"
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "ParentIdNotFound": {
                    "summary": "親フォルダが見つからない",
                    "value": {
                      "detail": "親フォルダが見つかりません。",
                      "errors": {},
                      "status": 400,
                      "title": "parant_not_found",
                      "type": "about:blank"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "プロジェクトコードの重複"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "プロジェクトを作成する",
        "tags": [
          "project"
        ]
      }
    },
    "/projects/{project_id}": {
      "delete": {
        "operationId": "deleteProject",
        "responses": {
          "204": {
            "description": "プロジェクトの削除に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したプロジェクトが存在しない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "プロジェクト配下にリソースが存在する"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "指定したプロジェクトを削除する",
        "tags": [
          "project"
        ]
      },
      "get": {
        "operationId": "readProject",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したプロジェクトが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したプロジェクトを取得する",
        "tags": [
          "project"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/ProjectID"
        }
      ],
      "put": {
        "operationId": "updateProject",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "description": {
                    "description": "プロジェクトの説明",
                    "example": "My Sakura Project details",
                    "type": "string"
                  },
                  "name": {
                    "description": "プロジェクトの名前",
                    "example": "My Sakura Project",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "description"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したプロジェクトが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "指定したプロジェクトを更新する",
        "tags": [
          "project"
        ]
      }
    },
    "/projects/{project_id}/iam-policy": {
      "get": {
        "operationId": "readProjectIamPolicy",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "bindings": [
                    {
                      "principals": [
                        {
                          "id": 111111111111,
                          "type": "user"
                        },
                        {
                          "id": 1,
                          "type": "group"
                        },
                        {
                          "id": 111111111111,
                          "type": "service-principal"
                        }
                      ],
                      "role": {
                        "id": "admin",
                        "type": "preset"
                      }
                    }
                  ]
                },
                "schema": {
                  "properties": {
                    "bindings": {
                      "items": {
                        "$ref": "#/components/schemas/IamPolicy"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "bindings"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したプロジェクトが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "プロジェクトIAMポリシーを取得する",
        "tags": [
          "iam-policy"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/ProjectID"
        }
      ],
      "put": {
        "operationId": "updateProjectIamPolicy",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "example": {
                  "bindings": [
                    {
                      "principals": [
                        {
                          "id": 111111111111,
                          "type": "user"
                        },
                        {
                          "id": 1,
                          "type": "group"
                        },
                        {
                          "id": 111111111111,
                          "type": "service-principal"
                        }
                      ],
                      "role": {
                        "id": "admin",
                        "type": "preset"
                      }
                    }
                  ]
                },
                "properties": {
                  "bindings": {
                    "items": {
                      "$ref": "#/components/schemas/IamPolicy"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "bindings"
                ],
                "type": "object"
              }
            }
          },
          "description": "プロジェクトIAMポリシーの情報を含んだJSON",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "bindings": {
                      "items": {
                        "$ref": "#/components/schemas/IamPolicy"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "bindings"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "LowestGrantableResourceInvalid": {
                    "summary": "付与可能な最低階層を満たしていない",
                    "value": {
                      "detail": "Invalid input.",
                      "errors": {
                        "role": [
                          {
                            "code": "invalid",
                            "message": "\"folder-admin\"はフォルダ階層以上にのみ付与可能です"
                          }
                        ]
                      },
                      "status": 400,
                      "title": "invalid",
                      "type": "about:blank"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したプロジェクトが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "プロジェクトIAMポリシーを更新する",
        "tags": [
          "iam-policy"
        ]
      }
    },
    "/scim-configurations": {
      "get": {
        "operationId": "listScimConfigurations",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/ScimConfigurationPublic"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザープロビジョニングを取得する",
        "tags": [
          "scim"
        ]
      },
      "post": {
        "operationId": "createScimConfiguration",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "name": {
                    "description": "ユーザープロビジョニング名",
                    "example": "MicrosoftEntraID",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimConfiguration"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "既にユーザープロビジョニングが存在する"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザープロビジョニングを作成する",
        "tags": [
          "scim"
        ]
      }
    },
    "/scim-configurations/{id}": {
      "delete": {
        "operationId": "deleteScimConfiguration",
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザープロビジョニングが存在しない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "- 削除対象のユーザープロビジョニングから作成されたユーザーが存在する\n- 削除対象のユーザープロビジョニングから作成されたグループが存在する\n"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザープロビジョニングを削除する",
        "tags": [
          "scim"
        ]
      },
      "get": {
        "operationId": "readScimConfiguration",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimConfigurationPublic"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザープロビジョニングが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザープロビジョニングを取得する",
        "tags": [
          "scim"
        ]
      },
      "parameters": [
        {
          "description": "ユーザープロビジョニングID",
          "in": "path",
          "name": "id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          }
        }
      ],
      "put": {
        "operationId": "updateScimConfiguration",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "name": {
                    "description": "ユーザープロビジョニング名",
                    "example": "MicrosoftEntraID",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimConfigurationPublic"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザープロビジョニングが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザープロビジョニングを更新する",
        "tags": [
          "scim"
        ]
      }
    },
    "/scim-configurations/{id}/regenerate-token": {
      "parameters": [
        {
          "description": "ユーザープロビジョニングID",
          "in": "path",
          "name": "id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          }
        }
      ],
      "post": {
        "description": "この操作によって既にあるシークレットトークンは無効化されます。ユーザープロビジョニングのクライアント側に新しいシークレットトークンを再設定する必要があります。\n",
        "operationId": "regenerateScimConfigurationToken",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "secret_token": "your-secret-token"
                  },
                  "properties": {
                    "secret_token": {
                      "description": "再発行されたユーザープロビジョニングのシークレットトークン",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したユーザープロビジョニングが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザープロビジョニングのシークレットトークンを再発行する",
        "tags": [
          "scim"
        ]
      }
    },
    "/service-policy-rule-templates": {
      "get": {
        "operationId": "listServicePolicyRuleTemplates",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "description": "ルールテンプレート名",
            "in": "query",
            "name": "name",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ルールテンプレートのコード",
            "in": "query",
            "name": "code",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ルールテンプレートのタイプ",
            "in": "query",
            "name": "type",
            "schema": {
              "enum": [
                "boolean",
                "list"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/RuleTemplate"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ルールテンプレートの一覧を取得する",
        "tags": [
          "service-policy"
        ]
      }
    },
    "/service-policy-status": {
      "get": {
        "operationId": "checkServicePolicyStatus",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "enabled": {
                      "description": "有効かどうか",
                      "readOnly": true,
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "enabled"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http503ServiceUnavailable"
                }
              }
            },
            "description": "一時的な処理エラー"
          }
        },
        "summary": "サービスポリシーの有効状態を取得する",
        "tags": [
          "service-policy"
        ]
      }
    },
    "/service-principals": {
      "get": {
        "operationId": "listServicePrincipals",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "description": "プロジェクトID",
            "in": "query",
            "name": "project_id",
            "schema": {
              "type": "integer"
            }
          },
          {
            "description": "並び替えキー\n* `name` - サービスプリンシパル名昇順\n* `-name` - サービスプリンシパル名降順\n",
            "in": "query",
            "name": "ordering",
            "schema": {
              "enum": [
                "name",
                "-name"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/ServicePrincipal"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "サービスプリンシパル一覧を取得する",
        "tags": [
          "service-principal"
        ]
      },
      "post": {
        "operationId": "createServicePrincipal",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "description": {
                    "description": "サービスプリンシパルの説明",
                    "example": "サービスプリンシパルの説明",
                    "type": "string"
                  },
                  "name": {
                    "description": "サービスプリンシパル名",
                    "example": "Sakura Service Principal",
                    "type": "string"
                  },
                  "project_id": {
                    "description": "プロジェクトID",
                    "example": 1,
                    "type": "integer"
                  }
                },
                "required": [
                  "project_id",
                  "name",
                  "description"
                ],
                "type": "object"
              }
            }
          },
          "description": "サービスプリンシパルの情報",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicePrincipal"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "プロジェクトあたりサービスプリンシパル数の上限到達"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "サービスプリンシパルを作成する",
        "tags": [
          "service-principal"
        ]
      }
    },
    "/service-principals/oauth2/token": {
      "post": {
        "description": "登録済みサービスプリンシパルキーの秘密鍵を使い、以下のようなJWTを署名してください。\n\n#### JWTのヘッダー\n\n```json\n{\n  \"alg\": \"RS256\",\n  \"kid\": \"$SERVICE_PRINCIPAL_KEY_KID\",\n  \"typ\": \"JWT\"\n}\n```\n\n### JWTのペイロード\n\n```json\n{\n  \"aud\": \"https://secure.sakura.ad.jp/cloud/api/iam/1.0/service-principals/oauth2/token\",\n  \"exp\": 現在のUnix time + 5分,\n  \"iat\": 現在のUnix time,\n  \"iss\": \"$SERVICE_PRINCIPAL_RESOURCE_ID\",\n  \"sub\": \"$SERVICE_PRINCIPAL_RESOURCE_ID\"\n}\n```\n",
        "operationId": "issueServicePrincipalToken",
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ServicePrincipalJWTGrantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicePrincipalOAuth2AccessToken"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "security": [],
        "summary": "RFC 7523 (JWT Bearer Token Grant) に基づき、署名済みJWTを使って一時的なサービスプリンシパルトークンを取得する",
        "tags": [
          "service-principal"
        ]
      }
    },
    "/service-principals/{service_principal_id}": {
      "delete": {
        "operationId": "deleteServicePrincipal",
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したサービスプリンシパルが存在しない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "サービスプリンシパルがリソースに関連付けられている"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したサービスプリンシパルを削除する",
        "tags": [
          "service-principal"
        ]
      },
      "get": {
        "operationId": "readServicePrincipal",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicePrincipal"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したサービスプリンシパルが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したサービスプリンシパルを取得する",
        "tags": [
          "service-principal"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/ServicePrincipalID"
        }
      ],
      "put": {
        "operationId": "updateServicePrincipal",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "description": {
                    "description": "サービスプリンシパルの説明",
                    "example": "サービスプリンシパルの説明",
                    "type": "string"
                  },
                  "name": {
                    "description": "サービスプリンシパル名",
                    "example": "Sakura Service Principal",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicePrincipal"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したサービスプリンシパルが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したサービスプリンシパルを更新する",
        "tags": [
          "service-principal"
        ]
      }
    },
    "/service-principals/{service_principal_id}/keys": {
      "get": {
        "operationId": "listServicePrincipalKeys",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServicePrincipalID"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "description": "並び替えキー\n* `created_at` - 作成日時昇順\n* `-created_at` - 作成日時降順\n* `key_expires_at` - 有効期限昇順\n* `-key_expires_at` - 有効期限降順\n",
            "in": "query",
            "name": "ordering",
            "schema": {
              "enum": [
                "created_at",
                "-created_at",
                "key_expires_at",
                "-key_expires_at"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/ServicePrincipalKey"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "サービスプリンシパルキー一覧を取得する",
        "tags": [
          "service-principal"
        ]
      }
    },
    "/service-principals/{service_principal_id}/keys/{service_principal_key_id}": {
      "delete": {
        "operationId": "deleteServicePrincipalKey",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServicePrincipalID"
          },
          {
            "$ref": "#/components/parameters/ServicePrincipalKeyID"
          }
        ],
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したサービスプリンシパルキーが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したサービスプリンシパルキーを削除する",
        "tags": [
          "service-principal"
        ]
      }
    },
    "/service-principals/{service_principal_id}/keys/{service_principal_key_id}/disable": {
      "post": {
        "operationId": "disableServicePrincipalKey",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServicePrincipalID"
          },
          {
            "$ref": "#/components/parameters/ServicePrincipalKeyID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "created_at": "2023-10-01T00:00:00Z",
                  "id": "00000000-0000-0000-0000-000000000000",
                  "key_expires_at": "2024-10-01T00:00:00Z",
                  "key_origin": "user",
                  "kid": "1234567890abcdef1234567890abcdef12345678",
                  "public_key": "BEGIN PUBLIC KEY\\n...\\nEND PUBLIC KEY",
                  "status": "disabled"
                },
                "schema": {
                  "$ref": "#/components/schemas/ServicePrincipalKey"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したサービスプリンシパルキーが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したサービスプリンシパルキーを無効化する",
        "tags": [
          "service-principal"
        ]
      }
    },
    "/service-principals/{service_principal_id}/keys/{service_principal_key_id}/enable": {
      "post": {
        "operationId": "enableServicePrincipalKey",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServicePrincipalID"
          },
          {
            "$ref": "#/components/parameters/ServicePrincipalKeyID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "created_at": "2023-10-01T00:00:00Z",
                  "id": "00000000-0000-0000-0000-000000000000",
                  "key_expires_at": "2024-10-01T00:00:00Z",
                  "key_origin": "user",
                  "kid": "1234567890abcdef1234567890abcdef12345678",
                  "public_key": "BEGIN PUBLIC KEY\\n...\\nEND PUBLIC KEY",
                  "status": "enabled"
                },
                "schema": {
                  "$ref": "#/components/schemas/ServicePrincipalKey"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したサービスプリンシパルキーが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したサービスプリンシパルキーを有効化する",
        "tags": [
          "service-principal"
        ]
      }
    },
    "/service-principals/{service_principal_id}/upload-key": {
      "post": {
        "operationId": "uploadServicePrincipalKey",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServicePrincipalID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "public_key": {
                    "$ref": "#/components/schemas/ServiceprincipalKeyPublicKey"
                  }
                },
                "required": [
                  "public_key"
                ],
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicePrincipalKey"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "上限に達している"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "ユーザ生成の鍵をサービスプリンシパルキーとして登録する",
        "tags": [
          "service-principal"
        ]
      }
    },
    "/sso-profiles": {
      "get": {
        "operationId": "listSsoProfiles",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "items": {
                          "items": {
                            "$ref": "#/components/schemas/SSOProfile"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "items"
                      ],
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  ]
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "SSOプロファイル一覧を取得する",
        "tags": [
          "sso"
        ]
      },
      "post": {
        "operationId": "createSsoProfile",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "complete-fields": {
                  "summary": "全てのフィールドを作成時に指定する場合",
                  "value": {
                    "description": "SSOプロファイル1の説明",
                    "idp_certificate": "-----BEGIN CERTIFICATE-----\nMIIDqjCCApKgAwIBA\u003csnip\u003e\n-----END CERTIFICATE-----",
                    "idp_entity_id": "https://idp.example.com/ile2ephei7saeph6",
                    "idp_login_url": "https://idp.example.com/ile2ephei7saeph6/sso/login",
                    "idp_logout_url": "https://idp.example.com/ile2ephei7saeph6/sso/logout",
                    "name": "SSOプロファイル1"
                  }
                },
                "partial-fields": {
                  "summary": "IdPの情報を後で設定する場合",
                  "value": {
                    "description": "SSOプロファイル1の説明",
                    "idp_certificate": "",
                    "idp_entity_id": "",
                    "idp_login_url": "",
                    "idp_logout_url": "",
                    "name": "SSOプロファイル1"
                  }
                }
              },
              "schema": {
                "properties": {
                  "description": {
                    "description": "SSOプロファイルの説明",
                    "example": "SSOプロファイル1の説明",
                    "type": "string"
                  },
                  "idp_certificate": {
                    "description": "IdPのX.509証明書",
                    "type": "string"
                  },
                  "idp_entity_id": {
                    "description": "IdPのエンティティID",
                    "type": "string"
                  },
                  "idp_login_url": {
                    "description": "IdPのログインURL",
                    "type": "string"
                  },
                  "idp_logout_url": {
                    "description": "IdPのログアウトURL",
                    "type": "string"
                  },
                  "name": {
                    "description": "SSOプロファイル名",
                    "example": "SSOプロファイル1",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "description",
                  "idp_entity_id",
                  "idp_login_url",
                  "idp_logout_url",
                  "idp_certificate"
                ],
                "type": "object"
              }
            }
          },
          "description": "IdPの情報",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSOProfile"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "上限に達している"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "SSOプロファイルを作成する",
        "tags": [
          "sso"
        ]
      }
    },
    "/sso-profiles/{sso_profile_id}": {
      "delete": {
        "operationId": "deleteSsoProfile",
        "responses": {
          "204": {
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したSSOプロファイルが存在しない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "割り当て済みのため削除できない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したSSOプロファイルを削除する",
        "tags": [
          "sso"
        ]
      },
      "get": {
        "operationId": "readSsoProfile",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSOProfile"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したSSOプロファイルが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したSSOプロファイルを取得する",
        "tags": [
          "sso"
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/SSOProfileID"
        }
      ],
      "put": {
        "operationId": "updateSsoProfile",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "description": {
                    "description": "SSOプロファイルの説明",
                    "example": "SSOプロファイル1の説明",
                    "type": "string"
                  },
                  "idp_certificate": {
                    "description": "IdPのX.509証明書",
                    "example": "-----BEGIN CERTIFICATE-----\nMIIDqjCCApKgAwIBA\u003csnip\u003e\n-----END CERTIFICATE-----",
                    "type": "string"
                  },
                  "idp_entity_id": {
                    "description": "IdPのエンティティID",
                    "example": "https://idp.example.com/ile2ephei7saeph6",
                    "type": "string"
                  },
                  "idp_login_url": {
                    "description": "IdPのログインURL",
                    "example": "https://idp.example.com/ile2ephei7saeph6/sso/login",
                    "type": "string"
                  },
                  "idp_logout_url": {
                    "description": "IdPのログアウトURL",
                    "example": "https://idp.example.com/ile2ephei7saeph6/sso/logout",
                    "type": "string"
                  },
                  "name": {
                    "description": "SSOプロファイル名",
                    "example": "SSOプロファイル1",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "description",
                  "idp_entity_id",
                  "idp_login_url",
                  "idp_logout_url",
                  "idp_certificate"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSOProfile"
                }
              }
            },
            "description": "成功"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http400BadRequest"
                }
              }
            },
            "description": "不正なリクエスト"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したSSOプロファイルが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したSSOプロファイルを更新する",
        "tags": [
          "sso"
        ]
      }
    },
    "/sso-profiles/{sso_profile_id}/assign": {
      "parameters": [
        {
          "$ref": "#/components/parameters/SSOProfileID"
        }
      ],
      "post": {
        "description": "割当を行うと会員配下のクラウドユーザすべてで該当SSOプロファイルが有効になります。",
        "operationId": "assignSsoProfile",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSOProfile"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したSSOプロファイルが存在しない"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http409Conflict"
                }
              }
            },
            "description": "以下のいずれかの理由で失敗\n- 他に割り当て済みのSSOプロファイルがあるため割り当てできない\n- 設定が不十分なSSOプロファイルを割り当てようとしている\n"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したSSOプロファイルを割り当てる",
        "tags": [
          "sso"
        ]
      }
    },
    "/sso-profiles/{sso_profile_id}/unassign": {
      "parameters": [
        {
          "$ref": "#/components/parameters/SSOProfileID"
        }
      ],
      "post": {
        "operationId": "unassignSsoProfile",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSOProfile"
                }
              }
            },
            "description": "成功"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http401Unauthorized"
                }
              }
            },
            "description": "認証情報が無効"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http403Forbidden"
                }
              }
            },
            "description": "アクセス権限がない"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http404NotFound"
                }
              }
            },
            "description": "指定したSSOプロファイルが存在しない"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Http429TooManyRequests"
                }
              }
            },
            "description": "APIリクエストのレートリミット超過"
          }
        },
        "summary": "指定したSSOプロファイルの割り当てを外す",
        "tags": [
          "sso"
        ]
      }
    }
  },
  "security": [
    {
      "ServicePrincipalAuth": []
    }
  ],
  "servers": [
    {
      "url": "https://secure.sakura.ad.jp/cloud/api/iam/1.0"
    }
  ],
  "tags": [
    {
      "description": "認証に関する機能",
      "name": "auth",
      "x-displayName": "認証"
    },
    {
      "description": "ユーザに関する機能",
      "name": "user",
      "x-displayName": "ユーザ"
    },
    {
      "description": "ユーザの2要素認証に関する機能",
      "name": "user-2fa",
      "x-displayName": "ユーザ2要素認証"
    },
    {
      "description": "グループに関する機能",
      "name": "group",
      "x-displayName": "グループ"
    },
    {
      "description": "IAMロールに関する機能",
      "name": "iam-role",
      "x-displayName": "IAMロール"
    },
    {
      "description": "IDロールに関する機能",
      "name": "id-role",
      "x-displayName": "IDロール"
    },
    {
      "description": "プロジェクトに関する機能",
      "name": "project",
      "x-displayName": "プロジェクト"
    },
    {
      "description": "フォルダに関する機能",
      "name": "folder",
      "x-displayName": "フォルダ"
    },
    {
      "description": "IAMポリシーに関する機能",
      "name": "iam-policy",
      "x-displayName": "IAMポリシー"
    },
    {
      "description": "IDポリシーに関する機能",
      "name": "id-policy",
      "x-displayName": "IDポリシー"
    },
    {
      "description": "サービスプリンシパルに関する機能",
      "name": "service-principal",
      "x-displayName": "サービスプリンシパル"
    },
    {
      "description": "クラウドAPIにアクセスするためのAPIキーに関する機能。",
      "name": "project-apikey",
      "x-displayName": "プロジェクトAPIキー"
    },
    {
      "description": "SSO連携に関する機能",
      "name": "sso",
      "x-displayName": "SSO連携"
    },
    {
      "description": "IAM APIの組織に関する機能",
      "name": "organization",
      "x-displayName": "組織"
    },
    {
      "description": "サービスポリシーに関する機能",
      "name": "service-policy",
      "x-displayName": "サービスポリシー"
    },
    {
      "description": "ユーザープロビジョニングに関する機能",
      "name": "scim",
      "x-displayName": "ユーザープロビジョニング"
    }
  ]
}
