{
  "components": {
    "parameters": {
      "CertificateID": {
        "description": "CertificateID",
        "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
        "in": "path",
        "name": "certificateId",
        "required": true,
        "schema": {
          "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
          "format": "uuid",
          "type": "string"
        }
      },
      "DomainID": {
        "description": "DomainID",
        "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
        "in": "path",
        "name": "domainId",
        "required": true,
        "schema": {
          "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
          "format": "uuid",
          "type": "string"
        }
      },
      "GroupID": {
        "description": "GroupID",
        "example": "ac8a3fb3-0354-4917-9a3d-c5dc5ab50869",
        "in": "path",
        "name": "groupId",
        "required": true,
        "schema": {
          "example": "ac8a3fb3-0354-4917-9a3d-c5dc5ab50869",
          "format": "uuid",
          "type": "string"
        }
      },
      "OidcID": {
        "description": "OidcID",
        "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
        "in": "path",
        "name": "oidcId",
        "required": true,
        "schema": {
          "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
          "format": "uuid",
          "type": "string"
        }
      },
      "RouteID": {
        "description": "RouteID",
        "example": "02c6abbd-0c12-42e5-8d90-7eea021028d9",
        "in": "path",
        "name": "routeId",
        "required": true,
        "schema": {
          "example": "02c6abbd-0c12-42e5-8d90-7eea021028d9",
          "format": "uuid",
          "type": "string"
        }
      },
      "ServiceID": {
        "description": "ServiceID",
        "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
        "in": "path",
        "name": "serviceId",
        "required": true,
        "schema": {
          "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
          "format": "uuid",
          "type": "string"
        }
      },
      "SubscriptionID": {
        "description": "SubscriptionID",
        "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
        "in": "path",
        "name": "subscriptionId",
        "required": true,
        "schema": {
          "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
          "format": "uuid",
          "type": "string"
        }
      },
      "UserID": {
        "description": "UserID",
        "example": "67f57741-ac25-433a-8d7a-8778711b4a2c",
        "in": "path",
        "name": "userId",
        "required": true,
        "schema": {
          "example": "67f57741-ac25-433a-8d7a-8778711b4a2c",
          "format": "uuid",
          "type": "string"
        }
      }
    },
    "responses": {
      "BadRequestResponse": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorSchema"
            }
          }
        },
        "description": "Requestエラー"
      },
      "ConflictResponse": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorSchema"
            }
          }
        },
        "description": "リソースが競合している"
      },
      "NotFoundResponse": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorSchema"
            }
          }
        },
        "description": "リソースが存在しない"
      },
      "ServerErrorResponse": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorSchema"
            }
          }
        },
        "description": "サーバーエラー"
      },
      "UnauthorizedResponse": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorSchema"
            }
          }
        },
        "description": "認証エラー"
      },
      "UnprocessableEntityResponse": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorSchema"
            }
          }
        },
        "description": "Request自体は正しいが、処理できない"
      }
    },
    "schemas": {
      "AuthenticationMethods": {
        "description": "OIDC認証フロー",
        "items": {
          "enum": [
            "authorizationCodeFlow",
            "accessToken"
          ],
          "example": "accessToken",
          "type": "string"
        },
        "type": "array"
      },
      "BasicAuth": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "password": {
                "description": "パスワード",
                "example": "password",
                "type": "string",
                "writeOnly": true,
                "x-oapi-codegen-extra-tags": {
                  "mask": "true"
                }
              },
              "userName": {
                "description": "ユーザ名",
                "example": "userName",
                "type": "string"
              }
            }
          },
          {
            "required": [
              "userName",
              "password"
            ]
          }
        ],
        "type": "object"
      },
      "Certificate": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "ecdsa": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CertificateDetails"
                  }
                ],
                "description": "ECDSA証明書情報",
                "type": "object"
              },
              "name": {
                "$ref": "#/components/schemas/Name",
                "description": "証明書の識別名\u003cbr\u003e証明書名はUnicode文字、数字、ハイフン、アンダースコア、ピリオドのみ許可",
                "example": "certificateName"
              },
              "rsa": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CertificateDetails"
                  }
                ],
                "description": "RSA証明書情報",
                "type": "object"
              }
            }
          },
          {
            "anyOf": [
              {
                "required": [
                  "name",
                  "rsa"
                ],
                "type": "object"
              },
              {
                "required": [
                  "name",
                  "ecdsa"
                ],
                "type": "object"
              },
              {
                "required": [
                  "name",
                  "rsa",
                  "ecdsa"
                ],
                "type": "object"
              }
            ]
          }
        ],
        "type": "object"
      },
      "CertificateAutoIssueLimit": {
        "properties": {
          "autoIssueLimit": {
            "description": "自動発行可能な証明書の上限数",
            "example": 5,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "CertificateDTO": {
        "properties": {
          "certificates": {
            "items": {
              "$ref": "#/components/schemas/Certificate"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "CertificateDetails": {
        "properties": {
          "cert": {
            "description": "証明書\u003cbr\u003e改行コード（\\n）はエスケープ文字に変換して指定する",
            "example": "-----BEGIN CERTIFICATE-----\nMIIDOTCCAiGgAwIBAgIUD8d5Ln4LX/3QxXjhYXDdsXDwcBYwDQYJKoZIhvcNAQEL\nBQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM\nGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNTAyMTcwMjMwMzNaFw0zNTAy\nMTUwMjMwMzNaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw\nHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB\nAQUAA4IBDwAwggEKAoIBAQC4casKTZ7neLdesms1bhcCUsS/gmTcDHZkbHy6SDaV\nCN6q11iTpq27o4+c5CCu+zkn1ND1PStGXzhTlFOOluzCB0J4seBnFy2T8HXsTy1G\nUvjdwceJKHMzYbM695RdiVfcAqX7UUFjBEyHV6duoSXmoIIBqFoOyX8Oc3mzdtW2\nbmq02COW+bU/3NPj5w1Swtz2o9YPXv4DGwHfdntLH+zW/ObgRaSQPqe2aXQEwl8P\n0FJB5c+/enZg/pmvIOa5xQ2exWPIGcmEQRol9YW4B3cpXwaFAjtpMcb6zV/ZDquq\nq//ErI1u4aeyNp3Gdr179tuntiY0jZ8KptsKZOToCeKZAgMBAAGjITAfMB0GA1Ud\nDgQWBBQtOsKs2R2QB/J8XX5KpcVjXi7yIDANBgkqhkiG9w0BAQsFAAOCAQEAYD+M\nxTAgjRQAgrmSZemIFTw80npS6LHGLFWjKvxlKWZ+2AFOVmVvyrD9Ls2kzaCkpiDQ\nFs6Kn3j7Ny37r91uJQK8qZJIcuSRp9+d0XhcIjmpI7bnhLJ9W0WH9GJzhAedYJev\ngNVFbf+Ygva/32qcwVIu28df84OAonGQF2GQ5KFJ8KM+5itC87Kc6cLPh+lB/D7A\nd9CSctSyU6aao1dY9UJszrokIhwtOrbYvisaLLzTrXhVx+IdZS8xT0WFiHhB7ZSC\nchA9B5keAa2stjuH6tkWSxiF5wIuq29lNNpUvqpWQ2ySOc/doC18q6quSGQCYQM2\nOaBp1GS0IjXB0xf4Hw==\n-----END CERTIFICATE-----\n",
            "pattern": "^-----BEGIN CERTIFICATE-----\\r?\\n(?:[A-Za-z0-9+/=\\r\\n]+)-----END CERTIFICATE-----\\r?\\n?$",
            "type": "string",
            "writeOnly": true,
            "x-oapi-codegen-extra-tags": {
              "mask": "true"
            }
          },
          "expiredAt": {
            "description": "証明書の有効期限",
            "example": "2022-12-31 23:59:59",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "key": {
            "description": "秘密鍵\u003cbr\u003e改行コード（\\n）はエスケープ文字に変換して指定する",
            "example": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC4casKTZ7neLde\nsms1bhcCUsS/gmTcDHZkbHy6SDaVCN6q11iTpq27o4+c5CCu+zkn1ND1PStGXzhT\nlFOOluzCB0J4seBnFy2T8HXsTy1GUvjdwceJKHMzYbM695RdiVfcAqX7UUFjBEyH\nV6duoSXmoIIBqFoOyX8Oc3mzdtW2bmq02COW+bU/3NPj5w1Swtz2o9YPXv4DGwHf\ndntLH+zW/ObgRaSQPqe2aXQEwl8P0FJB5c+/enZg/pmvIOa5xQ2exWPIGcmEQRol\n9YW4B3cpXwaFAjtpMcb6zV/ZDquqq//ErI1u4aeyNp3Gdr179tuntiY0jZ8KptsK\nZOToCeKZAgMBAAECggEAHhPR3Q3DBnh93/A/dwiQsafL/suQOqlrmxJtP+FryTTs\n6WDRnc5V/B3UMF+r4W0FU99VWKXqIIEsScY2iVpHme0eJAQkaxtGqvPQ/xalnuyu\njwG9J2WUbQIXJ1wH8pLljsf9x4m8xx1Z2iOV9v6faXMDkFVNo6YB1VpJCSuCoUuB\nFyNsCRiNP0AbR3m/pTRjw/YEqnNf+FraWrj4TdLqV6pP07MuXcJCcX7vMgpxjkhQ\nzPw5zZmWWsezMbYfKtHETe8WGOTWt1jGBi8HLDi4CXhOPw5qUR+/wNWDxuG4pUlS\nJqknjDBmGkjh1pMRYcjcOafrWZt3wq/1X2qqcJGS4wKBgQD4BBX13dHi0/GyfkQk\nFoD37AGV1u0p5oO2bnJXwf7aOghC1N9mtJlZ8L+SuEj0LP4xzvvpFMDwbR5W/vxU\nrhlzJ64mZmJbwA//cQQe3onIao+BZ6Pj8nAurZAVVIc/TUqiwlSoGqB9QfDVQ0Oq\ni/H0TmdL0RDCs7bKCf15a+ydCwKBgQC+Ya6j1flc7p5pxqQqb2kGMojH4GOO0cBG\nYJymKVwnuPxuFX3mCUVhGdEZoIeHMLCzdIOTJMLDONmjSd0khoYXrgMIquCggBte\ng3X4bYReF4IIHkZf8EwMO6B4RbGdEitvu823ZKX5GNQ5/tUIIUAvf3Bzzh18tzUd\nw5iOj04dawKBgQDbDeDHk+/5Q/FKEbPlm+q1DsInsfku9OaIjux3DmUmIfOB87qN\nYB3CDp1l3VayM7sgCwz8RNRUhkwx0mzT7iGUUAvE5tEg8HYwy4U0LqHLXjL5vKxI\nfK0QzUNhU5NRGdc+Ah37i+kMON2ZvxtY2toNSeJ6WGFRVqGvuTsjr2sBGQKBgCQU\nVwhtkKhwAE2De7EfFAQ8p3dZqwRx88JipM1IoVJV2GD0abuinidcwSfeKFEShSo9\nNoI4QUDGEVjEssgtRlROgfyuhYtlO8qZl03RU3iRc+8d7bBY1dCrrCme654cx2aR\nbNcIl/uxHOcwyCaWRpe5yxHnSedMwSA25T5/IgqpAoGBAIka2NWE5/oIWavB/M4h\n7QOdBuAuRvFXuhoGX5619olfqe0H1r/OUHOcXCoWHhAaBUeR3jkWwu/kdq7AUCjU\nK9bEnJp21n70F+GU/GpqI1frRVEtMqQvd1KTp3b1kyriy0iAI3YxVYEfLMtHw+GP\nQvCkj/GcoNjfECmbAlhX8+nw\n-----END PRIVATE KEY-----\n",
            "type": "string",
            "writeOnly": true,
            "x-oapi-codegen-extra-tags": {
              "mask": "true"
            }
          }
        },
        "type": "object"
      },
      "CertificatesAcme": {
        "properties": {
          "name": {
            "description": "証明書の識別名\u003cbr\u003e証明書名はUnicode文字、数字、ハイフン、アンダースコア、ピリオドのみ許可",
            "example": "name",
            "type": "string"
          },
          "sans": {
            "description": "証明書の Subject Alternative Name (SAN) に設定するドメイン一覧 ワイルドカードドメイン（*.example.com）は指定不可\n",
            "example": [
              "example1.com",
              "example2.com"
            ],
            "items": {
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          }
        },
        "type": "object"
      },
      "CorsConfig": {
        "allOf": [
          {
            "properties": {
              "accessControlAllowHeaders": {
                "description": "クライアントがリクエストに含めることができるヘッダー",
                "example": "",
                "maxLength": 4000,
                "type": "string"
              },
              "accessControlAllowMethods": {
                "default": [
                  "GET",
                  "POST",
                  "PUT",
                  "DELETE",
                  "PATCH",
                  "OPTIONS",
                  "HEAD",
                  "CONNECT",
                  "TRACE"
                ],
                "description": "CORS許可メソッド\u003cbr\u003e未指定の場合は全メソッドを許可",
                "example": [
                  "GET",
                  "POST",
                  "PUT",
                  "DELETE",
                  "PATCH",
                  "OPTIONS",
                  "HEAD",
                  "CONNECT",
                  "TRACE"
                ],
                "items": {
                  "$ref": "#/components/schemas/HTTPMethod"
                },
                "type": "array"
              },
              "accessControlAllowOrigins": {
                "description": "CORSで許可するOrigin\u003cbr\u003e未指定の場合は全Originを許可",
                "example": "*",
                "maxLength": 4000,
                "type": "string"
              },
              "accessControlExposedHeaders": {
                "description": "ブラウザがアクセス可能なヘッダー",
                "example": "",
                "maxLength": 4000,
                "type": "string"
              },
              "credentials": {
                "description": "ブラウザがクロスオリジンリクエストに対してクレデンシャルを含めるかどうか",
                "example": false,
                "type": "boolean"
              },
              "maxAge": {
                "default": 0,
                "description": "CORS許可の有効期限",
                "example": 0,
                "format": "int32",
                "type": "integer"
              },
              "preflightContinue": {
                "description": "CORSのPreflightリクエストを処理するかどうか",
                "example": false,
                "type": "boolean"
              },
              "privateNetwork": {
                "description": "privateNetwork内で動作させるかどうか",
                "example": false,
                "type": "boolean"
              }
            }
          }
        ],
        "description": "CORS設定",
        "type": "object"
      },
      "Domain": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "certificateId": {
                "description": "証明書のID",
                "example": "1183b70d-70af-4e49-8af5-2a629b5c1b30",
                "format": "uuid",
                "type": "string"
              },
              "certificateName": {
                "description": "証明書の識別名",
                "example": "certificateName",
                "readOnly": true,
                "type": "string"
              },
              "domainName": {
                "description": "ドメイン名\u003cbr\u003eドメイン名はドメイン名形式を指定する\u003cbr\u003eIPv4アドレス及びワイルドカード（*）を指定できない\u003cbr\u003e大文字を含めることはできない",
                "example": "example.com",
                "pattern": "^\\s*(([a-z\\d]([a-z\\d-]*[a-z\\d])?)\\.)+([a-z\\d-]{2,})(\\.)?\\s*$",
                "type": "string"
              }
            }
          },
          {
            "required": [
              "domainName"
            ]
          }
        ],
        "type": "object"
      },
      "DomainDTO": {
        "properties": {
          "domains": {
            "items": {
              "$ref": "#/components/schemas/Domain"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "DomainPUT": {
        "properties": {
          "certificateId": {
            "description": "証明書のID",
            "example": "1183b70d-70af-4e49-8af5-2a629b5c1b30",
            "format": "uuid",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ErrorSchema": {
        "properties": {
          "message": {
            "description": "各エラーに対応したメッセージが返却される",
            "example": "Bad Request",
            "type": "string"
          }
        },
        "type": "object"
      },
      "GetCertificates": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CertificateAutoIssueLimit"
          },
          {
            "properties": {
              "certificates": {
                "items": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Certificate"
                    },
                    {
                      "properties": {
                        "sans": {
                          "description": "証明書の Subject Alternative Name (SAN) に設定するドメイン一覧 ワイルドカードドメイン（*.example.com）は指定不可\n",
                          "example": [
                            "example1.com",
                            "example2.com"
                          ],
                          "items": {
                            "type": "string"
                          },
                          "type": "array",
                          "uniqueItems": true
                        },
                        "status": {
                          "description": "証明書の状態",
                          "enum": [
                            "valid",
                            "expired",
                            "issuing",
                            "renewing",
                            "issuance_failed",
                            "renewal_failed"
                          ],
                          "example": "valid",
                          "type": "string"
                        },
                        "statusMessage": {
                          "description": "status が issuance_failed・renewal_failed の場合、詳細なステータスメッセージが返却される。\n",
                          "type": "string"
                        },
                        "type": {
                          "description": "証明書のタイプ",
                          "enum": [
                            "auto",
                            "manual"
                          ],
                          "example": "auto",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  ]
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        ]
      },
      "Group": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "name": {
                "$ref": "#/components/schemas/Name",
                "example": "group1"
              },
              "tags": {
                "$ref": "#/components/schemas/Tags",
                "description": "Groupを検索するためのタグ"
              }
            }
          }
        ],
        "required": [
          "name"
        ],
        "type": "object"
      },
      "HTTPMethod": {
        "description": "変換するHTTPメソッド",
        "enum": [
          "GET",
          "POST",
          "PUT",
          "DELETE",
          "PATCH",
          "OPTIONS",
          "HEAD",
          "CONNECT",
          "TRACE"
        ],
        "type": "string"
      },
      "HmacAuth": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "secret": {
                "description": "HMACのシークレット",
                "example": "secret",
                "type": "string",
                "writeOnly": true,
                "x-oapi-codegen-extra-tags": {
                  "mask": "true"
                }
              },
              "userName": {
                "description": "ユーザ名",
                "example": "username",
                "type": "string"
              }
            }
          },
          {
            "required": [
              "userName",
              "secret"
            ]
          }
        ],
        "type": "object"
      },
      "IpRestrictionConfig": {
        "allOf": [
          {
            "properties": {
              "ips": {
                "description": "対象IPアドレス\u003cbr\u003eIPアドレスはIPv4のみを許可",
                "example": [
                  "192.168.1.1",
                  "192.168.1.2"
                ],
                "items": {
                  "pattern": "^(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)){3}$",
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              },
              "protocols": {
                "description": "IP制限を設定するプロトコル",
                "enum": [
                  "https"
                ],
                "example": "https",
                "type": "string"
              },
              "restrictedBy": {
                "description": "IP制限の種別",
                "enum": [
                  "allowIps",
                  "denyIps"
                ],
                "example": "allowIps",
                "type": "string"
              }
            },
            "required": [
              "protocols",
              "restrictedBy",
              "ips"
            ]
          }
        ],
        "description": "IP制限",
        "type": "object"
      },
      "JSONKey": {
        "description": "JSONのキー\u003cbr\u003e半角英数字、ハイフン、アンダースコア、ピリオド繋ぎを許可",
        "maxLength": 255,
        "pattern": "^([a-zA-Z0-9_~\\-\\\\\\p{L}]+(\\.[a-zA-Z0-9_~\\-\\\\\\p{L}]+)*)$",
        "type": "string"
      },
      "Jwt": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "algorithm": {
                "description": "JWTの署名アルゴリズム",
                "enum": [
                  "HS256",
                  "HS384",
                  "HS512"
                ],
                "example": "HS256",
                "type": "string"
              },
              "key": {
                "description": "JWTの署名キー",
                "example": "key",
                "type": "string",
                "x-oapi-codegen-extra-tags": {
                  "mask": "true"
                }
              },
              "secret": {
                "description": "JWTの署名シークレット",
                "example": "secret",
                "type": "string",
                "writeOnly": true,
                "x-oapi-codegen-extra-tags": {
                  "mask": "true"
                }
              }
            }
          },
          {
            "required": [
              "key",
              "secret",
              "algorithm"
            ]
          }
        ],
        "type": "object"
      },
      "Model": {
        "description": "各Entity共通のモデル",
        "properties": {
          "createdAt": {
            "description": "作成日時",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "description": "Entityを識別するためのID",
            "example": "b69f7bfe-1d8f-48bb-8b85-b47359366e48",
            "format": "uuid",
            "readOnly": true,
            "type": "string"
          },
          "updatedAt": {
            "description": "更新日時",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "Name": {
        "description": "Unicode文字、数字、ハイフン、アンダースコア、ピリオドのみ許可",
        "example": "name",
        "maxLength": 255,
        "minLength": 1,
        "pattern": "^[\\p{L}\\p{N}._\\-]+$",
        "type": "string"
      },
      "ObjectStorageConfig": {
        "allOf": [
          {
            "properties": {
              "accessKeyID": {
                "description": "アクセスキーID",
                "example": "XXXXXXXXXXXXXXXX",
                "type": "string",
                "writeOnly": true,
                "x-oapi-codegen-extra-tags": {
                  "mask": "true"
                }
              },
              "bucketName": {
                "description": "バケット名",
                "example": "my-bucket",
                "pattern": "^[a-z0-9.\\-]*$",
                "type": "string"
              },
              "endpoint": {
                "description": "S3互換のエンドポイントURL",
                "example": "s3.example.com",
                "type": "string"
              },
              "folderName": {
                "description": "フォルダ名",
                "example": "my-folder",
                "pattern": "^[a-zA-Z0-9_\\-\\/!.*'()]*$",
                "type": "string"
              },
              "region": {
                "description": "S3互換のリージョン名",
                "example": "jp-north-1",
                "type": "string"
              },
              "secretAccessKey": {
                "description": "シークレットアクセスキー",
                "example": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
                "type": "string",
                "writeOnly": true,
                "x-oapi-codegen-extra-tags": {
                  "mask": "true"
                }
              },
              "useDocumentIndex": {
                "default": true,
                "description": "ドキュメントインデックスを有効にするかどうか",
                "type": "boolean"
              }
            },
            "required": [
              "bucketName",
              "endpoint",
              "region",
              "accessKeyID",
              "secretAccessKey",
              "useDocumentIndex"
            ]
          }
        ],
        "description": "Object Storage設定",
        "type": "object"
      },
      "Oidc": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "authenticationMethods": {
                "$ref": "#/components/schemas/AuthenticationMethods"
              },
              "clientId": {
                "description": "IdPに紐づくクライアントID",
                "example": "abc123xyz456def789ghi012jkl345mno678pqr",
                "type": "string",
                "x-oapi-codegen-extra-tags": {
                  "mask": "true"
                }
              },
              "clientSecret": {
                "description": "IdPに紐づくクライアントシークレット",
                "example": "s3cr3tK3y!@12345vWxz67890uYz@Qp",
                "type": "string",
                "x-oapi-codegen-extra-tags": {
                  "mask": "true"
                }
              },
              "hideCredentials": {
                "default": false,
                "description": "認証情報のサービス（アップストリームサーバ）への転送を有効にするかどうか",
                "type": "boolean"
              },
              "issuer": {
                "description": "IdPに紐づくエンドポイント",
                "example": "http://example.com",
                "type": "string"
              },
              "name": {
                "$ref": "#/components/schemas/Name",
                "description": "認証名\u003cbr\u003e認証名は半角英数字およびアンダースコアのみを許可",
                "example": "name"
              },
              "refreshTokenParamName": {
                "deprecated": true,
                "description": "この項目は現在、指定することができない\u003cbr\u003eリフレッシュトークンパラメータ名\u003cbr\u003e指定がない場合は\"refresh_token\"が設定される\u003cbr\u003e※authenticationMethodsに\"refreshToken\"が含まれる場合に使用される",
                "example": "refreshToken",
                "type": "string"
              },
              "scopes": {
                "description": "IdPに要求するスコープ",
                "example": "openid",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "tokenAudiences": {
                "description": "トークンaudクレーム検証値",
                "items": {
                  "example": "value1",
                  "type": "string"
                },
                "type": "array"
              },
              "useSession": {
                "default": false,
                "description": "認証情報をセッションとしてAPIゲートウェイへの保存を有効にするかどうか",
                "type": "boolean"
              }
            },
            "required": [
              "name",
              "authenticationMethods",
              "issuer",
              "clientId",
              "clientSecret"
            ]
          }
        ],
        "description": "Oidc認証情報",
        "type": "object"
      },
      "OidcDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Oidc"
          },
          {
            "properties": {
              "services": {
                "description": "OIDC認証を使用するServiceの要約情報",
                "items": {
                  "$ref": "#/components/schemas/ServiceSummary"
                },
                "type": "array"
              }
            }
          }
        ],
        "description": "OIDC詳細情報",
        "type": "object"
      },
      "OidcSummary": {
        "allOf": [
          {
            "properties": {
              "id": {
                "description": "Entityを識別するためのID",
                "example": "b69f7bfe-1d8f-48bb-8b85-b47359366e48",
                "format": "uuid",
                "type": "string"
              },
              "name": {
                "description": "OIDC認証名",
                "example": "OidcName",
                "readOnly": true,
                "type": "string"
              }
            }
          }
        ],
        "description": "OIDC認証要約情報",
        "type": "object"
      },
      "Overage": {
        "properties": {
          "unitPrice": {
            "description": "超過リクエスト数単位の価格",
            "example": "1000",
            "type": "string"
          },
          "unitRequests": {
            "description": "超過リクエスト数単位",
            "example": 1000000,
            "minimum": 0,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "Plan": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "description": {
                "description": "プランの説明",
                "example": "description",
                "type": "string"
              },
              "maxRequests": {
                "description": "追加料金なしで利用できるリクエスト数",
                "example": 10000000,
                "minimum": 0,
                "type": "integer"
              },
              "maxRequestsUnit": {
                "description": "maxRequestsの上限が適用される期間の単位",
                "enum": [
                  "second",
                  "minute",
                  "hour",
                  "day",
                  "month",
                  "year"
                ],
                "example": "month",
                "type": "string"
              },
              "maxServices": {
                "description": "作成できるServiceの最大数",
                "example": 1,
                "minimum": 0,
                "type": "integer"
              },
              "name": {
                "description": "プラン名",
                "example": "ベーシックプラン",
                "type": "string"
              },
              "overage": {
                "$ref": "#/components/schemas/Overage"
              },
              "price": {
                "description": "価格",
                "example": "1000",
                "type": "string"
              }
            }
          }
        ],
        "description": "料金プラン",
        "type": "object"
      },
      "QueryParamKey": {
        "description": "クエリパラメータのキー\u003cbr\u003e半角英数字、ハイフン、アンダースコアのみを許可",
        "maxLength": 255,
        "pattern": "^[a-zA-Z0-9-_.]+$",
        "type": "string"
      },
      "QueryParamValue": {
        "description": "クエリパラメータの値\u003cbr\u003eURLエンコードされた文字列",
        "maxLength": 255,
        "pattern": "^([\\w\\-._~!$\u0026'()*+,;=:%]|%[0-9a-fA-F]{2})*$",
        "type": "string"
      },
      "RequestAllowDetail": {
        "properties": {
          "body": {
            "description": "許可するボディのキー\u003cbr\u003e半角英数字、アンダースコア、ハイフンのみを許可",
            "items": {
              "$ref": "#/components/schemas/JSONKey"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "RequestHeaderKey": {
        "description": "リクエストヘッダのキー\u003cbr\u003e半角英数字、ハイフン、アンダースコアのみを許可",
        "maxLength": 255,
        "pattern": "^[a-zA-Z0-9-_]+$",
        "type": "string"
      },
      "RequestHeaderValue": {
        "description": "リクエストヘッダの値\u003cbr\u003eASCII文字のみを許可",
        "maxLength": 255,
        "pattern": "^[\\x20-\\x7E]*$",
        "type": "string"
      },
      "RequestModificationDetail": {
        "properties": {
          "body": {
            "items": {
              "properties": {
                "key": {
                  "$ref": "#/components/schemas/JSONKey",
                  "description": "追加するボディのキー"
                },
                "value": {
                  "description": "追加するボディの値",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "headers": {
            "items": {
              "properties": {
                "key": {
                  "$ref": "#/components/schemas/RequestHeaderKey",
                  "description": "追加するヘッダのキー"
                },
                "value": {
                  "$ref": "#/components/schemas/RequestHeaderValue",
                  "description": "追加するヘッダの値"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "queryParams": {
            "items": {
              "properties": {
                "key": {
                  "$ref": "#/components/schemas/QueryParamKey",
                  "description": "追加するクエリパラメータのキー"
                },
                "value": {
                  "$ref": "#/components/schemas/QueryParamValue",
                  "description": "追加するクエリパラメータの値"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "RequestRemoveDetail": {
        "properties": {
          "body": {
            "description": "削除するボディのキー\u003cbr\u003e半角英数字、アンダースコア、ハイフンのみを許可",
            "items": {
              "$ref": "#/components/schemas/JSONKey"
            },
            "type": "array"
          },
          "headerKeys": {
            "description": "削除するヘッダのキー\u003cbr\u003e半角英数字、アンダースコア、ハイフンのみを許可",
            "items": {
              "$ref": "#/components/schemas/RequestHeaderKey"
            },
            "type": "array"
          },
          "queryParams": {
            "description": "削除するクエリパラメータのキー\u003cbr\u003e半角英数字、アンダースコア、ハイフンのみを許可",
            "items": {
              "$ref": "#/components/schemas/QueryParamKey"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "RequestRenameDetail": {
        "properties": {
          "body": {
            "items": {
              "properties": {
                "from": {
                  "$ref": "#/components/schemas/JSONKey",
                  "description": "リネームするボディのキー"
                },
                "to": {
                  "$ref": "#/components/schemas/JSONKey",
                  "description": "リネーム後のボディのキー"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "headers": {
            "items": {
              "properties": {
                "from": {
                  "$ref": "#/components/schemas/RequestHeaderKey"
                },
                "to": {
                  "$ref": "#/components/schemas/RequestHeaderKey"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "queryParams": {
            "items": {
              "properties": {
                "from": {
                  "$ref": "#/components/schemas/QueryParamKey",
                  "description": "リネームするクエリパラメータのキー"
                },
                "to": {
                  "$ref": "#/components/schemas/QueryParamKey",
                  "description": "リネーム後のクエリパラメータのキー"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "RequestTransformation": {
        "properties": {
          "add": {
            "$ref": "#/components/schemas/RequestModificationDetail"
          },
          "allow": {
            "$ref": "#/components/schemas/RequestAllowDetail"
          },
          "append": {
            "$ref": "#/components/schemas/RequestModificationDetail"
          },
          "httpMethod": {
            "$ref": "#/components/schemas/HTTPMethod"
          },
          "remove": {
            "$ref": "#/components/schemas/RequestRemoveDetail"
          },
          "rename": {
            "$ref": "#/components/schemas/RequestRenameDetail"
          },
          "replace": {
            "$ref": "#/components/schemas/RequestModificationDetail"
          }
        },
        "type": "object"
      },
      "ResponseAllowDetail": {
        "description": "許可するJSONのキー\u003cbr\u003e半角英数字、ハイフン、アンダースコア、ピリオド繋ぎを許可",
        "properties": {
          "jsonKeys": {
            "items": {
              "$ref": "#/components/schemas/JSONKey"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ResponseHeaderKey": {
        "description": "リクエストヘッダのキー\u003cbr\u003e半角英数字、ハイフンのみを許可",
        "maxLength": 255,
        "pattern": "^[a-zA-Z0-9-]+$",
        "type": "string"
      },
      "ResponseModificationDetail": {
        "properties": {
          "headers": {
            "items": {
              "properties": {
                "key": {
                  "$ref": "#/components/schemas/ResponseHeaderKey",
                  "description": "追加するヘッダーのキー"
                },
                "value": {
                  "$ref": "#/components/schemas/RequestHeaderValue",
                  "description": "追加するヘッダーの値"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ifStatusCode": {
            "description": "特定のステータスコードの場合に追加する",
            "items": {
              "maximum": 999,
              "minimum": 100,
              "type": "integer"
            },
            "type": "array"
          },
          "json": {
            "items": {
              "properties": {
                "key": {
                  "$ref": "#/components/schemas/JSONKey",
                  "description": "追加するJSONのキー"
                },
                "value": {
                  "description": "追加するJSONの値",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ResponseRemoveDetail": {
        "properties": {
          "headerKeys": {
            "description": "削除するヘッダのキー\u003cbr\u003e半角英数字、ハイフンのみを許可",
            "items": {
              "$ref": "#/components/schemas/ResponseHeaderKey"
            },
            "type": "array"
          },
          "ifStatusCode": {
            "description": "特定のステータスコードの場合に削除する",
            "items": {
              "maximum": 999,
              "minimum": 100,
              "type": "integer"
            },
            "type": "array"
          },
          "jsonKeys": {
            "description": "削除するJSONのキー\u003cbr\u003e半角英数字、ハイフン、アンダースコア、ピリオド繋ぎを許可",
            "items": {
              "$ref": "#/components/schemas/JSONKey"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ResponseRenameDetail": {
        "properties": {
          "headers": {
            "items": {
              "description": "リネームするヘッダーのキー\u003cbr\u003e半角英数字、ハイフンのみを許可",
              "properties": {
                "from": {
                  "$ref": "#/components/schemas/ResponseHeaderKey"
                },
                "to": {
                  "$ref": "#/components/schemas/ResponseHeaderKey"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ifStatusCode": {
            "description": "特定のステータスコードの場合にリネームする",
            "items": {
              "maximum": 999,
              "minimum": 100,
              "type": "integer"
            },
            "type": "array"
          },
          "json": {
            "items": {
              "properties": {
                "from": {
                  "$ref": "#/components/schemas/JSONKey",
                  "description": "リネームするJSONのキー"
                },
                "to": {
                  "$ref": "#/components/schemas/JSONKey",
                  "description": "リネーム後のJSONのキー"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ResponseReplaceDetail": {
        "properties": {
          "body": {
            "description": "置換するボディ",
            "type": "string"
          },
          "headers": {
            "items": {
              "properties": {
                "key": {
                  "$ref": "#/components/schemas/ResponseHeaderKey",
                  "description": "置換するヘッダーのキー"
                },
                "value": {
                  "$ref": "#/components/schemas/RequestHeaderValue",
                  "description": "置換後のヘッダーの値"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ifStatusCode": {
            "description": "特定のステータスコードの場合に置換する",
            "items": {
              "maximum": 999,
              "minimum": 100,
              "type": "integer"
            },
            "type": "array"
          },
          "json": {
            "items": {
              "properties": {
                "key": {
                  "$ref": "#/components/schemas/JSONKey",
                  "description": "置換するJSONのキー"
                },
                "value": {
                  "description": "置換後のJSONの値",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ResponseTransformation": {
        "properties": {
          "add": {
            "$ref": "#/components/schemas/ResponseModificationDetail"
          },
          "allow": {
            "$ref": "#/components/schemas/ResponseAllowDetail"
          },
          "append": {
            "$ref": "#/components/schemas/ResponseModificationDetail"
          },
          "remove": {
            "$ref": "#/components/schemas/ResponseRemoveDetail"
          },
          "rename": {
            "$ref": "#/components/schemas/ResponseRenameDetail"
          },
          "replace": {
            "$ref": "#/components/schemas/ResponseReplaceDetail"
          }
        },
        "type": "object"
      },
      "Route": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "host": {
                "description": "自動発行されたホスト\u003cbr\u003ehostsに値が設定されていない場合に有効",
                "example": "site-XXXXXXXXXXXXXXXX.XXX.apigw.sakura.ne.jp",
                "readOnly": true,
                "type": "string"
              },
              "hosts": {
                "description": "ホスト名\u003cbr\u003e自動発行されたホストまたは設定したドメインを指定する\u003cbr\u003e自動発行されたホストはService詳細照会APIで確認できる\u003cbr\u003e作成したドメインはDomain一覧照会APIで確認できる",
                "example": [
                  "example.com",
                  "example.jp"
                ],
                "items": {
                  "description": "ホスト名\u003cbr\u003e自動発行されたホストまたは設定したドメインを指定する\u003cbr\u003e自動発行されたホストはService詳細照会APIで確認できる\u003cbr\u003e作成したドメインはDomain一覧照会APIで確認できる",
                  "example": [
                    "example.com",
                    "example.jp"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "httpsRedirectStatusCode": {
                "default": 426,
                "description": "HTTPSリダイレクト時のステータスコード",
                "enum": [
                  301,
                  302,
                  303,
                  307,
                  308,
                  426
                ],
                "example": 426,
                "type": "integer"
              },
              "methods": {
                "default": [
                  "GET",
                  "POST",
                  "PUT",
                  "DELETE",
                  "PATCH",
                  "OPTIONS",
                  "HEAD",
                  "CONNECT",
                  "TRACE"
                ],
                "description": "RouteにアクセスするためのHTTPメソッド\u003cbr\u003e未指定の場合は全メソッドを許可\u003cbr\u003eオブジェクトストレージ形式のサービスに紐づく場合は、GET・HEAD・OPTIONSメソッドのみを許可",
                "example": [
                  "GET",
                  "POST"
                ],
                "items": {
                  "$ref": "#/components/schemas/HTTPMethod"
                },
                "type": "array"
              },
              "name": {
                "$ref": "#/components/schemas/Name",
                "example": "routeName"
              },
              "path": {
                "description": "Routeにアクセスするためのパス\u003cbr\u003eパスはスラッシュまたはチルダスラッシュで始まるパス文字列のみを許可",
                "example": "/",
                "maxLength": 255,
                "pattern": "^(\\/|~\\/).*",
                "type": "string"
              },
              "preserveHost": {
                "default": false,
                "description": "リクエストのHostヘッダーを保持するかどうか",
                "example": true,
                "type": "boolean"
              },
              "protocols": {
                "description": "Routeにアクセスするためのプロトコル",
                "enum": [
                  "https"
                ],
                "example": "https",
                "type": "string"
              },
              "regexPriority": {
                "default": 0,
                "description": "パスを正規表現で指定した場合の優先度\u003cbr\u003e0が最優先",
                "example": 0,
                "maximum": 255,
                "minimum": 0,
                "type": "integer"
              },
              "requestBuffering": {
                "default": true,
                "description": "リクエストのバッファリングを有効にするかどうか",
                "example": false,
                "type": "boolean"
              },
              "responseBuffering": {
                "default": true,
                "description": "レスポンスのバッファリングを有効にするかどうか",
                "example": false,
                "type": "boolean"
              },
              "serviceId": {
                "example": "04c6abbd-0c12-42e5-8d90-7eea021028d9",
                "format": "uuid",
                "readOnly": true,
                "type": "string"
              },
              "stripPath": {
                "default": true,
                "description": "リクエストのパスからルートのパスを削除するかどうか",
                "example": false,
                "type": "boolean"
              },
              "tags": {
                "$ref": "#/components/schemas/Tags",
                "description": "Routeを検索するためのタグ"
              }
            }
          }
        ],
        "required": [
          "name",
          "protocols",
          "methods"
        ],
        "type": "object"
      },
      "RouteAuthorization": {
        "properties": {
          "enabled": {
            "description": "対象の Group が許可されているかどうか",
            "example": true,
            "type": "boolean"
          },
          "id": {
            "description": "GroupのEntityを識別するためのID",
            "example": "1183b70d-70af-4e49-8af5-2a629b5c1b30",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "$ref": "#/components/schemas/Name",
            "description": "Group名 \u003cbr\u003e Group名はUnicode文字、数字、ハイフン、アンダースコア、ピリオド、チルダのみ許可",
            "example": "group1"
          }
        },
        "type": "object"
      },
      "RouteAuthorizationDetail": {
        "oneOf": [
          {
            "properties": {
              "isACLEnabled": {
                "description": "認可設定を無効にする",
                "enum": [
                  false
                ],
                "type": "boolean"
              }
            },
            "required": [
              "isACLEnabled"
            ],
            "type": "object"
          },
          {
            "properties": {
              "groups": {
                "description": "認可するGroupのリスト",
                "items": {
                  "$ref": "#/components/schemas/RouteAuthorization"
                },
                "minItems": 1,
                "type": "array"
              },
              "isACLEnabled": {
                "description": "認可設定を有効にする",
                "enum": [
                  true
                ],
                "type": "boolean"
              }
            },
            "required": [
              "isACLEnabled",
              "groups"
            ],
            "type": "object"
          }
        ],
        "type": "object"
      },
      "RouteAuthorizationDetailResponse": {
        "properties": {
          "groups": {
            "description": "認可するGroupのリスト",
            "items": {
              "$ref": "#/components/schemas/RouteAuthorization"
            },
            "minItems": 1,
            "type": "array"
          },
          "isACLEnabled": {
            "description": "認可設定が有効かどうか",
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "isACLEnabled",
          "groups"
        ],
        "type": "object"
      },
      "RouteDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Route"
          },
          {
            "properties": {
              "ipRestrictionConfig": {
                "$ref": "#/components/schemas/IpRestrictionConfig"
              }
            }
          }
        ],
        "type": "object"
      },
      "Service": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "authentication": {
                "default": "none",
                "description": "認証方式\u003cbr\u003e未指定の場合は認証なし",
                "enum": [
                  "none",
                  "basic",
                  "hmac",
                  "jwt",
                  "oidc"
                ],
                "type": "string"
              },
              "connectTimeout": {
                "default": 60000,
                "description": "接続タイムアウト秒数",
                "maximum": 2147483646,
                "minimum": 1,
                "type": "integer"
              },
              "host": {
                "description": "Serviceにアクセスするためのホスト名\u003cbr\u003eホスト名はドメイン名またはIPアドレスを指定する\u003cbr\u003eプライベート/ループバックIPアドレスは指定できない",
                "example": "xxx.example.jp",
                "maxLength": 253,
                "pattern": "^((([a-zA-Z\\d][a-zA-Z\\d-]*[a-zA-Z\\d]*\\.)+[a-zA-Z]{2,})|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)))$",
                "type": "string"
              },
              "name": {
                "$ref": "#/components/schemas/Name",
                "description": "Service名\u003cbr\u003eService名は半角英数字およびアンダースコアのみを許可",
                "example": "serviceName"
              },
              "oidc": {
                "$ref": "#/components/schemas/OidcSummary"
              },
              "path": {
                "default": "/",
                "description": "Serviceにアクセスするためのパス\u003cbr\u003eパスは/から始まり、半角英数字、アンダースコア、ハイフン、スラッシュ、一部記号（!.*'()-）のみを許可",
                "example": "/base",
                "maxLength": 255,
                "pattern": "^\\/[a-zA-Z0-9_\\-\\/!.*'()-]*$",
                "type": "string"
              },
              "port": {
                "description": "Serviceにアクセスするためのポート番号\u003cbr\u003e省略した場合はプロトコルに応じたデフォルトポートが設定される",
                "example": 80,
                "maximum": 65535,
                "minimum": 0,
                "type": "integer"
              },
              "protocol": {
                "description": "Serviceにアクセスするためのプロトコル",
                "enum": [
                  "http",
                  "https"
                ],
                "example": "https",
                "type": "string"
              },
              "readTimeout": {
                "default": 60000,
                "description": "読み込みタイムアウト秒数",
                "maximum": 2147483646,
                "minimum": 1,
                "type": "integer"
              },
              "retries": {
                "default": 5,
                "description": "リトライ回数",
                "maximum": 32767,
                "minimum": 0,
                "type": "integer"
              },
              "routeHost": {
                "description": "自動発行したRouteのホスト",
                "example": "site-xxxxxxxxx.xxx.apigw.sakura.ne.jp",
                "maxLength": 253,
                "readOnly": true,
                "type": "string"
              },
              "tags": {
                "$ref": "#/components/schemas/Tags",
                "description": "Serviceを検索するためのタグ"
              },
              "writeTimeout": {
                "default": 60000,
                "description": "書き込みタイムアウト秒数",
                "maximum": 2147483646,
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "name",
              "protocol",
              "host"
            ]
          }
        ],
        "description": "Service情報",
        "type": "object"
      },
      "ServiceDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Service"
          },
          {
            "properties": {
              "corsConfig": {
                "$ref": "#/components/schemas/CorsConfig"
              },
              "objectStorageConfig": {
                "$ref": "#/components/schemas/ObjectStorageConfig"
              }
            }
          }
        ],
        "description": "Service詳細情報",
        "type": "object"
      },
      "ServiceDetailRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ServiceDetail"
          },
          {
            "properties": {
              "subscription": {
                "$ref": "#/components/schemas/ServiceSubscriptionRequest"
              }
            },
            "required": [
              "subscription"
            ]
          }
        ],
        "description": "Service登録リクエスト",
        "type": "object"
      },
      "ServiceDetailResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ServiceDetail"
          },
          {
            "properties": {
              "subscription": {
                "$ref": "#/components/schemas/ServiceSubscriptionResponse"
              }
            },
            "required": [
              "subscription"
            ]
          }
        ],
        "description": "Service情報",
        "type": "object"
      },
      "ServiceSubscriptionRequest": {
        "properties": {
          "id": {
            "description": "サブスクリプションID",
            "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "ServiceSubscriptionResponse": {
        "properties": {
          "id": {
            "description": "サブスクリプションID",
            "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "サブスクリプション名",
            "example": "example-subscription-1",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "ServiceSummary": {
        "allOf": [
          {
            "properties": {
              "id": {
                "description": "Entityを識別するためのID",
                "example": "b69f7bfe-1d8f-48bb-8b85-b47359366e48",
                "format": "uuid",
                "readOnly": true,
                "type": "string"
              },
              "name": {
                "$ref": "#/components/schemas/Name",
                "description": "Service名\u003cbr\u003eService名は半角英数字およびアンダースコアのみを許可",
                "example": "serviceName"
              }
            }
          }
        ],
        "description": "Service要約情報",
        "type": "object"
      },
      "Subscription": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "monthlyRequest": {
                "description": "今月のリクエスト累計数",
                "example": 15000,
                "type": "integer"
              },
              "name": {
                "$ref": "#/components/schemas/Name",
                "description": "ユーザ識別用契約名",
                "example": "契約1"
              },
              "planId": {
                "description": "プランID",
                "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
                "format": "uuid",
                "type": "string"
              },
              "resourceId": {
                "description": "契約を識別するためのID",
                "example": 123456789012,
                "format": "int64",
                "type": "integer"
              },
              "service": {
                "$ref": "#/components/schemas/SubscriptionService",
                "description": "契約に紐づくServiceの情報",
                "type": "object"
              }
            }
          }
        ],
        "type": "object"
      },
      "SubscriptionCreate": {
        "description": "契約情報",
        "properties": {
          "name": {
            "description": "契約名",
            "example": "契約1",
            "type": "string"
          },
          "planId": {
            "description": "プランID",
            "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "planId",
          "name"
        ],
        "type": "object"
      },
      "SubscriptionDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "monthlyRequest": {
                "description": "今月のリクエスト累計数",
                "example": 15000,
                "type": "integer"
              },
              "name": {
                "$ref": "#/components/schemas/Name",
                "description": "ユーザ識別用契約名",
                "example": "契約1"
              },
              "resourceId": {
                "description": "契約を一意に識別するリソースID",
                "example": 123456789012,
                "format": "int64",
                "type": "integer"
              },
              "service": {
                "$ref": "#/components/schemas/SubscriptionService",
                "description": "契約に紐づくServiceの情報",
                "type": "object"
              }
            }
          }
        ],
        "type": "object"
      },
      "SubscriptionDetailResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SubscriptionDetail"
          },
          {
            "properties": {
              "plan": {
                "$ref": "#/components/schemas/SubscriptionPlanResponse"
              }
            }
          }
        ],
        "type": "object"
      },
      "SubscriptionList": {
        "properties": {
          "maxSubscription": {
            "description": "最大契約数",
            "example": 5,
            "type": "integer"
          },
          "subscriptions": {
            "items": {
              "$ref": "#/components/schemas/Subscription"
            },
            "type": "array"
          }
        }
      },
      "SubscriptionPlanResponse": {
        "allOf": [
          {
            "properties": {
              "maxRequests": {
                "description": "追加料金なしで利用できるリクエスト数",
                "example": 10000000,
                "minimum": 0,
                "type": "integer"
              },
              "maxRequestsUnit": {
                "description": "maxRequestsの上限が適用される期間の単位",
                "enum": [
                  "second",
                  "minute",
                  "hour",
                  "day",
                  "month",
                  "year"
                ],
                "example": "month",
                "type": "string"
              },
              "maxServices": {
                "description": "作成できるServiceの最大数",
                "example": 10,
                "minimum": 0,
                "type": "integer"
              },
              "overage": {
                "$ref": "#/components/schemas/Overage"
              },
              "planID": {
                "description": "プランID",
                "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
                "format": "uuid",
                "type": "string"
              },
              "planName": {
                "description": "プラン名",
                "example": "ベーシックプラン",
                "type": "string"
              },
              "price": {
                "description": "価格",
                "example": "1000",
                "type": "string"
              }
            }
          }
        ],
        "description": "料金プラン",
        "type": "object"
      },
      "SubscriptionService": {
        "properties": {
          "id": {
            "description": "現在契約と紐づいているServiceのID",
            "example": "7c8d78bc-e4a3-4600-b70a-f5fe802dc1ba",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "現在契約と紐づいているService名",
            "example": "serviceName",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "SubscriptionUpdate": {
        "properties": {
          "name": {
            "description": "契約名",
            "example": "契約1",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "Tags": {
        "description": "エンティティを検索するためのタグ",
        "example": [
          "tag1",
          "tag2"
        ],
        "items": {
          "maxLength": 255,
          "minLength": 1,
          "pattern": "^[^\\/\\s\\u3000]+$",
          "type": "string"
        },
        "type": "array"
      },
      "User": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "properties": {
              "customID": {
                "description": "カスタムID",
                "example": "example_custom_id_123456",
                "type": "string"
              },
              "groups": {
                "description": "Userが所属しているGroupのリスト",
                "items": {
                  "$ref": "#/components/schemas/Group"
                },
                "readOnly": true,
                "type": "array"
              },
              "name": {
                "$ref": "#/components/schemas/Name",
                "example": "user"
              },
              "tags": {
                "$ref": "#/components/schemas/Tags",
                "description": "Userを検索するためのタグ"
              }
            },
            "required": [
              "name"
            ]
          }
        ],
        "type": "object"
      },
      "UserAuthentication": {
        "properties": {
          "basicAuth": {
            "$ref": "#/components/schemas/BasicAuth"
          },
          "hmacAuth": {
            "$ref": "#/components/schemas/HmacAuth"
          },
          "jwt": {
            "$ref": "#/components/schemas/Jwt"
          }
        },
        "type": "object"
      },
      "UserDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/User"
          },
          {
            "properties": {
              "ipRestrictionConfig": {
                "$ref": "#/components/schemas/IpRestrictionConfig"
              }
            }
          }
        ],
        "type": "object"
      },
      "UserGroupDetail": {
        "properties": {
          "id": {
            "description": "GroupのID",
            "example": "1183b70d-70af-4e49-8af5-2a629b5c1b34",
            "format": "uuid",
            "type": "string"
          },
          "isAssigned": {
            "description": "UserがGroupに所属しているかどうか",
            "example": false,
            "type": "boolean"
          },
          "name": {
            "$ref": "#/components/schemas/Name",
            "description": "Group名",
            "example": "groupname"
          }
        },
        "required": [
          "id",
          "name",
          "isAssigned"
        ],
        "type": "object"
      },
      "UserGroupDetailUpdate": {
        "allOf": [
          {
            "properties": {
              "isAssigned": {
                "description": "UserがGroupに所属しているかどうか",
                "example": false,
                "type": "boolean"
              }
            },
            "required": [
              "isAssigned"
            ]
          },
          {
            "oneOf": [
              {
                "properties": {
                  "id": {
                    "description": "GroupのID",
                    "example": "1183b70d-70af-4e49-8af5-2a629b5c1b34",
                    "format": "uuid",
                    "type": "string"
                  }
                },
                "required": [
                  "id"
                ]
              },
              {
                "properties": {
                  "name": {
                    "$ref": "#/components/schemas/Name",
                    "example": "groupName"
                  }
                },
                "required": [
                  "name"
                ]
              }
            ]
          }
        ],
        "type": "object"
      }
    }
  },
  "info": {
    "contact": {
      "name": "SAKURA internet Inc."
    },
    "description": "---\n「API Gateway」が提供するAPIの利用方法とサンプルを公開しております。\n# 基本的な使い方\n## APIキーの発行\nAPIを利用するためには、認証のための「APIキー」が必要です。事前にキーを発行しておきます。\nAPIキーは「ユーザーID」「パスワード」に相当する「トークン」と呼ばれる認証情報で構成されています。\n|   項目名   | APIキー発行時の項目名        | このドキュメント内での例             |\n|------------|------------------------------|--------------------------------------|\n| ユーザーID | アクセストークン(UUID)       | 01234567-89ab-cdef-0123-456789abcdef |\n| パスワード | アクセストークンシークレット | SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM |\n\u003cdiv class=\"warning\"\u003e\n  \u003cb\u003e操作マニュアル\u003c/b\u003e\u003cbr /\u003e\n  \u003cul\u003e\u003cli\u003e\u003ca href=\"https://manual.sakura.ad.jp/cloud/api/apikey.html\"\u003eAPIキー | さくらのクラウド ドキュメント\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\n\u003c/div\u003e\n\n---\n# 利用例\n\nAPI Gatewayの利用を開始するには最低限、以下の登録が必要です。\n\n- 契約\n- アップストリーム（以下サービス）\n- エントリポイント（以下ルート）\n\n## 1.契約登録\n\n契約するプランによってサービス作成数等の制限とご利用料金に違いがあります。ご利用用途に合わせたプランをご選択ください。\n\n現在利用可能なプランを取得するには以下のような入力を行います。\n\n```sh\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X GET \\\n     https://secure.sakura.ad.jp/cloud/api/apigw/1.0/plans\n```\n\n取得できたプランのidを使用して、\n契約の登録をする場合は以下のような入力を行います。\n\n```sh\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X POST \\\n     -d '{\n               \"planId\": \"{plan_id}\",\n               \"name\": \"example-subscription-1\"\n          }' \\\n     https://secure.sakura.ad.jp/cloud/api/apigw/1.0/subscriptions\n```\n\n契約が完了すると、\n\n- サービス、ルートの作成、更新、削除\n- ユーザー、グループの作成、更新、削除\n- ルート認可の設定\n- リクエスト・レスポンス変換の設定\n- グループの所属設定\n- ユーザー認証情報の設定\n- 独自ドメイン・証明書の登録、更新、削除\n\nなどの操作が可能になります。\n\nまた、ご利用中のさくらクラウドアカウントの契約状況を確認するには以下のような入力を行います。\n\n```sh\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X GET \\\n     https://secure.sakura.ad.jp/cloud/api/apigw/1.0/subscriptions\n```\n\nご利用中の契約を解約する場合は以下のような入力を行います。\n\n```sh\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X DELETE \\\n     https://secure.sakura.ad.jp/cloud/api/apigw/1.0/subscriptions/{subscription_id}\n```\n\n## 2.サービスの作成、取得\n\nサービスとはリクエストの転送先に関する情報です。\n選択したプランによって作成可能数が異なります。\n\nサービスを作成するには以下のような入力を行います。\n\n```sh\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X POST \\\n     -d '{\n               \"name\": \"example-service-1\",\n               \"tags\": [\n                  \"tag1\",\n                  \"tag2\"\n               ],\n               \"protocol\": \"https\",\n               \"host\": \"xxx.example.jp\",\n               \"path\": \"/base\",\n               \"port\": 80,\n               \"retries\": 5,\n               \"connectTimeout\": 60000,\n               \"writeTimeout\": 60000,\n               \"readTimeout\": 60000,\n               \"authentication\": \"basic\",\n               \"subscription\": {\n                  \"id\": \"01234567-89ab-cdef-0123-456789abcdef\"\n               }\n          }' \\\n     https://secure.sakura.ad.jp/cloud/api/apigw/1.0/services\n```\n\n上記で作成したサービスを取得するには以下のような入力を行います。\n\n```sh\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X GET \\\n     https://secure.sakura.ad.jp/cloud/api/apigw/1.0/services/{service_id}\n```\n\n## 3.ルートの作成、取得\n\nルートとは作成したサービスに対するエントリポイントです。\n必ず、紐づくサービスが必要になります。\n\nルートを作成するには以下のような入力を行います。\n\n```sh\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X POST \\\n     -d '{\n               \"name\": \"example-route-1\",\n               \"tags\": [\n                    \"tag1\",\n                    \"tag2\"\n               ],\n               \"protocols\": \"https\",\n               \"path\": \"/\",\n               \"methods\": [\n                    \"GET\",\n                    \"POST\"\n               ],\n               \"httpsRedirectStatusCode\": 426,\n               \"regexPriority\": 0,\n               \"stripPath\": false,\n               \"preserveHost\": true,\n               \"requestBuffering\": false,\n               \"responseBuffering\": false\n          }' \\\n     https://secure.sakura.ad.jp/cloud/api/apigw/1.0/services/{service_id}/routes\n```\n\n上記で作成したルートを取得するには以下のような入力を行います。\n\n```sh\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X GET \\\n     https://secure.sakura.ad.jp/cloud/api/apigw/1.0/services/{service_id}/routes/{route_id}\n```\n---\n",
    "license": {
      "name": "Copyright(C) SAKURA internet Inc. all rights reserved."
    },
    "title": "API Gateway 正式版 APIドキュメント",
    "version": "2.1.0"
  },
  "openapi": "3.0.3",
  "paths": {
    "/certificates": {
      "get": {
        "description": "登録した Certificate の一覧を取得します。",
        "operationId": "getCertificates",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "$ref": "#/components/schemas/GetCertificates"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Certificate一覧照会API",
        "tags": [
          "証明書"
        ]
      },
      "post": {
        "description": "SSL証明書を登録します。",
        "operationId": "addCertificate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Certificate"
              }
            }
          },
          "description": "Create a Certificate",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "certificate": {
                          "$ref": "#/components/schemas/Certificate"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Certificate登録API",
        "tags": [
          "証明書"
        ]
      }
    },
    "/certificates/acme": {
      "post": {
        "description": "証明書を自動発行します。",
        "operationId": "postCertificatesAcme",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificatesAcme"
              }
            }
          },
          "description": "証明書情報",
          "required": true
        },
        "responses": {
          "202": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "AutoCertificate発行 API",
        "tags": [
          "証明書"
        ]
      }
    },
    "/certificates/{certificateId}": {
      "delete": {
        "description": "登録した Certificate を削除します。",
        "operationId": "deleteCertificate",
        "parameters": [
          {
            "$ref": "#/components/parameters/CertificateID"
          }
        ],
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Certificate削除API",
        "tags": [
          "証明書"
        ]
      },
      "put": {
        "description": "登録した Certificate の詳細情報を更新します。",
        "operationId": "updateCertificate",
        "parameters": [
          {
            "$ref": "#/components/parameters/CertificateID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Certificate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntityResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Certificate更新API",
        "tags": [
          "証明書"
        ]
      }
    },
    "/certificates/{certificateId}/acme/reissue": {
      "post": {
        "description": "証明書の識別名または証明書のSANに含めるドメインを更新します。",
        "operationId": "certificatesAcmeReissue",
        "parameters": [
          {
            "$ref": "#/components/parameters/CertificateID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificatesAcme"
              }
            }
          },
          "description": "証明書情報",
          "required": true
        },
        "responses": {
          "202": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "AutoCertificate再発行 API",
        "tags": [
          "証明書"
        ]
      }
    },
    "/certificates/{certificateId}/acme/renew": {
      "post": {
        "description": "自動発行の証明書有効期限を更新します。",
        "operationId": "certificatesAcmeRenew",
        "parameters": [
          {
            "$ref": "#/components/parameters/CertificateID"
          }
        ],
        "responses": {
          "202": {
            "description": "成功時の返却値はありません。"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "AutoCertificate有効期限更新 API",
        "tags": [
          "証明書"
        ]
      }
    },
    "/domains": {
      "get": {
        "description": "登録した Domain の一覧を取得します。",
        "operationId": "getDomains",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "$ref": "#/components/schemas/DomainDTO",
                      "properties": null,
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Domain一覧照会API",
        "tags": [
          "ドメイン"
        ]
      },
      "post": {
        "description": "route の host で使用するドメインを登録します。",
        "operationId": "addDomain",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Domain"
              }
            }
          },
          "description": "Create a Domain",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "domain": {
                          "$ref": "#/components/schemas/Domain"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Domain登録API",
        "tags": [
          "ドメイン"
        ]
      }
    },
    "/domains/{domainId}": {
      "delete": {
        "description": "登録した Domain を削除します。",
        "operationId": "deleteDomain",
        "parameters": [
          {
            "$ref": "#/components/parameters/DomainID"
          }
        ],
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Domain削除API",
        "tags": [
          "ドメイン"
        ]
      },
      "put": {
        "description": "登録した Domain の証明書情報を更新します。\u003cbr\u003eドメイン名の変更はできません。",
        "operationId": "updateDomain",
        "parameters": [
          {
            "$ref": "#/components/parameters/DomainID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DomainPUT"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Domain更新API",
        "tags": [
          "ドメイン"
        ]
      }
    },
    "/groups": {
      "get": {
        "description": "登録した Group の一覧を取得します。",
        "operationId": "getGroups",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "groups": {
                          "items": {
                            "$ref": "#/components/schemas/Group"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Group一覧照会API",
        "tags": [
          "グループ"
        ]
      },
      "post": {
        "description": "新しい Group を登録します。\u003cbr\u003e Group は User を分類し、アクセス制御を管理するために使用されます。",
        "operationId": "addGroup",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Group"
              }
            }
          },
          "description": "Create a Group",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "group": {
                          "$ref": "#/components/schemas/Group"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Group登録API",
        "tags": [
          "グループ"
        ]
      }
    },
    "/groups/{groupId}": {
      "delete": {
        "description": "登録した Group を削除します。",
        "operationId": "deleteGroup",
        "parameters": [
          {
            "$ref": "#/components/parameters/GroupID"
          }
        ],
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Group削除API",
        "tags": [
          "グループ"
        ]
      },
      "get": {
        "description": "登録した Group の詳細情報を取得します。",
        "operationId": "getGroup",
        "parameters": [
          {
            "$ref": "#/components/parameters/GroupID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "group": {
                          "$ref": "#/components/schemas/Group"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Group詳細照会API",
        "tags": [
          "グループ"
        ]
      },
      "put": {
        "description": "登録した Group の詳細情報を更新します。",
        "operationId": "updateGroup",
        "parameters": [
          {
            "$ref": "#/components/parameters/GroupID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Group"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Group更新API",
        "tags": [
          "グループ"
        ]
      }
    },
    "/oidc": {
      "get": {
        "description": "登録した OIDC認証 の一覧を取得します。",
        "operationId": "getOidc",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "oidcs": {
                          "items": {
                            "$ref": "#/components/schemas/Oidc"
                          },
                          "type": "array"
                        }
                      }
                    }
                  },
                  "required": [
                    "apigw"
                  ]
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "OIDC認証一覧照会API",
        "tags": [
          "OIDC認証"
        ]
      },
      "post": {
        "description": "OIDC認証の設定値を登録します。",
        "operationId": "addOidc",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Oidc"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "oidc": {
                          "$ref": "#/components/schemas/Oidc"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntityResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "OIDC認証登録API",
        "tags": [
          "OIDC認証"
        ]
      }
    },
    "/oidc/{oidcId}": {
      "delete": {
        "description": "登録した OIDC認証 を削除します。",
        "operationId": "deleteOidc",
        "parameters": [
          {
            "$ref": "#/components/parameters/OidcID"
          }
        ],
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "OIDC認証削除API",
        "tags": [
          "OIDC認証"
        ]
      },
      "get": {
        "description": "登録した OIDC認証 の詳細を取得します。",
        "operationId": "getOidcById",
        "parameters": [
          {
            "$ref": "#/components/parameters/OidcID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "oidc": {
                          "$ref": "#/components/schemas/OidcDetail"
                        }
                      }
                    }
                  },
                  "required": [
                    "apigw"
                  ]
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "OIDC認証詳細照会API",
        "tags": [
          "OIDC認証"
        ]
      },
      "put": {
        "description": "登録した OIDC認証 を更新します。",
        "operationId": "updateOidc",
        "parameters": [
          {
            "$ref": "#/components/parameters/OidcID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Oidc"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "OIDC認証更新API",
        "tags": [
          "OIDC認証"
        ]
      }
    },
    "/plans": {
      "get": {
        "description": "現在契約可能な API Gateway の料金プランの一覧を取得します。",
        "operationId": "getPlans",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "plans": {
                          "items": {
                            "$ref": "#/components/schemas/Plan"
                          },
                          "type": "array"
                        }
                      }
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "プラン一覧照会API",
        "tags": [
          "プラン"
        ]
      }
    },
    "/services": {
      "get": {
        "description": "登録した Service の一覧を取得します。",
        "operationId": "getServices",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "services": {
                          "items": {
                            "$ref": "#/components/schemas/ServiceDetailResponse"
                          },
                          "type": "array"
                        }
                      }
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Service一覧照会API",
        "tags": [
          "サービス"
        ]
      },
      "post": {
        "description": "アップストリームのエンドポイント情報である Service を登録します。",
        "operationId": "addService",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceDetailRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "service": {
                          "$ref": "#/components/schemas/ServiceDetailRequest"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntityResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Service登録API",
        "tags": [
          "サービス"
        ]
      }
    },
    "/services/{serviceId}": {
      "delete": {
        "description": "登録した Service を削除します。",
        "operationId": "deleteService",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          }
        ],
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Service削除API",
        "tags": [
          "サービス"
        ]
      },
      "get": {
        "description": "登録した Service の詳細情報を取得します。",
        "operationId": "getServiceById",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "service": {
                          "$ref": "#/components/schemas/ServiceDetailResponse"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Service詳細照会API",
        "tags": [
          "サービス"
        ]
      },
      "put": {
        "description": "登録した Service の詳細情報を更新します。",
        "operationId": "updateService",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceDetail"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Service更新API",
        "tags": [
          "サービス"
        ]
      }
    },
    "/services/{serviceId}/routes": {
      "get": {
        "description": "Service に登録した Route の一覧を取得します。",
        "operationId": "getServiceRoutes",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "routes": {
                          "items": {
                            "$ref": "#/components/schemas/Route"
                          },
                          "type": "array"
                        }
                      }
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Service Route一覧照会API",
        "tags": [
          "サービス"
        ]
      },
      "post": {
        "description": "登録した Service に対して、公開するエンドポイントとして Route を登録します。\u003cbr\u003e 各 Route の認証設定は全て Service の設定に準じます。",
        "operationId": "addRoute",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RouteDetail"
              }
            }
          },
          "description": "Create a route",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "route": {
                          "$ref": "#/components/schemas/RouteDetail"
                        }
                      }
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Route登録API",
        "tags": [
          "サービス"
        ]
      }
    },
    "/services/{serviceId}/routes/{routeId}": {
      "delete": {
        "description": "Service に登録した Route を削除します。",
        "operationId": "deleteRoute",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          },
          {
            "$ref": "#/components/parameters/RouteID"
          }
        ],
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Route削除API",
        "tags": [
          "サービス"
        ]
      },
      "get": {
        "description": "Service に登録した Route の詳細情報を取得します。",
        "operationId": "getRoute",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          },
          {
            "$ref": "#/components/parameters/RouteID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "route": {
                          "$ref": "#/components/schemas/RouteDetail"
                        }
                      }
                    }
                  },
                  "required": [
                    "apigw"
                  ]
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Route詳細照会API",
        "tags": [
          "サービス"
        ]
      },
      "put": {
        "description": "Service に登録した Route の詳細情報を更新します。",
        "operationId": "updateRoute",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          },
          {
            "$ref": "#/components/parameters/RouteID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RouteDetail"
              }
            }
          },
          "description": "Update a route",
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Route更新API",
        "tags": [
          "サービス"
        ]
      }
    },
    "/services/{serviceId}/routes/{routeId}/authorization": {
      "get": {
        "description": "Route に登録した認可情報を取得します。",
        "operationId": "getRouteAuthorization",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          },
          {
            "$ref": "#/components/parameters/RouteID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "routeAuthorization": {
                          "$ref": "#/components/schemas/RouteAuthorizationDetailResponse"
                        }
                      }
                    }
                  },
                  "required": [
                    "apigw"
                  ]
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Route認可情報取得API",
        "tags": [
          "サービス"
        ]
      },
      "put": {
        "description": "登録した Route に対してアクセス可能な Group を登録します。\u003cbr\u003e 登録しない場合は全てのUserがアクセス可能になります。",
        "operationId": "upsertRouteAuthorization",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          },
          {
            "$ref": "#/components/parameters/RouteID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RouteAuthorizationDetail"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Route認可情報更新API",
        "tags": [
          "サービス"
        ]
      }
    },
    "/services/{serviceId}/routes/{routeId}/request": {
      "get": {
        "description": "Route に登録したリクエスト変換情報を取得します。",
        "operationId": "getRequestTransformation",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          },
          {
            "$ref": "#/components/parameters/RouteID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "requestTransformation": {
                          "$ref": "#/components/schemas/RequestTransformation"
                        }
                      }
                    }
                  },
                  "required": [
                    "apigw"
                  ]
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Route Request変換情報取得API",
        "tags": [
          "サービス"
        ]
      },
      "put": {
        "description": "Route から Service へ転送する際にリクエスト内容を変換する設定を登録します。\n- **httpMethod**: 設定したHTTPメソッドへ変換します。\n- **allow**: 設定した Key 以外をリクエストから取り除きます。\n- **remove**: 設定した Key をリクエストから取り除きます。\n- **rename**: 設定した From-To に従い、リクエストの Key を変更します。\n- **replace**: 設定した Key と同名の Key がリクエストに存在する場合、Value の値を置換します。\n- **add**: 設定した値をリクエストに追加します。同名の Key がリクエストに存在しない場合に機能します。\n- **append**: 設定した値をリクエストに追加します。同名の Key がリクエストに存在する場合は Value に追記します。\n",
        "operationId": "upsertRequestTransformation",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          },
          {
            "$ref": "#/components/parameters/RouteID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestTransformation"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Route Request変換情報更新API",
        "tags": [
          "サービス"
        ]
      }
    },
    "/services/{serviceId}/routes/{routeId}/response": {
      "get": {
        "description": "Route に登録したレスポンス変換情報を取得します。",
        "operationId": "getResponseTransformation",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          },
          {
            "$ref": "#/components/parameters/RouteID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "responseTransformation": {
                          "$ref": "#/components/schemas/ResponseTransformation"
                        }
                      }
                    }
                  },
                  "required": [
                    "apigw"
                  ]
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Route Response変換情報取得API",
        "tags": [
          "サービス"
        ]
      },
      "put": {
        "description": "Route から Service へ転送する際にレスポンス内容を変換する設定を登録します。\n- **allow**: 設定した Key 以外をレスポンスから取り除きます。\n- **remove**: 設定した Key をレスポンスから取り除きます。\n- **rename**: 設定した From-To に従い、レスポンスの Key を変更します。\n- **replace**: 設定した Key と同名の Key がレスポンスに存在する場合、Value の値を置換します。\n- **add**: 設定した値をレスポンスに追加します。同名の Key がレスポンスに存在しない場合に機能します。\n- **append**: 設定した値をレスポンスに追加します。同名の Key がレスポンスに存在する場合は Value に追記します。\n- **ifStatusCode**: 設定した場合、アップストリームからのレスポンスコードが設定した値と一致する場合に、各種変換が機能します。\n",
        "operationId": "upsertResponseTransformation",
        "parameters": [
          {
            "$ref": "#/components/parameters/ServiceID"
          },
          {
            "$ref": "#/components/parameters/RouteID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResponseTransformation"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "Route Response変換情報更新API",
        "tags": [
          "サービス"
        ]
      }
    },
    "/subscriptions": {
      "get": {
        "description": "お客様の API Gateway 契約情報の一覧を取得します。",
        "operationId": "getSubscriptions",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "$ref": "#/components/schemas/SubscriptionList",
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "契約一覧照会API",
        "tags": [
          "サブスクリプション"
        ]
      },
      "post": {
        "description": "選択したプランで API Gateway の利用契約を行います。",
        "operationId": "subscribe",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionCreate"
              }
            }
          },
          "description": "契約情報",
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "契約API",
        "tags": [
          "サブスクリプション"
        ]
      }
    },
    "/subscriptions/{subscriptionId}": {
      "delete": {
        "description": "登録した契約を解約します。",
        "operationId": "unsubscribe",
        "parameters": [
          {
            "$ref": "#/components/parameters/SubscriptionID"
          }
        ],
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "契約解約API",
        "tags": [
          "サブスクリプション"
        ]
      },
      "get": {
        "description": "お客様の API Gateway 契約情報を取得します。\u003cbr\u003e 契約が存在する場合は、契約情報と利用中のプラン情報を返却します。",
        "operationId": "getSubscriptionById",
        "parameters": [
          {
            "$ref": "#/components/parameters/SubscriptionID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "subscription": {
                          "$ref": "#/components/schemas/SubscriptionDetailResponse"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "契約詳細照会API",
        "tags": [
          "サブスクリプション"
        ]
      },
      "put": {
        "description": "契約名を更新します。",
        "operationId": "updateSubscription",
        "parameters": [
          {
            "$ref": "#/components/parameters/SubscriptionID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionUpdate"
              }
            }
          },
          "description": "契約情報",
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "契約更新API",
        "tags": [
          "サブスクリプション"
        ]
      }
    },
    "/users": {
      "get": {
        "description": "登録した User の一覧を取得します。",
        "operationId": "getUsers",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "users": {
                          "items": {
                            "$ref": "#/components/schemas/User"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "User一覧照会API",
        "tags": [
          "ユーザー"
        ]
      },
      "post": {
        "description": "認証情報を設定する User を登録します。\u003cbr\u003e User のIP制限設定は、Route にIP制限が設定されていない場合に機能します。",
        "operationId": "addUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserDetail"
              }
            }
          },
          "description": "Create a User",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "user": {
                          "$ref": "#/components/schemas/UserDetail"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "User登録API",
        "tags": [
          "ユーザー"
        ]
      }
    },
    "/users/{userId}": {
      "delete": {
        "description": "登録した User を削除します。",
        "operationId": "deleteUser",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserID"
          }
        ],
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "User削除API",
        "tags": [
          "ユーザー"
        ]
      },
      "get": {
        "description": "登録した User の詳細情報を取得します。",
        "operationId": "getUser",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "user": {
                          "$ref": "#/components/schemas/UserDetail"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "User詳細照会API",
        "tags": [
          "ユーザー"
        ]
      },
      "put": {
        "description": "登録した User の詳細情報を更新します。",
        "operationId": "updateUser",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserDetail"
              }
            }
          },
          "description": "Update a user",
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ConflictResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "User更新API",
        "tags": [
          "ユーザー"
        ]
      }
    },
    "/users/{userId}/authentication": {
      "get": {
        "description": "User に登録された認証情報を取得します。\u003cbr\u003e なお、パスワード、シークレットなどの機密情報は取得できません。",
        "operationId": "getUserAuthentication",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "userAuthentication": {
                          "$ref": "#/components/schemas/UserAuthentication"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "User認証情報取得API",
        "tags": [
          "ユーザー"
        ]
      },
      "put": {
        "description": "User に認証情報を登録します。",
        "operationId": "upsertUserAuthentication",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserAuthentication"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "User認証情報更新API",
        "tags": [
          "ユーザー"
        ]
      }
    },
    "/users/{userId}/groups": {
      "get": {
        "description": "登録した Group の一覧を取得します。\u003cbr\u003e 指定した User が各 Group に所属しているかどうかの情報も含めて返却します。",
        "operationId": "getUserGroup",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserID"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "apigw": {
                      "properties": {
                        "groups": {
                          "items": {
                            "$ref": "#/components/schemas/UserGroupDetail"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "apigw"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功時のレスポンス"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "User所属Group照会API",
        "tags": [
          "ユーザー"
        ]
      },
      "put": {
        "description": "登録した User を Group に所属させます。",
        "operationId": "updateUserGroup",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "items": {
                  "$ref": "#/components/schemas/UserGroupDetailUpdate"
                }
              }
            }
          },
          "description": "Update a user group",
          "required": true
        },
        "responses": {
          "204": {
            "description": "成功時の返却値はありません。"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestResponse"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundResponse"
          },
          "500": {
            "$ref": "#/components/responses/ServerErrorResponse"
          }
        },
        "summary": "User所属Group更新API",
        "tags": [
          "ユーザー"
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://secure.sakura.ad.jp/cloud/api/apigw/1.0/"
    }
  ]
}
