{
  "components": {
    "schemas": {
      "AccessKeyID": {
        "description": "Access key ID",
        "example": "abcdefABCDEF0123456789",
        "pattern": "^[\\w\\d\\/]{1,40}$",
        "type": "string"
      },
      "Account": {
        "description": "Account info",
        "properties": {
          "data": {
            "description": "data type",
            "properties": {
              "code": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Code"
                  }
                ]
              },
              "created_at": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreatedAt"
                  }
                ]
              },
              "resource_id": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceID"
                  }
                ]
              }
            },
            "required": [
              "resource_id",
              "code",
              "created_at"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "BucketBillingItem": {
        "description": "Bucket usage and charge for metering",
        "properties": {
          "basic": {
            "$ref": "#/components/schemas/BucketBillingItemDetail",
            "description": "基本料金"
          },
          "num_objects": {
            "$ref": "#/components/schemas/BucketBillingItemDetail",
            "description": "オブジェクト数"
          },
          "num_transactions": {
            "$ref": "#/components/schemas/BucketBillingItemDetail",
            "description": "トランザクション数"
          },
          "storage_usage": {
            "$ref": "#/components/schemas/BucketBillingItemDetail",
            "description": "ストレージ使用量"
          },
          "transfer_amount": {
            "$ref": "#/components/schemas/BucketBillingItemDetail",
            "description": "転送量"
          },
          "year_month": {
            "description": "集計対象の年月",
            "example": "2022-08",
            "type": "string"
          }
        },
        "required": [
          "year_month",
          "basic",
          "storage_usage",
          "num_objects",
          "num_transactions",
          "transfer_amount"
        ],
        "type": "object"
      },
      "BucketBillingItemDetail": {
        "description": "Charge information",
        "properties": {
          "charge": {
            "description": "Amount billed including tax",
            "example": 456,
            "type": "integer"
          },
          "found": {
            "description": "Whether billing record was found or not. `false` means that bucket was not found, bucket was owned by other accounts, or error on metering.",
            "example": true,
            "type": "boolean"
          },
          "from": {
            "description": "The first day of metering range",
            "example": "2022-08-01",
            "format": "date",
            "type": "string"
          },
          "is_closing": {
            "description": "Result of monthly closing or not",
            "example": true,
            "type": "boolean"
          },
          "to": {
            "description": "The last day of metering range",
            "example": "2022-08-31",
            "format": "date",
            "type": "string"
          },
          "usage": {
            "description": "Usage for calculating charge",
            "example": 1100,
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "found",
          "usage",
          "charge",
          "is_closing",
          "from",
          "to"
        ],
        "type": "object"
      },
      "BucketControls": {
        "description": "Bucket controls",
        "items": {
          "properties": {
            "bucket_name": {
              "$ref": "#/components/schemas/BucketName"
            },
            "can_read": {
              "$ref": "#/components/schemas/CanRead"
            },
            "can_write": {
              "$ref": "#/components/schemas/CanWrite"
            },
            "created_at": {
              "$ref": "#/components/schemas/CreatedAt"
            }
          },
          "required": [
            "bucket_name",
            "can_read",
            "can_write",
            "created_at"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "BucketControlsBody": {
        "description": "Request body for bucket controls for Permission",
        "items": {
          "properties": {
            "bucket_name": {
              "$ref": "#/components/schemas/BucketName"
            },
            "can_read": {
              "$ref": "#/components/schemas/CanRead"
            },
            "can_write": {
              "$ref": "#/components/schemas/CanWrite"
            }
          },
          "required": [
            "bucket_name",
            "can_read",
            "can_write"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "BucketListResponseBody": {
        "properties": {
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketName"
              }
            ]
          },
          "plan": {
            "properties": {
              "service_class_path": {
                "$ref": "#/components/schemas/ServiceClassPath"
              },
              "type": {
                "$ref": "#/components/schemas/model.PlanType"
              }
            },
            "type": "object"
          },
          "resource_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceID"
              }
            ]
          }
        },
        "required": [
          "name",
          "resource_id"
        ],
        "type": "object"
      },
      "BucketName": {
        "description": "バケット名",
        "example": "sample1-bucket",
        "maxLength": 64,
        "minLength": 3,
        "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$",
        "type": "string"
      },
      "BucketPenalty": {
        "description": "Bucket penalty",
        "properties": {
          "data": {
            "properties": {
              "amount_gib_per_bucket": {
                "properties": {
                  "is_applied": {
                    "example": true,
                    "type": "boolean"
                  },
                  "quota": {
                    "example": 10240,
                    "format": "float",
                    "type": "number"
                  },
                  "val": {
                    "example": 614.25366,
                    "format": "float",
                    "type": "number"
                  }
                },
                "required": [
                  "val",
                  "quota",
                  "is_applied"
                ],
                "type": "object"
              },
              "num_objects_per_bucket": {
                "properties": {
                  "is_applied": {
                    "type": "boolean"
                  },
                  "quota": {
                    "example": 10000000,
                    "type": "integer"
                  },
                  "val": {
                    "example": 10002495,
                    "type": "integer"
                  }
                },
                "required": [
                  "val",
                  "quota",
                  "is_applied"
                ],
                "type": "object"
              }
            },
            "required": [
              "num_objects_per_bucket",
              "amount_gib_per_bucket"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "BucketPlanResponseBody": {
        "properties": {
          "service_class_path": {
            "$ref": "#/components/schemas/ServiceClassPath"
          },
          "type": {
            "$ref": "#/components/schemas/model.PlanType"
          }
        },
        "required": [
          "type",
          "service_class_path"
        ],
        "type": "object"
      },
      "BucketQuota": {
        "description": "Bucket quota",
        "properties": {
          "data": {
            "description": "data type",
            "properties": {
              "amount_gib_per_bucket": {
                "example": 10240,
                "format": "float",
                "type": "number"
              },
              "num_objects_per_bucket": {
                "example": 10000000,
                "type": "integer"
              }
            },
            "required": [
              "num_objects_per_bucket",
              "amount_gib_per_bucket"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "BucketResponseBody": {
        "allOf": [
          {
            "$ref": "#/components/schemas/model.Bucket"
          },
          {
            "properties": {
              "plan": {
                "$ref": "#/components/schemas/BucketPlanResponseBody"
              }
            },
            "required": [
              "cluster_id",
              "name",
              "plan"
            ],
            "type": "object"
          }
        ]
      },
      "BucketUsage": {
        "description": "Bucket usage",
        "properties": {
          "data": {
            "properties": {
              "amount_gib_per_bucket": {
                "example": 10240,
                "format": "float",
                "type": "number"
              },
              "num_objects_per_bucket": {
                "example": 10000000,
                "type": "integer"
              }
            },
            "required": [
              "num_objects_per_bucket",
              "amount_gib_per_bucket"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "CanRead": {
        "description": "The flag to read bucket contents",
        "example": true,
        "type": "boolean"
      },
      "CanWrite": {
        "description": "The flag to write bucket contents",
        "example": true,
        "type": "boolean"
      },
      "ClusterResponseBody": {
        "allOf": [
          {
            "$ref": "#/components/schemas/model.Cluster"
          },
          {
            "required": [
              "api_zone",
              "control_panel_url",
              "display_name_en_us",
              "display_name_ja",
              "display_name",
              "display_order",
              "endpoint_base",
              "id",
              "region",
              "s3_endpoint",
              "s3_endpoint_for_control_panel",
              "storage_zone",
              "plan_family"
            ],
            "type": "object"
          }
        ]
      },
      "Code": {
        "description": "Code",
        "example": "abc01234@foo@isk01",
        "pattern": "^[\\w@]+$",
        "type": "string"
      },
      "ContractSummary": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "deleted_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "resource_id": {
            "example": "113200009999",
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "terminated"
            ],
            "type": "string"
          }
        },
        "required": [
          "resource_id",
          "status",
          "created_at",
          "deleted_at"
        ],
        "type": "object"
      },
      "CreatedAt": {
        "description": "Created at",
        "example": "2020-01-11T01:11:23.123456+09:00",
        "format": "date-time",
        "type": "string"
      },
      "DisplayName": {
        "description": "Display name",
        "example": "abc012345-",
        "pattern": "^.+$",
        "type": "string"
      },
      "Error400": {
        "properties": {
          "error": {
            "description": "error 400",
            "properties": {
              "code": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorCode"
                  }
                ],
                "example": 400
              },
              "errors": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Errors"
                  }
                ]
              },
              "message": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorMessage"
                  }
                ],
                "example": "Invalid parameters."
              },
              "trace_id": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorTraceId"
                  }
                ],
                "example": "0f36837633984f3fc8871f515e8efa24"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "Error401": {
        "properties": {
          "error": {
            "description": "error 401",
            "properties": {
              "code": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorCode"
                  }
                ],
                "example": 401
              },
              "errors": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Errors"
                  }
                ]
              },
              "message": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorMessage"
                  }
                ],
                "example": "Authentication failed."
              },
              "trace_id": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorTraceId"
                  }
                ],
                "example": "0f36837633984f3fc8871f515e8efa24"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "Error403": {
        "properties": {
          "error": {
            "description": "error 403",
            "properties": {
              "code": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorCode"
                  }
                ],
                "example": 403
              },
              "errors": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Errors"
                  }
                ]
              },
              "message": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorMessage"
                  }
                ],
                "example": "XXXX creation denied."
              },
              "trace_id": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorTraceId"
                  }
                ],
                "example": "0f36837633984f3fc8871f515e8efa24"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "Error404": {
        "properties": {
          "error": {
            "description": "error 404",
            "properties": {
              "code": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorCode"
                  }
                ],
                "example": 404
              },
              "errors": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Errors"
                  }
                ]
              },
              "message": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorMessage"
                  }
                ],
                "example": "XXXX does not exist."
              },
              "trace_id": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorTraceId"
                  }
                ],
                "example": "0f36837633984f3fc8871f515e8efa24"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "Error405": {
        "properties": {
          "error": {
            "description": "error 405",
            "properties": {
              "code": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorCode"
                  }
                ],
                "example": 405
              },
              "errors": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Errors"
                  }
                ]
              },
              "message": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorMessage"
                  }
                ],
                "example": "Method Not Allowed"
              },
              "trace_id": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorTraceId"
                  }
                ],
                "example": "0f36837633984f3fc8871f515e8efa24"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "Error409": {
        "properties": {
          "error": {
            "description": "error 409",
            "properties": {
              "code": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorCode"
                  }
                ],
                "example": 409
              },
              "errors": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Errors"
                  }
                ]
              },
              "message": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorMessage"
                  }
                ],
                "example": "XXXX already created."
              },
              "trace_id": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorTraceId"
                  }
                ],
                "example": "0f36837633984f3fc8871f515e8efa24"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "ErrorCode": {
        "description": "エラーコード。\n",
        "format": "int32",
        "type": "integer"
      },
      "ErrorDefault": {
        "properties": {
          "error": {
            "description": "error 500",
            "properties": {
              "code": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorCode"
                  }
                ],
                "example": 500
              },
              "errors": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Errors"
                  }
                ]
              },
              "message": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorMessage"
                  }
                ],
                "example": "unknown error occurred."
              },
              "trace_id": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ErrorTraceId"
                  }
                ],
                "example": "0f36837633984f3fc8871f515e8efa24"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "ErrorMessage": {
        "description": "エラー発生時のメッセージ内容。\nこのメッセージはエラーを発生させたアプリケーションのメッセージをそのまま含む場合がある。\n",
        "type": "string"
      },
      "ErrorTraceId": {
        "description": "トレースID。\nエラー発生時のログ特定などに利用する。\n",
        "type": "string"
      },
      "Errors": {
        "description": "認証に関するエラーについて詳細なエラー内容を表示する。\n",
        "items": {
          "properties": {
            "domain": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ErrorsDomain"
                }
              ],
              "example": "{federaton,cluster}-api-objectstorage.sacloud"
            },
            "location": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ErrorsLocation"
                }
              ],
              "example": "String"
            },
            "location_type": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ErrorsLocationType"
                }
              ],
              "example": "String"
            },
            "message": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ErrorsMessage"
                }
              ],
              "example": "XXXX failed."
            },
            "reason": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ErrorsReason"
                }
              ],
              "example": "XXXX is wrong. Should set valid parameters."
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ErrorsDomain": {
        "description": "どのサービスで発生したエラーかを判別する。\nマイクロサービス名に加えてクラスター名を含む文字列が入ることを想定している。\n",
        "type": "string"
      },
      "ErrorsLocation": {
        "description": "エラー発生箇所。\nどのリソースなのか（どのリソースを操作した時に発生したものなのか）、\nどのパラメータなのかといった情報。\n",
        "type": "string"
      },
      "ErrorsLocationType": {
        "description": "エラーの発生箇所の種類。\nHTTPヘッダなのかHTTPパラメータなのか、\nS3バケットなのかといったlocationの種別情報。\n",
        "type": "string"
      },
      "ErrorsMessage": {
        "description": "エラー発生時のメッセージ内容。\nこのメッセージはエラーを発生させたアプリケーションのメッセージをそのまま含む場合がある。\n",
        "type": "string"
      },
      "ErrorsReason": {
        "description": "なぜそのエラーが発生したかがわかる情報。\nエラーメッセージの原因やエラー解決のためのヒントも含む場合がある。\n",
        "type": "string"
      },
      "Permission": {
        "description": "Permission",
        "properties": {
          "data": {
            "description": "data type",
            "properties": {
              "bucket_controls": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BucketControls"
                  }
                ]
              },
              "created_at": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreatedAt"
                  }
                ]
              },
              "display_name": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DisplayName"
                  }
                ]
              },
              "id": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PermissionID"
                  }
                ]
              }
            },
            "required": [
              "id",
              "display_name",
              "bucket_controls",
              "created_at"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "PermissionBucketControlsBody": {
        "description": "Request body for bucket controls for Permission",
        "properties": {
          "bucket_controls": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketControlsBody"
              }
            ]
          },
          "display_name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DisplayName"
              }
            ]
          }
        },
        "required": [
          "display_name",
          "bucket_controls"
        ],
        "type": "object"
      },
      "PermissionID": {
        "description": "Permission ID",
        "example": 123,
        "format": "int64",
        "type": "integer"
      },
      "PermissionKey": {
        "description": "Permission Key",
        "properties": {
          "created_at": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CreatedAt"
              }
            ]
          },
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PermissionKeyID"
              }
            ]
          },
          "secret": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PermissionKeySecret"
              }
            ]
          }
        },
        "type": "object"
      },
      "PermissionKeyCreateResponseBody": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PermissionKey"
          },
          {
            "required": [
              "id",
              "secret",
              "created_at"
            ],
            "type": "object"
          }
        ]
      },
      "PermissionKeyID": {
        "description": "Permission key ID",
        "example": "abcdefABCDEF0123456789",
        "pattern": "^[\\w\\d\\/]{1,40}$",
        "type": "string"
      },
      "PermissionKeyReadResponseBody": {
        "properties": {
          "created_at": {
            "$ref": "#/components/schemas/CreatedAt"
          },
          "id": {
            "$ref": "#/components/schemas/PermissionKeyID"
          }
        },
        "required": [
          "id",
          "created_at"
        ],
        "type": "object"
      },
      "PermissionKeySecret": {
        "description": "Permission secret key",
        "example": "/NOTICE==EXISTS+ONLY+WHEN+JUST+CREATED/",
        "pattern": "^[\\w\\d\\/+=]{1,40}$",
        "type": "string"
      },
      "PermissionKeys": {
        "description": "Permission Key",
        "properties": {
          "data": {
            "description": "data type",
            "items": {
              "properties": {
                "created_at": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CreatedAt"
                    }
                  ]
                },
                "id": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PermissionKeyID"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "created_at"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "Permissions": {
        "description": "Permission",
        "properties": {
          "data": {
            "description": "data type",
            "items": {
              "properties": {
                "bucket_controls": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/BucketControls"
                    }
                  ]
                },
                "created_at": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CreatedAt"
                    }
                  ]
                },
                "display_name": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/DisplayName"
                    }
                  ]
                },
                "id": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PermissionID"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "display_name",
                "bucket_controls",
                "created_at"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "PlanChangeReqBody": {
        "properties": {
          "new_plan": {
            "description": "New plan to recontract to.",
            "properties": {
              "service_class_path": {
                "$ref": "#/components/schemas/ServiceClassPath"
              },
              "type": {
                "$ref": "#/components/schemas/model.PlanType"
              }
            },
            "required": [
              "type",
              "service_class_path"
            ],
            "type": "object"
          },
          "previous_contract": {
            "properties": {
              "resource_id": {
                "$ref": "#/components/schemas/ResourceID",
                "description": "Current contract resource ID. This is for validation to avoid recontracting from an unexpected state.\n"
              }
            },
            "required": [
              "resource_id"
            ],
            "type": "object"
          }
        },
        "required": [
          "previous_contract",
          "new_plan"
        ],
        "type": "object"
      },
      "PlanChangeResBody": {
        "properties": {
          "new_contract": {
            "$ref": "#/components/schemas/ContractSummary"
          },
          "plan": {
            "$ref": "#/components/schemas/PlanSummary"
          },
          "previous_contract": {
            "$ref": "#/components/schemas/ContractSummary"
          }
        },
        "type": "object"
      },
      "PlanItem": {
        "properties": {
          "capacity_gib": {
            "example": 20000,
            "type": "integer"
          },
          "cluster_id": {
            "example": "isk01",
            "type": "string"
          },
          "fee": {
            "description": "Fee information (tax included)",
            "properties": {
              "daily": {
                "example": 360,
                "type": "integer"
              },
              "for_month": {
                "example": 1980,
                "type": "integer"
              },
              "hourly": {
                "example": 36,
                "type": "integer"
              },
              "monthly": {
                "example": 7200,
                "type": "integer"
              }
            },
            "required": [
              "for_month",
              "monthly",
              "daily",
              "hourly"
            ],
            "type": "object"
          },
          "service_class_path": {
            "$ref": "#/components/schemas/ServiceClassPath"
          },
          "type": {
            "$ref": "#/components/schemas/model.PlanType"
          }
        },
        "required": [
          "service_class_path",
          "type",
          "cluster_id",
          "capacity_gib",
          "fee"
        ],
        "type": "object"
      },
      "PlanSummary": {
        "properties": {
          "capacity_gib": {
            "description": "Only archive is enabled (capacity resolved from the service class path)",
            "example": 2000,
            "nullable": true,
            "type": "integer"
          },
          "cluster_id": {
            "description": "Cluster ID to which this plan applies. In the response of /buckets/{name}/plan, this always matches bucket.cluster_id (redundant, read-only).\n",
            "example": "isk01",
            "type": "string"
          },
          "service_class_path": {
            "$ref": "#/components/schemas/ServiceClassPath"
          },
          "type": {
            "$ref": "#/components/schemas/model.PlanType"
          }
        },
        "required": [
          "type",
          "service_class_path",
          "cluster_id",
          "capacity_gib"
        ],
        "type": "object"
      },
      "PlanWithContract": {
        "properties": {
          "contract": {
            "$ref": "#/components/schemas/ContractSummary"
          },
          "plan": {
            "$ref": "#/components/schemas/PlanSummary"
          }
        },
        "required": [
          "plan",
          "contract"
        ],
        "type": "object"
      },
      "Quota": {
        "description": "Quota",
        "properties": {
          "data": {
            "description": "data type",
            "properties": {
              "amount_gib_per_bucket": {
                "example": 10240,
                "format": "float",
                "type": "number"
              },
              "num_buckets": {
                "example": 20,
                "type": "integer"
              },
              "num_buckets_per_permission": {
                "example": 20,
                "type": "integer"
              },
              "num_keys_per_permission": {
                "example": 1,
                "type": "integer"
              },
              "num_objects_per_bucket": {
                "example": 10000000,
                "type": "integer"
              },
              "num_permissions": {
                "example": 30,
                "type": "integer"
              },
              "num_root_keys": {
                "example": 1,
                "type": "integer"
              }
            },
            "required": [
              "num_root_keys",
              "num_buckets",
              "num_permissions",
              "num_keys_per_permission",
              "num_buckets_per_permission",
              "num_objects_per_bucket",
              "amount_gib_per_bucket"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "ResourceID": {
        "description": "Resource ID",
        "example": "123456789012",
        "pattern": "^\\d{1,12}$",
        "type": "string"
      },
      "SecretAccessKey": {
        "description": "Secret Access key",
        "example": "/NOTICE==EXISTS+ONLY+WHEN+JUST+CREATED/",
        "pattern": "^[\\w\\d\\/+=]{1,40}$",
        "type": "string"
      },
      "ServiceClassPath": {
        "description": "Plan identifier (service class path). Attributes such as capacity are resolved by the server based on this value.",
        "example": "objectstorage/arc02/bucket/2t",
        "type": "string"
      },
      "Status": {
        "description": "Status",
        "properties": {
          "data": {
            "description": "data type",
            "properties": {
              "accept_new": {
                "example": true,
                "type": "boolean"
              },
              "message": {
                "example": "some extra info",
                "type": "string"
              },
              "started_at": {
                "example": "2020-01-11T01:11:23.123456+09:00",
                "format": "date-time",
                "type": "string"
              },
              "status_code": {
                "properties": {
                  "id": {
                    "example": 1,
                    "type": "integer"
                  },
                  "status": {
                    "example": "available",
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "status"
                ],
                "type": "object"
              }
            },
            "required": [
              "accept_new",
              "message",
              "started_at",
              "status_code"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "accountKey": {
        "description": "Root user access key",
        "properties": {
          "data": {
            "description": "data type",
            "properties": {
              "created_at": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreatedAt"
                  }
                ]
              },
              "id": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AccessKeyID"
                  }
                ]
              },
              "secret": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SecretAccessKey"
                  }
                ]
              }
            },
            "required": [
              "id",
              "created_at",
              "secret"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "accountKeys": {
        "description": "Root user access keys",
        "properties": {
          "data": {
            "description": "data type",
            "items": {
              "properties": {
                "created_at": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CreatedAt"
                    }
                  ]
                },
                "id": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/AccessKeyID"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "created_at"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "handler.CreateBucketReplicationResponse": {
        "example": {
          "data": {
            "config_status": "created",
            "created_at": "2024-01-01T12:00:00+09:00",
            "dest_bucket": {
              "cluster_id": "tky01",
              "name": "my-bucket-replica",
              "plan": {
                "service_class_path": "",
                "type": ""
              }
            },
            "source_bucket": {
              "cluster_id": "isk01",
              "name": "my-bucket",
              "plan": {
                "service_class_path": "",
                "type": ""
              }
            }
          }
        },
        "properties": {
          "data": {
            "$ref": "#/components/schemas/model.Replication"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "handler.CreateBucketRequestBody": {
        "properties": {
          "cluster_id": {
            "type": "string"
          },
          "plan": {
            "description": "If not specified, the bucket will be created as \"standard\".",
            "nullable": true,
            "properties": {
              "service_class_path": {
                "$ref": "#/components/schemas/ServiceClassPath"
              },
              "type": {
                "$ref": "#/components/schemas/model.PlanType"
              }
            },
            "type": "object"
          }
        },
        "required": [
          "cluster_id"
        ],
        "type": "object"
      },
      "handler.CreateBucketResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BucketResponseBody"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "handler.CreatePermissionKeyResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PermissionKeyCreateResponseBody"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "handler.ListBucketReplicableTargetsResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/BucketListResponseBody"
            },
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "handler.ListBucketsResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/BucketListResponseBody"
            },
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "handler.ListClustersResponse": {
        "properties": {
          "data": {
            "description": "If use a pointer type, break output",
            "items": {
              "$ref": "#/components/schemas/ClusterResponseBody"
            },
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "handler.ListPermissionKeysResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/PermissionKeyReadResponseBody"
            },
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "handler.ReadBucketEncryptionResponse": {
        "properties": {
          "configured_at": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CreatedAt"
              }
            ]
          },
          "kms_key_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceID"
              }
            ]
          }
        },
        "required": [
          "kms_key_id",
          "configured_at"
        ],
        "type": "object"
      },
      "handler.ReadBucketReplicationResponse": {
        "example": {
          "data": {
            "config_status": "created",
            "created_at": "2024-01-01T12:00:00+09:00",
            "dest_bucket": {
              "cluster_id": "tky01",
              "name": "my-bucket-replica",
              "plan": {
                "service_class_path": "",
                "type": ""
              }
            },
            "source_bucket": {
              "cluster_id": "isk01",
              "name": "my-bucket",
              "plan": {
                "service_class_path": "",
                "type": ""
              }
            }
          }
        },
        "properties": {
          "data": {
            "$ref": "#/components/schemas/model.Replication"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "handler.ReadClusterResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ClusterResponseBody"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "handler.ReadPermissionKeyResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PermissionKeyReadResponseBody"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "handler.UpdateBucketEncryptionRequestBody": {
        "properties": {
          "kms_key_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceID"
              }
            ]
          }
        },
        "required": [
          "kms_key_id"
        ],
        "type": "object"
      },
      "handler.UpdateBucketEncryptionResponse": {
        "properties": {
          "configured_at": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CreatedAt"
              }
            ]
          },
          "kms_key_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceID"
              }
            ]
          }
        },
        "required": [
          "kms_key_id",
          "configured_at"
        ],
        "type": "object"
      },
      "model.Bucket": {
        "example": {
          "cluster_id": "isk01",
          "name": "my-bucket",
          "plan": {
            "service_class_path": "objectstorage/isk01/bucket",
            "type": "standard"
          }
        },
        "properties": {
          "cluster_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "plan": {
            "properties": {
              "service_class_path": {
                "$ref": "#/components/schemas/ServiceClassPath"
              },
              "type": {
                "$ref": "#/components/schemas/model.PlanType"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "model.Cluster": {
        "properties": {
          "api_zone": {
            "description": "API Servers Zones",
            "example": [
              "is1b"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "control_panel_url": {
            "description": "URL of Control Panel",
            "example": "secure.sakura.ad.jp/objectstorage/isk01",
            "type": "string"
          },
          "display_name": {
            "description": "Display Name (Depending on Accept-Language)",
            "example": "石狩第1サイト",
            "type": "string"
          },
          "display_name_en_us": {
            "description": "Display Name (en-us)",
            "example": "Ishikari Cluster #1",
            "type": "string"
          },
          "display_name_ja": {
            "description": "Display Name (ja)",
            "example": "石狩第1サイト",
            "type": "string"
          },
          "display_order": {
            "description": "Display Order (Can be ignored)",
            "example": 1,
            "type": "integer"
          },
          "endpoint_base": {
            "description": "Endpoint Base of Cluster",
            "example": "isk01.objectstorage.sakurastorage.jp",
            "type": "string"
          },
          "id": {
            "example": "isk01",
            "type": "string"
          },
          "plan_family": {
            "description": "Pricing/behavior family of the cluster.",
            "enum": [
              "standard",
              "archive"
            ],
            "example": "standard",
            "type": "string"
          },
          "region": {
            "example": "jp-north-1",
            "type": "string"
          },
          "s3_endpoint": {
            "description": "URL of S3-compat API",
            "example": "s3.isk01.objectstorage.sakurastorage.jp",
            "type": "string"
          },
          "s3_endpoint_for_control_panel": {
            "description": "URL of S3-compat API (w/ resigning)",
            "example": "s3.cp.isk01.objectstorage.sakurastorage.jp",
            "type": "string"
          },
          "storage_zone": {
            "description": "Storage Servers Zones",
            "example": [
              "is1a",
              "is1b"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "model.PlanType": {
        "description": "Plan type enum",
        "enum": [
          "standard",
          "archive"
        ],
        "example": "archive",
        "type": "string"
      },
      "model.Replication": {
        "properties": {
          "config_status": {
            "description": "creating=federation→cluster applying / created=cluster applied",
            "enum": [
              "creating",
              "created"
            ],
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "dest_bucket": {
            "description": "Destination bucket info",
            "example": {
              "cluster_id": "tky01",
              "name": "my-bucket-replica",
              "plan": {
                "service_class_path": "objectstorage/isk01/bucket",
                "type": "standard"
              }
            },
            "properties": {
              "cluster_id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "plan": {
                "properties": {
                  "service_class_path": {
                    "$ref": "#/components/schemas/ServiceClassPath"
                  },
                  "type": {
                    "$ref": "#/components/schemas/model.PlanType"
                  }
                },
                "required": [
                  "type",
                  "service_class_path"
                ],
                "type": "object"
              }
            },
            "required": [
              "name",
              "cluster_id",
              "plan"
            ],
            "type": "object"
          },
          "source_bucket": {
            "description": "Source bucket info",
            "example": {
              "cluster_id": "isk01",
              "name": "my-bucket",
              "plan": {
                "service_class_path": "objectstorage/isk01/bucket",
                "type": "standard"
              }
            },
            "properties": {
              "cluster_id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "plan": {
                "properties": {
                  "service_class_path": {
                    "$ref": "#/components/schemas/ServiceClassPath"
                  },
                  "type": {
                    "$ref": "#/components/schemas/model.PlanType"
                  }
                },
                "required": [
                  "type",
                  "service_class_path"
                ],
                "type": "object"
              }
            },
            "required": [
              "name",
              "cluster_id",
              "plan"
            ],
            "type": "object"
          }
        },
        "required": [
          "source_bucket",
          "dest_bucket",
          "config_status",
          "created_at"
        ],
        "type": "object"
      },
      "readAccountKey": {
        "description": "Root user access key",
        "properties": {
          "data": {
            "description": "data type",
            "properties": {
              "created_at": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreatedAt"
                  }
                ]
              },
              "id": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AccessKeyID"
                  }
                ]
              }
            },
            "required": [
              "id",
              "created_at"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "BasicAuth": {
        "description": "[クラウドコントロールパネル](https://secure.sakura.ad.jp/cloud/)で発行したAPIキーを利用します。\n\n `アクセストークン(UUID)` を「ユーザーID」、`アクセストークンシークレット` を「パスワード」として指定します。",
        "scheme": "basic",
        "type": "http"
      }
    }
  },
  "info": {
    "contact": {
      "name": "SAKURA internet Inc."
    },
    "description": "\n---\n\n「さくらのオブジェクトストレージ」が提供するAPIの利用方法とサンプルを公開しております。\n\n# 基本的な使い方\n\n## APIキーの発行\n\nAPIを利用するためには、認証のための「APIキー」が必要です。事前にキーを発行しておきます。\nAPIキーは「ユーザーID」「パスワード」に相当する「トークン」と呼ばれる認証情報で構成されています。\n\n|   項目名   | APIキー発行時の項目名        | このドキュメント内での例             |\n|------------|------------------------------|--------------------------------------|\n| ユーザーID | アクセストークン(UUID)       | 01234567-89ab-cdef-0123-456789abcdef |\n| パスワード | アクセストークンシークレット | SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM |\n\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\nAPIの入力には送信先URLに対して、いくつかのヘッダーとAPIキーを送信します。\n\n* APIのURLは以下の2つが存在します。※ 各APIの使い分けは後述します。\n  * `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/(エンドポイント)`\n  * `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/(エンドポイント)`\n* 認証方式はHTTP Basic認証です。APIキーのアクセストークンをユーザーID、アクセストークンシークレットをパスワードとして指定します。\n\n```\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     'https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/clusters'\n```\n\n## 出力結果と応答コード（HTTPステータスコード）\n\nAPIからの結果は、「応答コード（HTTPステータスコード）」と、「JSON形式(UTF-8)の結果」として出力されます。\n\n応答コードは、リクエストが成功したのか、失敗したのか大まかな情報を判断することができるもので、例えば失敗したときには、なぜこのような結果になったのかなど、具体的な情報は応答コードと主に返された本文を見ることで把握することができます。\n\n| 結果                                | 応答コード/status   |\n|-------------------------------------|---------------------|\n| 成功（要求を受け付けた）             | 2xx                 |\n| 失敗（要求が受け付けられなかった）  | 4xx, 5xx            |\n\n```\n# 出力結果サンプル（レスポンスボディー）\n{\n  \"error\": {\n    \"code\": 404,\n    \"errors\": [\n      {\n        \"domain\": \"fed.objectstorage.sacloud\",\n        \"location\": \"clusters\",\n        \"location_type\": \"path_parameter\",\n        \"message\": \"Cluster was not found\",\n        \"reason\": \"not_found\"\n      }\n    ],\n    \"message\": \"Cluster was not found\",\n    \"trace_id\": \"0f36837633984f3fc8871f515e8efa24\"\n  }\n}\n```\n\n# 利用例\n\n## 1.接続先サイト一覧の取得\n\nさくらのオブジェクトストレージを利用するには、まずバケット作成先となる**サイト**を取得・選択します。\n\nサイト一覧を取得するには、以下のような入力を行います。\n\n```\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     'https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/clusters'\n```\n\n実行結果として、サイトのリストが返却されます。\n\n```\n# 出力結果サンプル\n{\n  \"data\": [\n    {\n      \"api_zone\": [],\n      \"control_panel_url\": \"https://secure.sakura.ad.jp/objectstorage/\",\n      \"display_name_en_us\": \"Ishikari Site #1\",\n      \"display_name_ja\": \"石狩第1サイト\",\n      \"display_name\": \"石狩第1サイト\",\n      \"display_order\": 1,\n      \"endpoint_base\": \"isk01.sakurastorage.jp\",\n      \"id\": \"isk01\",\n      \"region\": \"jp-north-1\",\n      \"s3_endpoint\": \"s3.isk01.sakurastorage.jp\",\n      \"s3_endpoint_for_control_panel\": \"s3.cp.isk01.sakurastorage.jp\",\n      \"storage_zone\": []\n    }\n  ]\n}\n```\n\n得られたサイトID（上記の`id`フィールド）を確認します。これは後続の利用例で使用します。\n\n## 2.サイトアカウントの作成\n\n上記のサイトから利用したいサイトIDを選択し（ここではisk01を選択することにします）、**サイトアカウント**を作成します。\n\nサイトアカウントとは、サイトを利用するための独立したアカウントであり、サイトアカウント作成・削除による料金の発生はございません。\nなお、すでにサイトアカウントを作成済みの場合は、再度サイトアカウントの作成は不要です。\n\nサイトアカウントを作成するには以下のような入力を行います。\n\n```\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X POST \\\n     https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/isk01/v2/account\n```\n\nサイトアカウントの作成が完了すると、選択したサイトにて\n\n* バケットの作成・削除\n* アクセスキーの発行・削除\n* パーミッションキーの発行・削除\n\nなどの操作が可能になります。\n\n## 3.バケットの作成・削除\n\n選択したサイトにてサイトアカウントを作成後、**バケット**の作成・削除が可能です。\n\nバケットを作成するには以下のような入力を行います。\nこの時、選択したサイト（ここではisk01とします）をリクエストボディーに入れ、作成したいバケット名をパスパラメータに入れる必要があります。\n\n```\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X PUT \\\n     -d '{\"cluster_id\": \"isk01\"}' \\\n     https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/buckets/sample\n```\n\n上記で作成したバケットを削除するには以下のような入力を行います。\n\n```\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X DELETE \\\n     https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/buckets/sample\n```\n\n## 4.アクセスキーの発行・削除\n\n選択したサイトにてサイトアカウントを作成後、**アクセスキー**の発行・削除が可能です。\n\nアクセスキーを発行するには以下のような入力を行います。\n\n```\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X POST \\\n     https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/isk01/v2/account/keys\n```\n\nコマンド結果には以下のフィールドが含まれます。\n\n* `created_at` : 作成日時\n* `id` : アクセスキーID\n* `secret` : シークレットアクセスキー\n\n```\n# 出力結果サンプル\n{\n  \"data\": {\n    \"created_at\": \"2021-11-04T07:42:41.121418479Z\",\n    \"id\": \"XPJK4SC9883N91RHR253\",\n    \"secret\": \"jqRaUo5l+EiEYqP8wos9exbmFfq4/vG8CLPYI2XN\"\n  }\n}\n```\n\n上記で作成したアクセスキーを削除するには以下のような入力を行います。\nこの時、削除したいアクセスキーIDをパスパラメータに入れる必要があります。\n\n```\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X DELETE \\\n     https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/isk01/v2/account/keys/XPJK4SC9883N91RHR253\n```\n\n## 5.パーミッション及びパーミッションアクセスキーの発行・削除\n\n選択したサイトにてサイトアカウントを作成後且つバケットが1つ以上ある場合、**パーミッション**の発行・削除が可能です。\n\nパーミッションを作成するには以下のような入力を行います。\nこの時、パーミッション名、パーミッションで制御したいバケットとそれに対する操作をリクエストボディーに入れる必要があります。\n\n```\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X POST \\\n     -d '{\"display_name\": \"sample_permission\", \"bucket_controls\": [{\"bucket_name\": \"sample\", \"can_read\": true, \"can_write\": true}]}' \\\n     https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/isk01/v2/permissions\n```\n\n作成が完了すると、パーミッションIDが含まれたレスポンスを受け取ります。\n```\n# 出力サンプル\n{\n  \"data\": {\n    \"bucket_controls\": [\n      {\n        \"bucket_name\":\"sample\",\n        \"can_read\":true,\n        \"can_write\":true,\n        \"created_at\":\"2021-11-11T13:36:08.767118492Z\"\n      }\n    ],\n    \"created_at\":\"2021-11-11T13:36:08.690384415Z\",\n    \"display_name\":\"sample_permission\",\n    \"id\":619\n  }\n}\n```\n\nこのパーミッションのアクセスキーを発行するには以下のような入力を行います。\nこの時、パーミッション作成時に発行されたID（ここでは619とします）をパスパラメータに含める必要があります。\n\n```\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X POST \\\n     https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/isk01/v2/permissions/619/keys\n```\n\nコマンド結果には以下のフィールドが含まれます。\n\n* `created_at` : 作成日時\n* `id` : アクセスキーID\n* `secret` : シークレットアクセスキー\n\n```\n# 出力結果サンプル\n{\n  \"data\": {\n    \"created_at\": \"2021-11-04T07:42:41.121418479Z\",\n    \"id\": \"XPJK4SC9883N91RHR253\",\n    \"secret\": \"jqRaUo5l+EiEYqP8wos9exbmFfq4/vG8CLPYI2XN\"\n  }\n}\n```\n\nパーミッションアクセスキーを削除するには以下のような入力を行います。\nこの時、パーミッションアクセスキー発行時に出力されたIDをパスパラメータに含める必要があります。\n```\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X DELETE \\\n     https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/isk01/v2/permissions/619/keys/XPJK4SC9883N91RHR253\n```\n\nパーミッションを削除するには以下のような入力を行います。\nこの時、パーミッション作成時に発行されたID（ここでは619とします）をパスパラメータに含める必要があります。\n\n```\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X DELETE \\\n     https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/isk01/v2/permissions/619\n```\n----",
    "license": {
      "name": "Copyright(C) 2021-2022 SAKURA internet Inc. all rights reserved."
    },
    "title": "さくらのオブジェクトストレージ APIドキュメント",
    "version": "1.7.0"
  },
  "openapi": "3.0.0",
  "paths": {
    "/account": {
      "delete": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "deleteAccount",
        "responses": {
          "204": {
            "description": "サイトアカウントの削除に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error409"
                }
              }
            },
            "description": "サイトアカウントに関係するリソースが残っています、先にそれらのリソースを削除する必要があります"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "サイトアカウントの削除",
        "tags": [
          "サイトアカウント"
        ]
      },
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "readAccount",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            },
            "description": "サイトアカウントの取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "サイトアカウントが見つかりませんでした"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "サイトアカウントの取得",
        "tags": [
          "サイトアカウント"
        ]
      },
      "post": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "createAccount",
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            },
            "description": "サイトアカウントの作成に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error403"
                }
              }
            },
            "description": "新規のサイトアカウント作成が拒否されました"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error409"
                }
              }
            },
            "description": "サイトアカウントはすでに作成済みです"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "サイトアカウントの作成",
        "tags": [
          "サイトアカウント"
        ]
      }
    },
    "/account/keys": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "listAccountKeys",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/accountKeys"
                }
              }
            },
            "description": "サイトアカウントのアクセスキーの取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "サイトアカウントが見つかりませんでした"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "サイトアカウントのアクセスキーの取得",
        "tags": [
          "サイトアカウント"
        ]
      },
      "post": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "createAccountKey",
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/accountKey"
                }
              }
            },
            "description": "サイトアカウントのアクセスキーの発行に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "サイトアカウントが見つかりませんでした"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error409"
                }
              }
            },
            "description": "サイトアカウントのアクセスキーが上限に達しています"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "サイトアカウントのアクセスキーの発行",
        "tags": [
          "サイトアカウント"
        ]
      }
    },
    "/account/keys/{id}": {
      "delete": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "deleteAccountKey",
        "parameters": [
          {
            "description": "アクセスキーID",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "サイトアカウントのアクセスキーの削除に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "サイトアカウントのアクセスキーの削除",
        "tags": [
          "サイトアカウント"
        ]
      },
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "readAccountKey",
        "parameters": [
          {
            "description": "アクセスキーID",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/readAccountKey"
                }
              }
            },
            "description": "サイトアカウントのアクセスキーの取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "アクセスキーが見つかりませんでした"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "サイトアカウントのアクセスキーの取得",
        "tags": [
          "サイトアカウント"
        ]
      }
    },
    "/buckets": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "listBuckets",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/handler.ListBucketsResponse"
                }
              }
            },
            "description": "バケット一覧の取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          }
        },
        "summary": "バケット一覧の取得",
        "tags": [
          "バケット"
        ]
      }
    },
    "/buckets/{name}": {
      "delete": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/clusters` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/clusters`\nとなります。",
        "operationId": "deleteBucket",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "バケット削除に成功しました"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error400"
                }
              }
            },
            "description": "バケット名が不正です"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error409"
                }
              }
            },
            "description": "バケットに関係するリソースが残っています、先にそれらのリソースを削除する必要があります"
          }
        },
        "servers": [
          {
            "url": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1"
          }
        ],
        "summary": "バケットの削除",
        "tags": [
          "バケット"
        ]
      },
      "put": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/clusters` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/clusters`\nとなります。",
        "operationId": "createBucket",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/handler.CreateBucketRequestBody"
              }
            }
          },
          "description": "作成したいバケット情報",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/handler.CreateBucketResponse"
                }
              }
            },
            "description": "バケット作成に成功しました"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error400"
                }
              }
            },
            "description": "バケット名が不正です"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "サイトアカウントが見つかりませんでした"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error409"
                }
              }
            },
            "description": "同名バケットがすでに存在する、または制限値の上限に達したためバケット作成ができません"
          }
        },
        "servers": [
          {
            "url": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1"
          }
        ],
        "summary": "バケットの作成",
        "tags": [
          "バケット"
        ]
      }
    },
    "/buckets/{name}/encryption": {
      "delete": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "deleteBucketEncryption",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "バケット暗号化設定の削除に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "指定したバケットが見つかりませんでした"
          }
        },
        "summary": "バケット暗号化設定の削除（無効化）",
        "tags": [
          "バケット"
        ]
      },
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "readBucketEncryption",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/handler.ReadBucketEncryptionResponse"
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "バケット暗号化設定の取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "指定したバケットが見つかりませんでした"
          }
        },
        "summary": "バケット暗号化設定の取得",
        "tags": [
          "バケット"
        ]
      },
      "put": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "updateBucketEncryption",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/handler.UpdateBucketEncryptionRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/handler.UpdateBucketEncryptionResponse"
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "暗号化設定の作成に成功しました"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error400"
                }
              }
            },
            "description": "不正なリクエストです"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "指定したバケットが見つかりませんでした"
          }
        },
        "summary": "バケット暗号化設定の作成（KMSキー指定）",
        "tags": [
          "バケット"
        ]
      }
    },
    "/buckets/{name}/penalty": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "readBucketPenalty",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/BucketName"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BucketPenalty"
                }
              }
            },
            "description": "バケットのペナルティ状況を取得しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "指定したバケットが見つかりませんでした"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーが発生しました"
          }
        },
        "summary": "バケットのペナルティ状況を取得",
        "tags": [
          "バケット"
        ]
      }
    },
    "/buckets/{name}/plan": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "readBucketPlan",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/BucketName"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanWithContract"
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "現在のプランを取得しました"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error400"
                }
              }
            },
            "description": "バケット名が不正です"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "指定したバケットが見つかりませんでした"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error405"
                }
              }
            },
            "description": "サイトのplan typeがarchiveではありません"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "現在のプランを取得",
        "tags": [
          "バケット"
        ]
      },
      "put": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "updateBucketPlan",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/BucketName"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlanChangeReqBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanChangeResBody"
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "プラン変更が完了しました"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error400"
                }
              }
            },
            "description": "不正なリクエストです"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error405"
                }
              }
            },
            "description": "サイトのplan typeがarchiveではありません"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error409"
                }
              }
            },
            "description": "コンフリクト（同時再契約、無効な状態遷移など）"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "プラン変更を実行",
        "tags": [
          "バケット"
        ]
      }
    },
    "/buckets/{name}/quota": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "readBucketQuota",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/BucketName"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BucketQuota"
                }
              }
            },
            "description": "バケットの制限値を取得しました"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error400"
                }
              }
            },
            "description": "不正なリクエストです"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "指定したバケットが見つかりませんでした"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーが発生しました"
          }
        },
        "summary": "バケットの制限値を取得",
        "tags": [
          "バケット"
        ]
      }
    },
    "/buckets/{name}/replicable-targets": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/clusters` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/clusters`\nとなります。",
        "operationId": "listBucketReplicableTargets",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/handler.ListBucketReplicableTargetsResponse"
                }
              }
            },
            "description": "レプリケーション設定可能なディスティネーションバケットの取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "指定したバケットが見つかりませんでした"
          }
        },
        "summary": "バケットのレプリケーション設定可能なディスティネーションバケットを取得",
        "tags": [
          "バケット"
        ]
      }
    },
    "/buckets/{name}/replication": {
      "delete": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/clusters` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/clusters`\nとなります。",
        "operationId": "deleteBucketReplication",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "レプリケーション設定の削除に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "指定したバケットが見つかりませんでした"
          }
        },
        "summary": "レプリケーション設定の削除",
        "tags": [
          "バケット"
        ]
      },
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/clusters` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/clusters`\nとなります。",
        "operationId": "readBucketReplication",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/handler.ReadBucketReplicationResponse"
                }
              }
            },
            "description": "レプリケーション設定の取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "指定したバケットが見つかりませんでした"
          }
        },
        "summary": "バケットのレプリケーション設定の取得",
        "tags": [
          "バケット"
        ]
      },
      "post": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/clusters` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/clusters`\nとなります。",
        "operationId": "createBucketReplication",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "dest_bucket": {
                    "type": "string"
                  }
                },
                "required": [
                  "dest_bucket"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/handler.CreateBucketReplicationResponse"
                }
              }
            },
            "description": "レプリケーション設定の作成に成功しました"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error400"
                }
              }
            },
            "description": "不正なリクエストです"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "指定したバケットが見つかりませんでした"
          }
        },
        "servers": [
          {
            "url": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1"
          }
        ],
        "summary": "バケットのレプリケーション設定の作成",
        "tags": [
          "バケット"
        ]
      }
    },
    "/buckets/{name}/usage": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "readBucketUsage",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/BucketName"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BucketUsage"
                }
              }
            },
            "description": "バケットの使用量を取得しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "指定したバケットが見つかりませんでした"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーが発生しました"
          }
        },
        "summary": "バケットの使用量を取得",
        "tags": [
          "バケット"
        ]
      }
    },
    "/clusters": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/clusters` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/clusters`\nとなります。",
        "operationId": "listClusters",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/handler.ListClustersResponse"
                }
              }
            },
            "description": "サイト一覧の取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          }
        },
        "servers": [
          {
            "url": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1"
          }
        ],
        "summary": "サイト一覧の取得",
        "tags": [
          "サイト"
        ]
      }
    },
    "/clusters/{id}": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/clusters` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1/clusters`\nとなります。",
        "operationId": "readCluster",
        "parameters": [
          {
            "description": "サイトID",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/handler.ReadClusterResponse"
                }
              }
            },
            "description": "サイトの取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "サイトが見つかりませんでした"
          }
        },
        "servers": [
          {
            "url": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/fed/v1"
          }
        ],
        "summary": "サイトの取得",
        "tags": [
          "サイト"
        ]
      }
    },
    "/metering/buckets/{name}": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。\n\n指定したバケットの使用量を、指定した月範囲で取得します。\n取得できるデータは月次集計データとなり、日次や時間毎の詳細なデータは取得できません。\nまた、指定した月においてバケットの使用が無かった場合でも、ゼロ埋めされたデータが返却されます。",
        "operationId": "listBucketMetering",
        "parameters": [
          {
            "description": "バケット名",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/BucketName"
            }
          },
          {
            "description": "範囲の開始月",
            "in": "query",
            "name": "from",
            "required": true,
            "schema": {
              "example": "2022-03",
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "範囲の終了月",
            "in": "query",
            "name": "to",
            "required": true,
            "schema": {
              "example": "2022-08",
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/BucketBillingItem"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "成功（ゼロ埋めされたレコードを含む場合があります）"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error400"
                }
              }
            },
            "description": "無効な範囲または範囲が広すぎます"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "バケット使用量の取得",
        "tags": [
          "メータリング履歴"
        ]
      }
    },
    "/permissions": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "listPermissions",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Permissions"
                }
              }
            },
            "description": "パーミッション一覧の取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "パーミッション一覧の取得",
        "tags": [
          "パーミッション"
        ]
      },
      "post": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "createPermission",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PermissionBucketControlsBody"
              }
            }
          },
          "description": "どのバケットを制御するかを定義します。",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Permission"
                }
              }
            },
            "description": "パーミッションの作成に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "あなたが所有者でない、または存在しないバケットが指定されています"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error409"
                }
              }
            },
            "description": "制御対象のバケットの数が上限を超えています。"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "パーミッションの作成",
        "tags": [
          "パーミッション"
        ]
      }
    },
    "/permissions/{id}": {
      "delete": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "deletePermission",
        "parameters": [
          {
            "description": "パーミッションID",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "パーミッションの削除に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "パーミッションの削除",
        "tags": [
          "パーミッション"
        ]
      },
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "readPermission",
        "parameters": [
          {
            "description": "パーミッションID",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Permission"
                }
              }
            },
            "description": "パーミッションの取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "パーミッションが見つかりませんでした"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "パーミッションの取得",
        "tags": [
          "パーミッション"
        ]
      },
      "put": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。\n\n**注意**： 本APIは指定したパーミッションIDの内容を全て置き換えます。\nそのため、一部のバケットの権限を変更したい場合であっても、本パーミッションIDが管理する全てのバケットに関する情報も合わせて送る必要があります。\n\n例えば、パーミッションID`1`が管理するバケットが下記の内容であるとします（パーミッションID`1`をGETした際の内容を示しています）。\n```\n{\n  \"data\": {\n    \"bucket_controls\": [\n      {\n        \"bucket_name\": \"your-bucket-name-001\",\n        \"can_read\": false,\n        \"can_write\": false,\n        \"created_at\": \"2021-01-01T12:59:59.371074+09:00\"\n      },\n      {\n        \"bucket_name\": \"your-bucket-name-002\",\n        \"can_read\": false,\n        \"can_write\": false,\n        \"created_at\": \"2021-01-01T12:59:59.371074+09:00\"\n      }\n    ]\n    \"created_at\": \"2021-01-01T12:59:59.371074+09:00\"\n    \"display_name\": \"your-permission-001\",\n    \"id\": 1\n  },\n}\n```\nこの内、`your-bucket-name-002`の読み込み及び書き込み権限だけを許可したい場合は下記のようなリクエストボディーを送る必要があります。\n```\n{\n  \"id\": 1,\n  \"display_name\": \"your-permission-001\",\n  \"bucket_controls\": [\n    {\n      \"bucket_name\": \"your-bucket-name-001\",\n      \"can_read\": false,\n      \"can_write\": false,\n    },\n    {\n      \"bucket_name\": \"your-bucket-name-002\",\n      \"can_read\": true,\n      \"can_write\": true,\n    }\n  ]\n}\n```\n\n実際にリクエストを送る際には上記の内容を`data.json`というファイルに保存し、以下のような入力を行います。\n```\n# 入力サンプル\ncurl -u '01234567-89ab-cdef-0123-456789abcdef:SAMPLETOKENSAMPLETOKENSAMPLETOKENSAM' \\\n     -X PUT \\\n     -d @data.json \\\nhttps://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/permissions/1\n```",
        "operationId": "updatePermission",
        "parameters": [
          {
            "description": "パーミッションID",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PermissionBucketControlsBody"
              }
            }
          },
          "description": "どのバケットを制御するかを定義します。",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Permission"
                }
              }
            },
            "description": "パーミッションの更新に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "あなたが所有者でない、または存在しないバケットが指定されています"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error409"
                }
              }
            },
            "description": "制御対象のバケットの数が上限を超えています。"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "パーミッションの更新",
        "tags": [
          "パーミッション"
        ]
      }
    },
    "/permissions/{id}/keys": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "listPermissionKeys",
        "parameters": [
          {
            "description": "パーミッションID",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/handler.ListPermissionKeysResponse"
                }
              }
            },
            "description": "パーミッションが保有するアクセスキー一覧の取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "パーミッションが見つかりませんでした"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "パーミッションが保有するアクセスキー一覧の取得",
        "tags": [
          "パーミッション"
        ]
      },
      "post": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "createPermissionKey",
        "parameters": [
          {
            "description": "パーミッションID",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/handler.CreatePermissionKeyResponse"
                }
              }
            },
            "description": "パーミッションのアクセスキーの発行に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "パーミッションが見つかりませんでした"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error409"
                }
              }
            },
            "description": "制御対象のバケットの数が上限を超えています。"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "パーミッションのアクセスキーの発行",
        "tags": [
          "パーミッション"
        ]
      }
    },
    "/permissions/{id}/keys/{key_id}": {
      "delete": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "deletePermissionKey",
        "parameters": [
          {
            "description": "パーミッションID",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "description": "パーミッションが保有するアクセスキーID",
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "パーミッションが保有するアクセスキーの削除に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "パーミッションが保有するアクセスキーが見つかりませんでした"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "パーミッションが保有するアクセスキーの削除",
        "tags": [
          "パーミッション"
        ]
      },
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "readPermissionKey",
        "parameters": [
          {
            "description": "パーミッションID",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "description": "パーミッションが保有するアクセスキーID",
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/handler.ReadPermissionKeyResponse"
                }
              }
            },
            "description": "パーミッションが保有するアクセスキーの取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error404"
                }
              }
            },
            "description": "パーミッションが保有するアクセスキーが見つかりませんでした"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "パーミッションが保有するアクセスキーの取得",
        "tags": [
          "パーミッション"
        ]
      }
    },
    "/plans": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "listPlans",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/PlanItem"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "プランの一覧の取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "利用可能なプランの一覧取得",
        "tags": [
          "プラン"
        ]
      }
    },
    "/quota": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "readQuota",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Quota"
                }
              }
            },
            "description": "全体制限値の取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "全体制限値の取得",
        "tags": [
          "全体制限値"
        ]
      }
    },
    "/status": {
      "get": {
        "description": "アクセス先ベースURL: `https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/`\n\n上記アクセス先ベースURLと右ペインのパスを組み合わせたものがアクセス先URLになります。\n例えば、右ペインのパスが `/account` の場合、アクセス先URLは、\n`https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/（サイト名）/v2/account`\nとなります。\n\nなお、サイト名の取得方法は「利用例＞接続先サイト一覧の取得」をご参考下さい。",
        "operationId": "readStatus",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "サイトのステータスの取得に成功しました"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error401"
                }
              }
            },
            "description": "認証に失敗しました"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDefault"
                }
              }
            },
            "description": "不明なエラーです"
          }
        },
        "summary": "サイトのステータスの取得",
        "tags": [
          "ステータス"
        ]
      }
    }
  },
  "security": [
    {
      "BasicAuth": []
    }
  ],
  "servers": [
    {
      "url": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/isk01/v2"
    },
    {
      "url": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/tky01/v2"
    },
    {
      "url": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/arc02/v2"
    }
  ],
  "tags": [
    {
      "description": "サイトに関する情報",
      "name": "サイト"
    },
    {
      "description": "バケットに関する情報",
      "name": "バケット"
    },
    {
      "description": "サイトアカウントに関する情報",
      "name": "サイトアカウント"
    },
    {
      "description": "パーミッションに関する情報",
      "name": "パーミッション"
    },
    {
      "description": "ステータスに関する情報",
      "name": "ステータス"
    }
  ]
}
