{
  "openapi": "3.0.0",
  "info": {
    "version": "2.5",
    "title": "IBM Cloud Object Storage S3 API",
    "description": "## Introduction\n\nThe IBM Cloud® Object Storage API is a REST-based API for reading and writing objects. It uses IBM Cloud® Identity and Access Management for authentication/authorization, and supports a subset of the S3 API for easy migration of applications to IBM Cloud.\n\nFor details about using Object Storage, see the IBM Cloud [docs](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-getting-started-cloud-object-storage).\n\nObject Storage is a global service. The location of data is determined by the region where a bucket is created, and subsequent requests to that bucket must be sent to the same corresponding endpoint. The examples shown here assume that requests are sent to the US South region. For more details about selecting endpoints Object Storage, see the IBM Cloud [docs](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-endpoints#endpoints-region).\n\nJava developers can use this SDK to interact with Object Storage. The SDK is a fork of the official [AWS SDK for Java](https://github.com/aws/aws-sdk-java). For more information, see the [COS SDK for Java API Reference](https://ibm.github.io/ibm-cos-sdk-java/).\n\nThe code examples on this tab use the client library that is provided for Java.\n\nMaven\n\n```xml\n<dependency>\n  <groupId>com.ibm.cos</groupId>\n  <artifactId>ibm-cos-java-sdk</artifactId>\n</dependency>\n```\n\nGitHub\n\n<p>\n  <code><a href=\"https://github.com/IBM/ibm-cos-sdk-java\">https://github.com/IBM/ibm-cos-sdk-java</a></code>\n</p>\n\nJavaScript developers can use this SDK to interact with Object Storage. The SDK is a fork of the official [AWS SDK for JavaScript](https://github.com/aws/aws-sdk-js). For more information, see the [COS SDK for JavaScript API Reference](https://ibm.github.io/ibm-cos-sdk-js/).\n\nThe SDK is supported on Node versions 4.x and later.\n\nThe code examples on this tab use the client library that is provided for Node.js.\n\nInstallation\n\n```bash\nnpm install ibm-cos-sdk\n```\n\nGitHub\n\n<p>\n  <code><a href=\"https://github.com/IBM/ibm-cos-sdk-js\">https://github.com/IBM/ibm-cos-sdk-js</a></code>\n</p>\n\nPython developers can use this SDK to interact with Object Storage. The SDK is a fork of the [boto3 library](https://github.com/boto/boto3). For more information, see the [COS SDK for Python API Reference](https://ibm.github.io/ibm-cos-sdk-python/).\n\nThe code examples on this tab use the client library that is provided for Python.\n\nInstallation\n\n```bash\npip install --upgrade ibm-cos-sdk\n```\n\nGitHub\n\n<p>\n  <code>\n  <a href=\"https://github.com/IBM/ibm-cos-sdk-python\">https://github.com/IBM/ibm-cos-sdk-python</a></code>\n</p>\n\nGo developers can use this SDK to interact with Object Storage. The SDK is a fork of the official [AWS SDK for Go](https://github.com/aws/aws-sdk-go). For more information, see the [COS SDK for Go API Reference](https://ibm.github.io/ibm-cos-sdk-go/).\n\nThe SDK supports Go versions 1.10 - 1.12.\n\nThe code examples on this tab use the client library that is provided for Go.\n\n```bash\ngo get -u github.com/IBM/ibm-cos-sdk-go\n```\n\nGitHub\n\n<p>\n  <code><a href=\"https://github.com/IBM/ibm-cos-sdk-go\">https://github.com/IBM/ibm-cos-sdk-go</a></code>\n</p>\n\n## Error handling\n\nThe Object Storage service uses standard HTTP response codes to indicate if a method completes successfully. A `200` response always indicates success. A `400` type response is some sort of failure, and a `500` type response usually indicates an internal system error.\n\nFor more details about response codes Object Storage, see the IBM Cloud [docs](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-compatibility-api).\n\n| Element                     | Type   | Description                                                                    |\n|-----------------------------|--------|--------------------------------------------------------------------------------|\n| Code                        | string | Error code identifying the type of error (for example NoSuchBucket, AccessDenied)    |\n| Message                     | string | Human-readable error message describing what went wrong                        |\n| Method                      | string | HTTP method used in the request that caused the error (for example GET, PUT, DELETE) |\n| Resource                    | string | The S3 resource path that was accessed when the error occurred                 |\n| RequestId                   | string | Unique identifier for the request, used for troubleshooting and support        |\n| StringToSign                | string | The canonical string that was used for signature calculation in authentication |\n| StringToSignBytes           | string | Hexadecimal representation of the StringToSign bytes                           |\n| SignatureProvided           | string | The signature value provided by the client in the request                      |\n| CanonicalRequest            | string | The canonical request string used in AWS Signature Version 4 authentication    |\n| CanonicalRequestBytes       | string | Hexadecimal representation of the CanonicalRequest bytes                       |\n| AWSAccessKeyId              | string | The AWS access key ID used in the request authentication                       |\n| ArgumentName                | string | Name of the invalid argument that caused the error                             |\n| ArgumentValue               | string | Value of the invalid argument that caused the error                            |\n| HeadersNotSigned            | string | List of headers that were not included in the signature calculation            |\n| ResourceType                | string | Type of S3 resource involved in the error (for example bucket, object)               |\n| Key                         | string | Object key (name) associated with the error                                    |\n| VersionId                   | string | Version ID of the object if versioning is enabled                              |\n| ProposedSize                | string | Size value that was proposed in the request                                    |\n| MinSizeAllowed              | string | Minimum allowed size for the operation                                         |\n| MaxSizeAllowed              | string | Maximum allowed size for the operation                                         |\n| PartNumber                  | string | Part number in a multipart upload operation                                    |\n| ETag                        | string | Entity tag of the object involved in the error                                 |\n| ClientComputedContentSHA256 | string | SHA256 hash of the content as computed by the client                           |\n| S3ComputedContentSHA256     | string | SHA256 hash of the content as computed by the S3 service                       |\n| httpStatusCode              | int    | HTTP status code associated with the error (for example 404, 403, 500)               |\n\nNote: Only `Code`, `Message`, `RequestId`, and `httpStatusCode` are required elements. All other elements are\noptional and included based on the specific error type and context.\n\nSample basic error response:\n\n```xml\n<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Error>\n    <Code>NoSuchKey</Code>\n    <Message>The specified key does not exist.</Message>\n    <Resource>/bucket/object</Resource>\n    <RequestId>c786eaf9-c6f0-4aa5-bb57-604898497edb</RequestId>\n    <httpStatusCode>404</httpStatusCode>\n</Error>\n```\n\nSample error response with illegal arguments:\n\n```xml\n<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Error>\n    <Code>InvalidArgument</Code>\n    <Message>Provided max-keys not an integer or within integer range</Message>\n    <Resource>/bucket/</Resource>\n    <RequestId>e0fc367e-dcd3-4c03-9684-981116501c25</RequestId>\n    <ArgumentName>max-keys</ArgumentName>\n    <ArgumentValue>invalid-value</ArgumentValue>\n    <httpStatusCode>400</httpStatusCode>\n</Error>\n```\n\n## Error codes\n\n| Error Code                          | Description                                                                                                                                                             | HTTP Status Code                    |\n|-------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------|\n| AccessDenied                        | Access Denied                                                                                                                                                           | 403 Forbidden                       |\n| BadDigest                           | The Content-MD5 that you specified did not match what we received.                                                                                                          | 400 Bad Request                     |\n| BucketAlreadyExists                 | The requested bucket name isn't available. The bucket namespace is shared by all users of the system. Please select a different name and try again.                   | 409 Conflict                        |\n| BucketAlreadyOwnedByYou             | Your previous request to create the named bucket that is succeeded and you already own it.                                                                                     | 409 Conflict                        |\n| BucketNotEmpty                      | The bucket that you tried to delete isn't empty.                                                                                                                           | 409 Conflict                        |\n| CredentialsNotSupported             | This request does not support credentials.                                                                                                                             | 400 Bad Request                     |\n| EntityTooSmall                      | Your proposed upload is smaller than the minimum allowed object size.                                                                                                  | 400 Bad Request                     |\n| EntityTooLarge                      | Your proposed upload exceeds the maximum allowed object size.                                                                                                          | 400 Bad Request                     |\n| IncompleteBody                      | You did not provide the number of bytes specified by the Content-Length HTTP header.                                                                                   | 400 Bad Request                     |\n| IncorrectNumberOfFilesInPostRequest | POST requires exactly one file upload per request.                                                                                                                     | 400 Bad Request                     |\n| InlineDataTooLarge                  | Inline data exceeds the maximum allowed size.                                                                                                                          | 400 Bad Request                     |\n| InternalError                       | We encountered an internal error. Please try again.                                                                                                                    | 500 Internal Server Error           |\n| InvalidAccessKeyId                  | The AWS access key Id that you provided does not exist in our records.                                                                                                      | 403 Forbidden                       |\n| InvalidArgument                     | Invalid Argument                                                                                                                                                        | 400 Bad Request                     |\n| InvalidBucketName                   | The specified bucket is not valid.                                                                                                                                     | 400 Bad Request                     |\n| InvalidBucketState                  | The request is not valid with the current state of the bucket.                                                                                                         | 409 Conflict                        |\n| InvalidDigest                       | The Content-MD5 that you specified is not valid.                                                                                                                            | 400 Bad Request                     |\n| InvalidLocationConstraint           | The specified location constraint is not valid. For more information about regions, see How to Select a Region for Your Buckets.                                       | 400 Bad Request                     |\n| InvalidObjectState                  | The operation is not valid for the current state of the object.                                                                                                        | 403 Forbidden                       |\n| InvalidPart                         | One or more of the specified parts might not be found. The part might not have been uploaded, or the specified entity tag might not have matched the part's entity tag. | 400 Bad Request                     |\n| InvalidPartOrder                    | The list of parts was not in ascending order. Parts list must specified in order by part number.                                                                       | 400 Bad Request                     |\n| InvalidRange                        | The requested range cannot be satisfied.                                                                                                                               | 416 Requested Range Not Satisfiable |\n| InvalidRequest                      | Please use AWS4-HMAC-SHA256.                                                                                                                                           | 400 Bad Request                     |\n| InvalidSecurity                     | The provided security credentials are not valid.                                                                                                                       | 403 Forbidden                       |\n| InvalidURI                          | Mightn't parse the specified URI.                                                                                                                                      | 400 Bad Request                     |\n| KeyTooLong                          | Your key is too long.                                                                                                                                                  | 400 Bad Request                     |\n| MalformedPOSTRequest                | The body of your POST request is not well-formed multipart/form-data.                                                                                                  | 400 Bad Request                     |\n| MalformedXML                        | The XML you provided was not well-formed or did not validate against our published schema.                                                                             | 400 Bad Request                     |\n| MaxMessageLengthExceeded            | Your request was too large.                                                                                                                                              | 400 Bad Request                     |\n| MaxPostPreDataLengthExceededError   | Your POST request fields preceding the upload file were too large.                                                                                                     | 400 Bad Request                     |\n| MetadataTooLarge                    | Your metadata headers exceed the maximum allowed metadata size.                                                                                                        | 400 Bad Request                     |\n| MethodNotAllowed                    | The specified method is not allowed against this resource.                                                                                                             | 405 Method Not Allowed              |\n| MissingContentLength                | You must provide the Content-Length HTTP header.                                                                                                                       | 411 Length Required                 |\n| MissingRequestBodyError             | This happens when the user sends an empty xml document as a request. The error message is, \"Request body is empty.\"                                                     | 400 Bad Request                     |\n| NoSuchBucket                        | The specified bucket does not exist.                                                                                                                                   | 404 Not Found                       |\n| NoSuchKey                           | The specified key does not exist.                                                                                                                                      | 404 Not Found                       |\n| NoSuchUpload                        | The specified multipart upload does not exist. The upload ID might be invalid, or the multipart upload might have been aborted or completed.                           | 404 Not Found                       |\n| NotImplemented                      | A header that you provided implies functionality that is not implemented.                                                                                                   | 501 Not Implemented                 |\n| OperationAborted                    | A conflicting conditional operation is currently in progress against this resource. Try again.                                                                         | 409 Conflict                        |\n| PreconditionFailed                  | At least one of the preconditions you specified did not hold.                                                                                                          | 412 Precondition Failed             |\n| Redirect                            | Temporary redirect.                                                                                                                                                    | 307 Moved Temporarily               |\n| RequestIsNotMultiPartContent        | Bucket POST must be of the enclosure-type multipart/form-data.                                                                                                         | 400 Bad Request                     |\n| RequestTimeout                      | Your socket connection to the server was not read from or written to within the timeout period.                                                                        | 400 Bad Request                     |\n| RequestTimeTooSkewed                | The difference between the request time and the server's time is too large.                                                                                            | 403 Forbidden                       |\n| ServiceUnavailable                  | Reduce your request rate.                                                                                                                                              | 503 Service Unavailable             |\n| SlowDown                            | Reduce your request rate.                                                                                                                                              | 503 Slow Down                       |\n| TemporaryRedirect                   | You are being redirected to the bucket while DNS updates.                                                                                                              | 307 Moved Temporarily               |\n| TooManyBuckets                      | You have attempted to create more buckets than allowed.                                                                                                                | 400 Bad Request                     |\n| UnexpectedContent                   | This request does not support content.                                                                                                                                 | 400 Bad Request                     |\n| UserKeyMustBeSpecified              | The bucket POST must contain the specified field name. If it is specified, check the order of the fields.                                                              | 400 Bad Request                     |\n\n<!--# S3 Bucket Replication Failure Schema Elements\n\n| Element                      | Parent                       | Type                                   | Description                                                                                                                                                                                                                                                                                                   |\n|------------------------------|------------------------------|----------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| ListReplicationFailureResult | (root)                       | ListReplicationFailureResult data type | Root element containing the complete response for listing objects that failed replication in a bucket                                                                                                                                                                                                         |\n| Name                         | ListReplicationFailureResult | string                                 | The name of the bucket containing the replication failures                                                                                                                                                                                                                                                    |\n| FirstSyncAttemptedBefore     | ListReplicationFailureResult | string                                 | `first-sync-attempted-before` parameter that was specified on the request                                                                                                                                                                                                                                     |\n| MaxKeys                      | ListReplicationFailureResult | int                                    | `max-keys` parameter that was specified on the listing request                                                                                                                                                                                                                                                |\n| IsTruncated                  | ListReplicationFailureResult | boolean                                | Indicates whether the list of replication failures is truncated; if true, additional results exist beyond this response and `ContinuationToken` is provided for pagination                                                                                                                                    |\n| EncodingType                 | ListReplicationFailureResult | string                                 | `encoding-type` parameter that was specified on the listing request                                                                                                                                                                                                                                           |\n| KeyCount                     | ListReplicationFailureResult | int                                    | The number of replication failure entries included in this response                                                                                                                                                                                                                                           |\n| ContinuationToken            | ListReplicationFailureResult | string                                 | `continuation-token` parameter that was specified on the listing request                                                                                                                                                                                                                                      |\n| NextContinuationToken        | ListReplicationFailureResult | string                                 | Token to use in the next request to continue listing additional replication failures when `IsTruncated` is true                                                                                                                                                                                               |\n| Contents                     | ListReplicationFailureResult | Array of Contents data type            | Individual replication failure entry describing a specific object version that failed to replicate. May have up to 1000 entries.                                                                                                                                                                              |\n| Key                          | Contents                     | string                                 | The object name/key of the object that failed replication                                                                                                                                                                                                                                                     |\n| VersionId                    | Contents                     | string                                 | The version identifier of the specific object version that failed replication                                                                                                                                                                                                                                 |\n| SyncType                     | Contents                     | string                                 | The type of replication sync operation that failed. Possible values are:<br/>`CONTENT` - initial sync of the object version<br/>`TAG` - object tag update<br/>`DELETE` - delete marker sync<br/>`RETENTION` - object lock retention update<br/>`LEGAL_HOLD` - object lock legal hold update                   |\n| FirstSyncAttempted           | Contents                     | string                                 | ISO-8601 timestamp of the first attempt to replicate this object version                                                                                                                                                                                                                                      |\n| LastSyncAttempted            | Contents                     | string                                 | ISO-8601 timestamp of the most recent attempt to replicate this object version                                                                                                                                                                                                                                |\n| SyncFailureCause             | Contents                     | string                                 | Description of the reason why replication failed for this object (e.g., permission denied, network error, destination unavailable). See [replication failure causes](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-replication-overview#replication-failure-causes) for details. |\n-->",
    "termsOfService": "https://www.ibm.com/software/sla/sladb.nsf/sla/bm-8004-01",
    "contact": {
      "name": "Nicholas Lange",
      "email": "nicholas.lange@ibm.com"
    },
    "license": {
      "name": "Apache 2.0 License",
      "url": "http://www.apache.org/licenses/"
    },
    "x-sdk-supported-languages": [
      "curl",
      "python",
      "node",
      "java",
      "go"
    ],
    "x-github": "https://github.ibm.com/cloud-api-docs/cos",
    "x-github-issues": "https://github.ibm.com/cloud-api-docs/cos/issues/new",
    "x-last-updated": "2026-06-24"
  },
  "externalDocs": {
    "description": "IBM COS documentation",
    "url": "https://cloud.ibm.com/docs/services/cloud-object-storage/"
  },
  "tags": [
    {
      "name": "Basic operations",
      "description": "Core S3-compatible operations for buckets and objects"
    },
    {
      "name": "Multipart uploads",
      "description": "Operations for managing multipart uploads"
    },
    {
      "name": "Lifecycle configuration",
      "description": "Operations for managing bucket lifecycle policies"
    },
    {
      "name": "Bucket replication operations",
      "description": "Operations for configuring and managing bucket replication"
    },
    {
      "name": "Immutable object storage",
      "description": "Operations for configuring object retention and protection"
    },
    {
      "name": "Websites and CORS",
      "description": "Operations for configuring static website hosting and CORS"
    },
    {
      "name": "Tagging",
      "description": "Operations for managing object tags"
    },
    {
      "name": "Security and compliance",
      "description": "Operations for managing access control and security settings"
    }
  ],
  "servers": [
    {
      "url": "https://s3.{region}.cloud-object-storage.appdomain.cloud",
      "variables": {
        "region": {
          "enum": [
            "us",
            "us-east",
            "us-south",
            "eu",
            "eu-gb",
            "eu-de",
            "ap",
            "jp-tok",
            "au-syd",
            "ams03",
            "che01",
            "hkg02",
            "mel01",
            "mex01",
            "mil01",
            "mon01",
            "par01",
            "osl01",
            "sjc04",
            "sao01",
            "seo01",
            "sng01",
            "tor01"
          ],
          "default": "us-south"
        }
      },
      "description": "Requests originating from the open Internet."
    },
    {
      "url": "https://s3.{region}.private.cloud-object-storage.appdomain.cloud",
      "variables": {
        "region": {
          "enum": [
            "us",
            "us-east",
            "us-south",
            "eu",
            "eu-gb",
            "eu-de",
            "ap",
            "jp-tok",
            "au-syd",
            "ams03",
            "che01",
            "hkg02",
            "mel01",
            "mex01",
            "mil01",
            "mon01",
            "par01",
            "osl01",
            "sjc04",
            "sao01",
            "seo01",
            "sng01",
            "tor01"
          ],
          "default": "us-south"
        }
      },
      "description": "Requests originating from within IBM Cloud."
    },
    {
      "url": "https://s3.{region}.direct.cloud-object-storage.appdomain.cloud",
      "variables": {
        "region": {
          "enum": [
            "us",
            "us-east",
            "us-south",
            "eu",
            "eu-gb",
            "eu-de",
            "ap",
            "jp-tok",
            "au-syd",
            "ams03",
            "che01",
            "hkg02",
            "mel01",
            "mex01",
            "mil01",
            "mon01",
            "par01",
            "osl01",
            "sjc04",
            "sao01",
            "seo01",
            "sng01",
            "tor01"
          ],
          "default": "us-south"
        }
      },
      "description": "Requests originating from within an IBM Cloud VPC."
    }
  ],
  "paths": {
    "/": {
      "get": {
        "tags": [
          "Basic operations"
        ],
        "operationId": "ListBuckets",
        "summary": "List buckets in a service instance",
        "description": "This operation lists all buckets within the specified service instance, regardless of location.  Note that while any endpoint may be used to list all buckets, any operations that target a specific bucket must use the appropriate endpoint for that bucket's location.\n",
        "parameters": [
          {
            "name": "Ibm-Service-Instance-Id",
            "in": "header",
            "required": true,
            "description": "This header references the service instance that contains buckets to list. This value can be either the full Cloud Resource Name (CRN) or just the GUID segment that identifies the service instance.",
            "schema": {
              "type": "string",
              "example": "d6f76k03-6k4f-4a82-n165-697654o63903"
            }
          },
          {
            "name": "extended",
            "in": "query",
            "required": false,
            "description": "If supplied, the returned listing will also include the provisioning code (`LocationConstraint`) for each bucket. This allows for inferring a bucket's location and associated endpoint.",
            "schema": {
              "type": "boolean"
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.account.get_account_buckets"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.instance.list"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "List buckets",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"GET\" \"https://s3.$REGION.cloud-object-storage.appdomain.cloud/\" \\\n     -H \"Authorization: Bearer $IAM_TOKEN\" \\\n     -H \"ibm-service-instance-id: $SERVICE_INSTANCE_ID\"\n"
                    ]
                  }
                ]
              },
              {
                "name": "List buckets with provisioning codes",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"GET\" \"https://s3.$REGION.cloud-object-storage.appdomain.cloud?extended\" \\\n     -H \"Authorization: Bearer $IAM_TOKEN\" \\\n     -H \"ibm-service-instance-id: $SERVICE_INSTANCE_ID\"\n"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "List buckets",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      "public static void getBuckets() {\n  System.out.println(\"Retrieving list of buckets\");\n\n  final List<Bucket> bucketList = _cos.listBuckets();\n  for (final Bucket bucket : bucketList) {\n    System.out.printf(\"Bucket Name: %s\\n\", bucket.getName());\n  }\n}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "List buckets",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      "def get_buckets():\n    print(\"Retrieving list of buckets\")\n    try:\n        buckets = cos.buckets.all()\n        for bucket in buckets:\n            print(\"Bucket Name: {0}\".format(bucket.name))\n    except ClientError as be:\n        print(\"CLIENT ERROR: {0}\\n\".format(be))\n    except Exception as e:\n        print(\"Unable to retrieve list buckets: {0}\".format(e))"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "List buckets",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      "function getBuckets() {\n    console.log('Retrieving list of buckets');\n    return cos.listBuckets()\n    .promise()\n    .then((data) => {\n        if (data.Buckets != null) {\n            for (var i = 0; i < data.Buckets.length; i++) {\n                console.log(`Bucket Name: ${data.Buckets[i].Name}`);\n            }\n        }\n    })\n    .catch((e) => {\n        console.error(`ERROR: ${e.code} - ${e.message}\\n`);\n    });\n}"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "List buckets",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      "func main() {\n\n    // Create client\n    sess := session.Must(session.NewSession())\n    client := s3.New(sess, conf)\n\n    // Call Function\n    d, _ := client.ListBuckets(&s3.ListBucketsInput{})\n    fmt.Println(d)\n}"
                    ]
                  }
                ]
              }
            ]
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/BucketListing"
                },
                "examples": {
                  "normalResponse": {
                    "description": "Success",
                    "summary": "Example of a normal bucket listing response.",
                    "value": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<ListAllMyBucketsResult>\n  <Owner>\n    <ID>{account-id}</ID>\n    <DisplayName>{account-id}</DisplayName>\n  </Owner>\n  <Buckets>\n    <Bucket>\n      <Name>bucket-27200-lwx4cfvcue</Name>\n      <CreationDate>2016-08-18T14:21:36.593Z</CreationDate>\n    </Bucket>\n    <Bucket>\n      <Name>bucket-27590-drqmydpfdv</Name>\n      <CreationDate>2016-08-18T14:22:32.366Z</CreationDate>\n    </Bucket>\n    <Bucket>\n      <Name>bucket-27852-290jtb0n2y</Name>\n      <CreationDate>2016-08-18T14:23:03.141Z</CreationDate>\n    </Bucket>\n    <Bucket>\n      <Name>bucket-28731-k0o1gde2rm</Name>\n      <CreationDate>2016-08-18T14:25:09.599Z</CreationDate>\n    </Bucket>\n  </Buckets>\n</ListAllMyBucketsResult>\n"
                  },
                  "extendedResponse": {
                    "description": "Success",
                    "summary": "Example of an extended bucket listing response.",
                    "value": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<ListAllMyBucketsResult xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">\n  <Owner>\n    <ID>{account-id}</ID>\n    <DisplayName>{account-id}</DisplayName>\n  </Owner>\n  <IsTruncated>false</IsTruncated>\n  <MaxKeys>1000</MaxKeys>\n  <Prefix/>\n  <Marker/>\n  <Buckets>\n    <Bucket>\n      <Name>bucket-27200-lwx4cfvcue</Name>\n      <CreationDate>2016-08-18T14:21:36.593Z</CreationDate>\n      <LocationConstraint>us-south-standard</LocationConstraint>\n      <CreationTemplateId>dca204eb-72b5-4e2a-a142-808d2a5c2a87</CreationTemplateId>\n    </Bucket>\n    <Bucket>\n      <Name>bucket-27590-drqmydpfdv</Name>\n      <CreationDate>2016-08-18T14:22:32.366Z</CreationDate>\n      <LocationConstraint>seo01-standard</LocationConstraint>\n      <CreationTemplateId>dca204eb-72b5-4e2a-a142-808d2a5c2a87</CreationTemplateId>\n    </Bucket>\n    <Bucket>\n      <Name>bucket-27852-290jtb0n2y</Name>\n      <CreationDate>2016-08-18T14:23:03.141Z</CreationDate>\n      <LocationConstraint>eu-standard</LocationConstraint>\n      <CreationTemplateId>dca204eb-72b5-4e2a-a142-808d2a5c2a87</CreationTemplateId>\n    </Bucket>\n    <Bucket>\n      <Name>bucket-28731-k0o1gde2rm</Name>\n      <CreationDate>2016-08-18T14:25:09.599Z</CreationDate>\n      <LocationConstraint>us-cold</LocationConstraint>\n      <CreationTemplateId>dca204eb-72b5-4e2a-a142-808d2a5c2a87</CreationTemplateId>\n    </Bucket>\n  </Buckets>\n</ListAllMyBucketsResult>\n"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/{Bucket}": {
      "put": {
        "tags": [
          "Basic operations"
        ],
        "operationId": "CreateBucket",
        "summary": "Create a new bucket",
        "description": "To create a bucket, you must create a COS service instance, and create an API key or HMAC credentials to authenticate requests.\n\nBucket names must be globally unique and DNS-compliant; names between 3 and 63 characters long must be made of lowercase letters, numbers, and dashes. Bucket names must begin and end with a lowercase letter or number. Bucket names resembling IP addresses are not allowed. Bucket names must be unique because all buckets in the public cloud share a global namespace, allowing access to buckets without the need to provide any service instance or account information. It is not possible to create a bucket with a name beginning with `cosv1-` or `account-` as these prefixes are reserved by the system.\n\nBuckets are created in the location specified in the endpoint used to make the request. Once a bucket is created, it can be accessed at that location using any of the three networks: public, private, or direct. Any requests targeting an existing bucket using an endpoint with an incorrect location will result in a `404 NoSuchKey` error.\n\nAll data in IBM Cloud Object Storage is encrypted at rest. This technology individually encrypts each object by using per-object generated keys. These keys are secured and reliably stored by using the same Information Dispersal Algorithms that protect object data by using an All-or-Nothing Transform (AONT). Key data is impossible to recover, even if individual nodes or hard disks are compromised. If it is necessary to control the encryption keys used, an IBM Key Protect or Hyper Protect Crypto Services root key CRN can be provided during bucket creation.\n\nIt is possible to create a bucket with a \"storage class\" that alters the way storage charges are incurred based on frequency of access. This can be helpful when dealing with \"cool\" data that might need to be accessed without the delay of restoring from an archive, but is unlikely to be accessed frequently. A provisioning code can be passed in the S3 API `LocationConstraint` parameter to specify the storage class of a new bucket. A storage class can not be altered after a bucket is created.\n\nThe S3 API concept of a \"bucket owner\" is not an individual user, but instead is considered to be the Service Instance associated with the bucket.\n",
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket to create.",
            "schema": {
              "type": "string",
              "example": "my-new-bucket"
            }
          },
          {
            "name": "ibm-service-instance-id",
            "in": "header",
            "required": false,
            "description": "This header references the service instance where the bucket will be created and to which data usage will be billed.  It is required when using IAM tokens, but it should not be used when using hmac credentials. This value can be either the full Cloud Resource Name (CRN) or just the GUID segment that identifies the service instance.",
            "schema": {
              "type": "string",
              "example": "d6f76k03-6k4f-4a82-n165-697654o63903"
            }
          },
          {
            "name": "ibm-sse-kp-encryption-algorithm",
            "in": "header",
            "required": false,
            "description": "The algorithm and key size used to for the managed encryption root key. Required if `ibm-sse-kp-customer-root-key-crn` is also present.",
            "schema": {
              "type": "string",
              "enum": [
                "AES256"
              ],
              "example": "AES256"
            }
          },
          {
            "name": "ibm-sse-kp-customer-root-key-crn",
            "in": "header",
            "required": false,
            "description": "The CRN of the root key used to encrypt the bucket. Required if `ibm-sse-kp-encryption-algorithm` is also present.",
            "schema": {
              "type": "string",
              "example": "crn:v1:bluemix:public:kms:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:12e8c9c2-a162-472d-b7d6-8b9a86b815a6:key:02fd6835-6001-4482-a892-13bd2085f75d"
            }
          },
          {
            "name": "x-amz-acl",
            "deprecated": true,
            "in": "header",
            "required": false,
            "description": "The canned ACL to apply to the bucket. This header should not be used - instead create an IAM policy to grant public access to a bucket.",
            "schema": {
              "type": "string",
              "enum": [
                "private",
                "public-read"
              ]
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "xml": {
                  "name": "CreateBucketConfiguration"
                },
                "properties": {
                  "LocationConstraint": {
                    "$ref": "#/components/schemas/BucketLocationConstraint"
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.put_bucket"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Create a bucket in the US South region",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"PUT\" \"https://s3.us-south.cloud-object-storage.appdomain.cloud/$NEW_BUCKET\" \\\n     -H \"Authorization: Bearer $IAM_TOKEN\" \\\n     -H \"ibm-service-instance-id: $SERVICE_INSTANCE_ID\"\n"
                    ]
                  }
                ]
              },
              {
                "name": "Create a bucket with Key Protect in a Smart Tier billing class in the US South region",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"PUT\" \"https://s3.us-south.cloud-object-storage.appdomain.cloud/$NEW_BUCKET\" \\\n     -H \"Authorization: Bearer $IAM_TOKEN\" \\\n     -H \"ibm-service-instance-id: $SERVICE_INSTANCE_ID\" \\\n     -H \"ibm-sse-kp-encryption-algorithm: AES256\" \\\n     -H \"ibm-sse-kp-customer-root-key-crn: $KP_ROOT_KEY_CRN\" \\\n     -d \"<CreateBucketConfiguration>\n           <LocationConstraint>us-south-smart</LocationConstraint>\n         </CreateBucketConfiguration>\"\n"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Create a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      "public static void createBucket(String bucketName) {\n    System.out.printf(\"Creating new bucket: %s\\n\", bucketName);\n    _cos.createBucket(bucketName);\n    System.out.printf(\"Bucket: %s created!\\n\", bucketName);\n}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Create a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      "def create_bucket(bucket_name):\n    print(\"Creating new bucket: {0}\".format(bucket_name))\n    try:\n        cos.Bucket(bucket_name).create(\n            CreateBucketConfiguration={\n                \"LocationConstraint\":COS_BUCKET_LOCATION\n            }\n        )\n        print(\"Bucket: {0} created!\".format(bucket_name))\n    except ClientError as be:\n        print(\"CLIENT ERROR: {0}\\n\".format(be))\n    except Exception as e:\n        print(\"Unable to create bucket: {0}\".format(e))"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Create a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      "function createBucket(bucketName) {\n    console.log(`Creating new bucket: ${bucketName}`);\n    return cos.createBucket({\n        Bucket: bucketName,\n        CreateBucketConfiguration: {\n          LocationConstraint: 'us-standard'\n        },\n    }).promise()\n    .then((() => {\n        console.log(`Bucket: ${bucketName} created!`);\n    }))\n    .catch((e) => {\n        console.error(`ERROR: ${e.code} - ${e.message}\\n`);\n    });\n}"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Create a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      "func main() {\n\n    // Create client\n    sess := session.Must(session.NewSession())\n    client := s3.New(sess, conf)\n\n    // Bucket Names\n    newBucket := \"<NEW_BUCKET_NAME>\"\n    newColdBucket := \"<NEW_COLD_BUCKET_NAME>\"\n\n    input := &s3.CreateBucketInput{\n        Bucket: aws.String(newBucket),\n    }\n    client.CreateBucket(input)\n\n    input2 := &s3.CreateBucketInput{\n        Bucket: aws.String(newColdBucket),\n        CreateBucketConfiguration: &s3.CreateBucketConfiguration{\n            LocationConstraint: aws.String(\"us-cold\"),\n        },\n    }\n    client.CreateBucket(input2)\n\n    d, _ := client.ListBuckets(&s3.ListBucketsInput{})\n    fmt.Println(d)\n}"
                    ]
                  }
                ]
              }
            ]
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "409": {
            "description": "BucketAlreadyExists",
            "content": {
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/BucketAlreadyExists"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Basic operations"
        ],
        "summary": "Delete a bucket",
        "operationId": "DeleteBucket",
        "description": "Only empty buckets may be deleted. A bucket name is returned to the available namespace approximately 10 minutes after deletion.\n",
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.delete_bucket"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket.delete"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Delete a bucket in the US South region",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"DELETE\" \"https://s3.us-south.cloud-object-storage.appdomain.cloud/$BUCKET\" \\\n     -H \"Authorization: Bearer $IAM_TOKEN\" \\\n"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Delete a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      "public static void deleteBucket(String bucketName) {\n    System.out.printf(\"Deleting bucket: %s\\n\", bucketName);\n    _cos.deleteBucket(bucketName);\n    System.out.printf(\"Bucket: %s deleted!\\n\", bucketName);\n}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Delete a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      "def delete_bucket(bucket_name):\n    print(\"Deleting bucket: {0}\".format(bucket_name))\n    try:\n        cos.Bucket(bucket_name).delete()\n        print(\"Bucket: {0} deleted!\".format(bucket_name))\n    except ClientError as be:\n        print(\"CLIENT ERROR: {0}\\n\".format(be))\n    except Exception as e:\n        print(\"Unable to delete bucket: {0}\".format(e))"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Delete a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      "function deleteBucket(bucketName) {\n    console.log(`Deleting bucket: ${bucketName}`);\n    return cos.deleteBucket({\n        Bucket: bucketName\n    }).promise()\n    .then(() => {\n        console.log(`Bucket: ${bucketName} deleted!`);\n    })\n    .catch((e) => {\n        console.error(`ERROR: ${e.code} - ${e.message}\\n`);\n    });\n}"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Delete a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      "func main() {\n\n    // Bucket Name\n    bucket := \"<BUCKET_NAME>\"\n\n    // Create client\n    sess := session.Must(session.NewSession())\n    client := s3.New(sess, conf)\n\n    input := &s3.DeleteBucketInput{\n        Bucket: aws.String(bucket),\n    }\n    d, _ := client.DeleteBucket(input)\n    fmt.Println(d)\n}"
                    ]
                  }
                ]
              }
            ]
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket to delete.",
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "head": {
        "tags": [
          "Basic operations"
        ],
        "summary": "Read a bucket's headers",
        "operationId": "HeadBucket",
        "description": "This request is useful for checking whether a bucket has Key Protect enabled.\n",
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.head"
            },
            {
              "name": "cloud-object-storage.bucket.list_crk_id"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-metadata.read"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Fetch a bucket's headers",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"GET\" \"https://s3.$REGION.cloud-object-storage.appdomain.cloud/$NEW_BUCKET\" \\\n     -H \"Authorization: Bearer $IAM_TOKEN\" \\\n     -H \"ibm-service-instance-id: $SERVICE_INSTANCE_ID\"\n"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Fetch a bucket's headers",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      "public HeadBucketRequest(String bucketName)"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Fetch a bucket's headers",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      "response = client.head_bucket(\n    Bucket='string',\n    ExpectedBucketOwner='string'\n)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Fetch a bucket's headers",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      "var params = {\n  Bucket: 'STRING_VALUE' /* required */\n};\ns3.headBucket(params, function(err, data) {\n  if (err) console.log(err, err.stack); // an error occurred\n  else     console.log(data);           // successful response\n});"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Fetch a bucket's headers",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      "func main() {\n\n    // Bucket Name\n    bucket := \"<BUCKET_NAME>\"\n\n    sess := session.Must(session.NewSession())\n    client := s3.New(sess, conf)\n\n    d, _ := client.HeadBucket(bucket)\n    fmt.Println(d)\n}"
                    ]
                  }
                ]
              }
            ]
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "NoSuchBucket",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/NoSuchBucket"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket being checked. The bucket must exist in the location specified by the endpoint for the request to succeed.",
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "get": {
        "tags": [
          "Basic operations"
        ],
        "deprecated": false,
        "summary": "List objects in a bucket (v1)",
        "operationId": "ListObjects",
        "description": "Returns some or all (up to 1,000) of the objects in a bucket. You can use the request parameters as selection criteria to return a subset of the objects in a bucket. A `200 OK` response can contain valid or invalid XML. Make sure to design your application to parse the contents of the response and handle it appropriately. This version (v1) uses a `marker` parameter to list objects starting with a given object. Version 2 of this API provides a continuation token instead, making it a bit more straightforward to chain listing requests for buckets with large numbers of objects.",
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.get"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket.list"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "List objects in a bucket (v1)",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"GET\" \"https://s3.$REGION.cloud-object-storage.appdomain.cloud/$BUCKET\" \\\n     -H \"Authorization: Bearer $IAM_TOKEN\" \\\n"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "List objects in a bucket (v1)",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      "public static void getBucketContents(String bucketName) {\n    System.out.printf(\"Retrieving bucket contents from: %s\\n\", bucketName);\n\n    ObjectListing objectListing = _cos.listObjects(new ListObjectsRequest().withBucketName(bucketName));\n    for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {\n        System.out.printf(\"Item: %s (%s bytes)\\n\", objectSummary.getKey(), objectSummary.getSize());\n    }\n}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "List objects in a bucket (v1)",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      "def get_bucket_contents(bucket_name):\n    print(\"Retrieving bucket contents from: {0}\".format(bucket_name))\n    try:\n        files = cos.Bucket(bucket_name).objects.all()\n        for file in files:\n            print(\"Item: {0} ({1} bytes).\".format(file.key, file.size))\n    except ClientError as be:\n        print(\"CLIENT ERROR: {0}\\n\".format(be))\n    except Exception as e:\n        print(\"Unable to retrieve bucket contents: {0}\".format(e))"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "List objects in a bucket (v1)",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      "function getBucketContents(bucketName) {\n    console.log(`Retrieving bucket contents from: ${bucketName}`);\n    return cos.listObjects(\n        {Bucket: bucketName},\n    ).promise()\n    .then((data) => {\n        if (data != null && data.Contents != null) {\n            for (var i = 0; i < data.Contents.length; i++) {\n                var itemKey = data.Contents[i].Key;\n                var itemSize = data.Contents[i].Size;\n                console.log(`Item: ${itemKey} (${itemSize} bytes).`)\n            }\n        }\n    })\n    .catch((e) => {\n        console.error(`ERROR: ${e.code} - ${e.message}\\n`);\n    });\n}"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "List objects in a bucket (v1)",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      "func main() {\n\n    // Create client\n    sess := session.Must(session.NewSession())\n    client := s3.New(sess, conf)\n\n    // Bucket Name\n    Bucket := \"<BUCKET_NAME>\"\n\n    // Call Function\n    Input := &s3.ListObjectsInput{\n            Bucket: aws.String(Bucket),\n        }\n\n    l, e := client.ListObjects(Input)\n    fmt.Println(l)\n    fmt.Println(e) // prints \"<nil>\"\n}"
                    ]
                  }
                ]
              }
            ]
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ListObjectsOutput"
                },
                "examples": {
                  "normalResponse": {
                    "description": "Success",
                    "summary": "Example of a normal bucket listing response.",
                    "value": "<ListBucketResult xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">\n  <Name>apiary</Name>\n  <Prefix/>\n  <Marker/>\n  <MaxKeys>1000</MaxKeys>\n  <Delimiter/>\n  <IsTruncated>false</IsTruncated>\n  <Contents>\n    <Key>drone-bee</Key>\n    <LastModified>2016-08-25T17:38:38.549Z</LastModified>\n    <ETag>\"0cbc6611f5540bd0809a388dc95a615b\"</ETag>\n    <Size>4</Size>\n    <Owner>\n      <ID>{account-id}</ID>\n      <DisplayName>{account-id}</DisplayName>\n    </Owner>\n    <StorageClass>STANDARD</StorageClass>\n  </Contents>\n  <Contents>\n    <Key>soldier-bee</Key>\n    <LastModified>2016-08-25T17:49:06.006Z</LastModified>\n    <ETag>\"37d4c94839ee181a2224d6242176c4b5\"</ETag>\n    <Size>11</Size>\n    <Owner>\n      <ID>{account-id}</ID>\n      <DisplayName>{account-id}</DisplayName>\n    </Owner>\n    <StorageClass>STANDARD</StorageClass>\n  </Contents>\n  <Contents>\n    <Key>worker-bee</Key>\n    <LastModified>2016-08-25T17:46:53.288Z</LastModified>\n    <ETag>\"d34d8aada2996fc42e6948b926513907\"</ETag>\n    <Size>467</Size>\n    <Owner>\n      <ID>{account-id}</ID>\n      <DisplayName>{account-id}</DisplayName>\n    </Owner>\n    <StorageClass>STANDARD</StorageClass>\n  </Contents>\n</ListBucketResult>\n"
                  }
                }
              }
            }
          },
          "404": {
            "description": "NoSuchBucket",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/NoSuchBucket"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket to be listed.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "delimiter",
            "in": "query",
            "required": false,
            "description": "A delimiter is a character you use to group keys.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "encoding-type",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "string",
              "enum": [
                "url"
              ],
              "description": "Requests COS to url-encode the object keys in the response. Object keys may contain any Unicode character; however, XML 1.0 parser cannot parse some characters, such as characters with an ASCII value from 0 to 10. For characters that are not supported in XML 1.0, you can add this parameter to request that COS encodes the keys in the response."
            }
          },
          {
            "name": "marker",
            "in": "query",
            "required": false,
            "description": "Specifies the key to start with when listing objects in a bucket.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-keys",
            "in": "query",
            "required": false,
            "description": "Sets the maximum number of keys returned in the response. By default the API returns up to 1,000 key names. The response might contain fewer keys but will never contain more.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "prefix",
            "in": "query",
            "required": false,
            "description": "Limits the response to keys that begin with the specified prefix.",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/{Bucket}?list-type=2": {
      "get": {
        "tags": [
          "Basic operations"
        ],
        "operationId": "ListObjectsV2",
        "summary": "List objects in a bucket (v2)",
        "description": "Returns some or all (up to 1,000) of the objects in a bucket. You can use the request parameters as selection criteria to return a subset of the objects in a bucket. A `200 OK` response can contain valid or invalid XML. Make sure to design your application to parse the contents of the response and handle it appropriately.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ListObjectsV2Output"
                },
                "examples": {
                  "normalResponse": {
                    "description": "Success",
                    "summary": "Example of a typical object listing response (version 1).",
                    "value": "<ListBucketResult xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">\n  <Name>apiary</Name>\n  <Prefix/>\n  <ContinuationToken>1dPe45g5uuxjyASPegLq80sQsZKL5OB2by4Iz_7YGR5NjiOENBPZXqvKJN6_PgKGVzZYTlws7qqdWaMklzb8HX2iDxxl72ane3rUFQrvNMeIih49MZ4APUjrAuYI83KxSMmfKHGZyKallFkD5N6PwKg</ContinuationToken>\n  <NextContinuationToken>1a8j20CqowRrM4epIQ7fTBuyPZWZUeA8Epog16wYu9KhAPNoYkWQYhGURsIQbll1lP7c-OO-V5Vyzu6mogiakC4NSwlK4LyRDdHQgY-yPH4wMB76MfQR61VyxI4TJLxIWTPSZA0nmQQWcuV2mE4jiDA</NextContinuationToken>\n  <KeyCount>1</KeyCount>\n  <MaxKeys>1</MaxKeys>\n  <Delimiter/>\n  <IsTruncated>true</IsTruncated>\n  <Contents>\n    <Key>soldier-bee</Key>\n    <LastModified>2016-08-25T17:49:06.006Z</LastModified>\n    <ETag>\"37d4c94839ee181a2224d6242176c4b5\"</ETag>\n    <Size>11</Size>\n    <StorageClass>STANDARD</StorageClass>\n  </Contents>\n</ListBucketResult>\n"
                  }
                }
              }
            }
          },
          "404": {
            "description": "NoSuchBucket",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/NoSuchBucket"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "Bucket name to list.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "delimiter",
            "in": "query",
            "required": false,
            "description": "A delimiter is a character you use to group keys.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "encoding-type",
            "in": "query",
            "required": false,
            "description": "Encoding type used by IBM COS to encode object keys in the response.",
            "schema": {
              "type": "string",
              "enum": [
                "url"
              ],
              "description": "Requests IBM COS to encode the object keys in the response and specifies the encoding method to use. An object key may contain any Unicode character; however, XML 1.0 parser cannot parse some characters, such as characters with an ASCII value from 0 to 10. For characters that are not supported in XML 1.0, you can add this parameter to request that IBM COS encode the keys in the response."
            }
          },
          {
            "name": "max-keys",
            "in": "query",
            "required": false,
            "description": "Sets the maximum number of keys returned in the response. By default the API returns up to 1,000 key names. The response might contain fewer keys but will never contain more.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "prefix",
            "in": "query",
            "required": false,
            "description": "Limits the response to keys that begin with the specified prefix.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "continuation-token",
            "in": "query",
            "required": false,
            "description": "`ContinuationToken` indicates IBM COS that the list is being continued on this bucket with a token. ContinuationToken is obfuscated and is not a real key.\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fetch-owner",
            "in": "query",
            "required": false,
            "description": "The owner field (Service Instance ID) is not present in listV2 by default, if you want to return the Service Instance ID with each key in the result, then set the fetch owner field to true.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "start-after",
            "in": "query",
            "required": false,
            "description": "`StartAfter` is where you want IBM COS to start listing from. IBM COS starts listing after this specified key. `StartAfter` can be any key in the bucket.\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "list-type",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2"
              ]
            }
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.get"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket.list"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "List objects in a bucket (v2)",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"GET\" \"https://s3.$REGION.cloud-object-storage.appdomain.cloud/$BUCKET?list-type=2\" \\\n     -H \"Authorization: Bearer $IAM_TOKEN\" \\\n"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "List objects in a bucket (v2)",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "List objects in a bucket (v2)",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      "def get_bucket_contents_v2(bucket_name, max_keys):\n    print(\"Retrieving bucket contents from: {0}\".format(bucket_name))\n    try:\n        # create client object\n        cos_cli = ibm_boto3.client(\"s3\",\n            ibm_api_key_id=COS_API_KEY_ID,\n            ibm_service_instance_id=COS_SERVICE_CRN,\n            config=Config(signature_version=\"oauth\"),\n            endpoint_url=COS_ENDPOINT)\n\n        more_results = True\n        next_token = \"\"\n\n        while (more_results):\n            response = cos_cli.list_objects_v2(Bucket=bucket_name, MaxKeys=max_keys, ContinuationToken=next_token)\n            files = response[\"Contents\"]\n            for file in files:\n                print(\"Item: {0} ({1} bytes).\".format(file[\"Key\"], file[\"Size\"]))\n\n            if (response[\"IsTruncated\"]):\n                next_token = response[\"NextContinuationToken\"]\n                print(\"...More results in next batch!\\n\")\n            else:\n                more_results = False\n                next_token = \"\"\n\n    except ClientError as be:\n        print(\"CLIENT ERROR: {0}\\n\".format(be))\n    except Exception as e:\n        print(\"Unable to retrieve bucket contents: {0}\".format(e))"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "List objects in a bucket (v2)",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      "var params = {\n  Bucket: 'STRING_VALUE', /* required */\n  ContinuationToken: 'STRING_VALUE',\n  Delimiter: 'STRING_VALUE',\n  EncodingType: url,\n  FetchOwner: true || false,\n  MaxKeys: 'NUMBER_VALUE',\n  Prefix: 'STRING_VALUE',\n  StartAfter: 'STRING_VALUE'\n};\ns3.listObjectsV2(params, function(err, data) {\n  if (err) console.log(err, err.stack); // an error occurred\n  else     console.log(data);           // successful response\n});"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "List objects in a bucket (v2)",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      "func main() {\n\n    // Create client\n    sess := session.Must(session.NewSession())\n    client := s3.New(sess, conf)\n\n    // Bucket Name\n    Bucket := \"<BUCKET_NAME>\"\n\n    // Call Function\n    Input := &s3.ListObjectsV2Input{\n            Bucket: aws.String(Bucket),\n        }\n\n    l, e := client.ListObjectsV2(Input)\n    fmt.Println(l)\n    fmt.Println(e) // prints \"<nil>\"\n}"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}?list-object=versions": {
      "get": {
        "tags": [
          "Basic operations"
        ],
        "operationId": "ListObjectVersions",
        "summary": "List object versions",
        "description": "Returns some or all (up to 1,000) of the objects in a bucket. You can use the request parameters as selection criteria to return a subset of the objects in a bucket. A `200 OK` response can contain valid or invalid XML. Make sure to design your application to parse the contents of the response and handle it appropriately.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ListVersionsResult"
                },
                "examples": {
                  "normalResponse": {
                    "description": "Success",
                    "summary": "Example of a typical object listing response (version 1).",
                    "value": "<ListBucketResult xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">\n  <Name>apiary</Name>\n  <Prefix/>\n  <ContinuationToken>1dPe45g5uuxjyASPegLq80sQsZKL5OB2by4Iz_7YGR5NjiOENBPZXqvKJN6_PgKGVzZYTlws7qqdWaMklzb8HX2iDxxl72ane3rUFQrvNMeIih49MZ4APUjrAuYI83KxSMmfKHGZyKallFkD5N6PwKg</ContinuationToken>\n  <NextContinuationToken>1a8j20CqowRrM4epIQ7fTBuyPZWZUeA8Epog16wYu9KhAPNoYkWQYhGURsIQbll1lP7c-OO-V5Vyzu6mogiakC4NSwlK4LyRDdHQgY-yPH4wMB76MfQR61VyxI4TJLxIWTPSZA0nmQQWcuV2mE4jiDA</NextContinuationToken>\n  <KeyCount>1</KeyCount>\n  <MaxKeys>1</MaxKeys>\n  <Delimiter/>\n  <IsTruncated>true</IsTruncated>\n  <Contents>\n    <Key>soldier-bee</Key>\n    <LastModified>2016-08-25T17:49:06.006Z</LastModified>\n    <ETag>\"37d4c94839ee181a2224d6242176c4b5\"</ETag>\n    <Size>11</Size>\n    <StorageClass>STANDARD</StorageClass>\n  </Contents>\n</ListBucketResult>\n"
                  }
                }
              }
            }
          },
          "404": {
            "description": "NoSuchBucket",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/NoSuchBucket"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "Bucket name to list.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "delimiter",
            "in": "query",
            "required": false,
            "description": "A delimiter is a character you use to group keys.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "encoding-type",
            "in": "query",
            "required": false,
            "description": "Encoding type used by IBM COS to encode object keys in the response.",
            "schema": {
              "type": "string",
              "enum": [
                "url"
              ],
              "description": "Requests IBM COS to encode the object keys in the response and specifies the encoding method to use. An object key may contain any Unicode character; however, XML 1.0 parser cannot parse some characters, such as characters with an ASCII value from 0 to 10. For characters that are not supported in XML 1.0, you can add this parameter to request that IBM COS encode the keys in the response."
            }
          },
          {
            "name": "key-marker",
            "in": "query",
            "required": false,
            "description": "Key marker specifies the starting object for listing.",
            "schema": {
              "type": "string",
              "enum": [
                "url"
              ],
              "description": "Requests IBM COS to encode the object keys in the response and specifies the encoding method to use. An object key may contain any Unicod"
            }
          },
          {
            "name": "max-keys",
            "in": "query",
            "required": false,
            "description": "Sets the maximum number of keys returned in the response. By default the API returns up to 1,000 key names. The response might contain fewer keys but will never contain more.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "prefix",
            "in": "query",
            "required": false,
            "description": "Limits the response to keys that begin with the specified prefix.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "version-id-marker",
            "in": "query",
            "required": false,
            "description": "Version ID marker specifies the starting object version for listing.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "list-type",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2"
              ]
            }
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.get.versions"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket.list.versions"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "List object versions",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"GET\" \"https://s3.$REGION.cloud-object-storage.appdomain.cloud/$BUCKET?list-type=2\" \\\n     -H \"Authorization: Bearer $IAM_TOKEN\" \\\n"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "List object versions",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "List object versions",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      "def get_bucket_contents_v2(bucket_name, max_keys):\n    print(\"Retrieving bucket contents from: {0}\".format(bucket_name))\n    try:\n        # create client object\n        cos_cli = ibm_boto3.client(\"s3\",\n            ibm_api_key_id=COS_API_KEY_ID,\n            ibm_service_instance_id=COS_SERVICE_CRN,\n            config=Config(signature_version=\"oauth\"),\n            endpoint_url=COS_ENDPOINT)\n\n        more_results = True\n        next_token = \"\"\n\n        while (more_results):\n            response = cos_cli.list_objects_v2(Bucket=bucket_name, MaxKeys=max_keys, ContinuationToken=next_token)\n            files = response[\"Contents\"]\n            for file in files:\n                print(\"Item: {0} ({1} bytes).\".format(file[\"Key\"], file[\"Size\"]))\n\n            if (response[\"IsTruncated\"]):\n                next_token = response[\"NextContinuationToken\"]\n                print(\"...More results in next batch!\\n\")\n            else:\n                more_results = False\n                next_token = \"\"\n\n    except ClientError as be:\n        print(\"CLIENT ERROR: {0}\\n\".format(be))\n    except Exception as e:\n        print(\"Unable to retrieve bucket contents: {0}\".format(e))"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "List object versions",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      "var params = {\n  Bucket: 'STRING_VALUE', /* required */\n  ContinuationToken: 'STRING_VALUE',\n  Delimiter: 'STRING_VALUE',\n  EncodingType: url,\n  FetchOwner: true || false,\n  MaxKeys: 'NUMBER_VALUE',\n  Prefix: 'STRING_VALUE',\n  StartAfter: 'STRING_VALUE'\n};\ns3.listObjectsV2(params, function(err, data) {\n  if (err) console.log(err, err.stack); // an error occurred\n  else     console.log(data);           // successful response\n});"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "List object versions",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      "func main() {\n\n    // Create client\n    sess := session.Must(session.NewSession())\n    client := s3.New(sess, conf)\n\n    // Bucket Name\n    Bucket := \"<BUCKET_NAME>\"\n\n    // Call Function\n    Input := &s3.ListObjectsV2Input{\n            Bucket: aws.String(Bucket),\n        }\n\n    l, e := client.ListObjectsV2(Input)\n    fmt.Println(l)\n    fmt.Println(e) // prints \"<nil>\"\n}"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}/{Key}": {
      "put": {
        "tags": [
          "Basic operations"
        ],
        "operationId": "PutObject",
        "summary": "Create (upload) an object",
        "description": "Adds an object to a bucket using a single request. IBM COS never adds partial objects; if you receive a success response, IBM COS added the entire object to the bucket. IBM COS is a distributed system. If it receives multiple write requests for the same object simultaneously, it overwrites all but the last object written.\n\nAll objects written to IBM COS are encrypted by default using SecureSlice.  If you require possession of encryption keys, you can use Key Protect or SSE-C.\n\nTo ensure that data is not corrupted traversing the network, use the `Content-MD5` header. When you use this header, IBM COS checks the object against the provided MD5 value and, if they do not match, returns an error. Additionally, you can calculate the MD5 while putting an object to IBM COS and compare the returned ETag to the calculated MD5 value. The `Content-MD5` header is required for any request to upload an object with a retention period configured using Immutable Object Storage.\n\nLarger objects (greater than 100 MiB) may benefit from breaking the object into multiple parts and uploading the parts in parallel.  For more information, see the **Multipart uploads** methods.\n",
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Clv-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "The UUID of the request."
              },
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "MD5 hash of the object used for integrity checks and conditional requests."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "x-amz-acl",
            "deprecated": true,
            "in": "header",
            "required": false,
            "description": "The canned ACL to apply to the object.",
            "schema": {
              "type": "string",
              "enum": [
                "private",
                "public-read"
              ]
            }
          },
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket that will hold the object.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "description": "Upload the object only if its entity tag (ETag) is the same as the one specified, otherwise return a 412 (precondition failed).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "Upload the object only if its entity tag (ETag) is different from the one specified, otherwise return a 412 (precondition failed).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-Unmodified-Since",
            "in": "header",
            "required": false,
            "description": "Upload the object only if it has not been modified since the specified time, otherwise return a 412 (precondition failed).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Cache-Control",
            "in": "header",
            "required": false,
            "description": "Can be used to specify caching behavior along the request/reply chain. For more information, see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Disposition",
            "in": "header",
            "required": false,
            "description": "Specifies presentational information for the object. For more information, see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Encoding",
            "in": "header",
            "required": false,
            "description": "Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. For more information, see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Language",
            "in": "header",
            "required": false,
            "description": "The language the content is in.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Length",
            "in": "header",
            "required": false,
            "description": "Size of the body in bytes. This parameter is useful when the size of the body cannot be determined automatically. For more information, see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "Content-MD5",
            "in": "header",
            "required": false,
            "description": "The base64-encoded 128-bit MD5 digest of the payload (just the request body without the headers) according to [RFC 1864](http://www.ietf.org/rfc/rfc1864.txt). This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, it is recommended to use the Content-MD5 mechanism as an end-to-end integrity check.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": false,
            "description": "A standard MIME type describing the format of the contents. For more information, see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Expires",
            "in": "header",
            "required": false,
            "description": "The date and time at which the object is no longer cacheable. For more information, [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Object key for which the PUT operation was initiated.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "x-amz-server-side-encryption",
            "in": "header",
            "required": false,
            "description": "The server-side encryption algorithm used when storing this object in IBM COS (`AES256`).",
            "schema": {
              "type": "string",
              "enum": [
                "AES256"
              ]
            }
          },
          {
            "name": "x-amz-website-redirect-location",
            "in": "header",
            "required": false,
            "description": "If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-algorithm",
            "in": "header",
            "required": false,
            "description": "Specifies the algorithm to use to when encrypting the object (for example, `AES256`).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key",
            "in": "header",
            "required": false,
            "description": "Specifies the customer-provided encryption key for IBM COS to use in encrypting data. This value is used to store the object and then it is discarded; IBM COS does not store the encryption key. The key must be appropriate for use with the algorithm specified in the `x-amz-server-side-encryption-customer-algorithm` header.",
            "schema": {
              "type": "string",
              "format": "password"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key-MD5",
            "in": "header",
            "required": false,
            "description": "Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. IBM COS uses this header for a message integrity check to ensure that the encryption key was transmitted without error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-tagging",
            "in": "header",
            "required": false,
            "description": "A set of tags for the object. The tags must be encoded as URL duery parameters (For example, `SomeKey=SomeValue`).",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "properties": {
                  "Body": {
                    "description": "Object data.",
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.put"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object.write"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Write an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"PUT\" \"https://(endpoint)/(bucket-name)/(object-key)\" \\\n -H \"Authorization: bearer (token)\" \\\n -H \"Content-Type: (content-type)\" \\\n -d \"(object-contents)\"\n"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Write an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      "cos.putObject(\n    \"sample\", // the name of the destination bucket\n    \"myfile\", // the object key\n    new File(\"/home/user/test.txt\") // the file name and path of the object to be uploaded\n);"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Write an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      "cos.Object(bucket_name, item_name).put(Body=filelike_object)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Write an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      "function createTextFile(bucketName, itemName, fileText) {\n    console.log(`Creating new item: ${itemName}`);\n    return cos.putObject({\n        Bucket: bucketName,\n        Key: itemName,\n        Body: fileText\n    }).promise()\n    .then(() => {\n        console.log(`Item: ${itemName} created!`);\n    })\n    .catch((e) => {\n        console.error(`ERROR: ${e.code} - ${e.message}\\n`);\n    });\n}"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Write an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      "func main() {\n\n    // Create client\n    sess := session.Must(session.NewSession())\n    client := s3.New(sess, conf)\n\n    // Variables and random content to sample, replace when appropriate\n    bucketName := \"<BUCKET_NAME>\"\n    key := \"<OBJECT_KEY>\"\n    content := bytes.NewReader([]byte(\"<CONTENT>\"))\n\n    input := s3.PutObjectInput{\n        Bucket:        aws.String(bucketName),\n        Key:           aws.String(key),\n        Body:          content,\n    }\n\n    // Call Function to upload (Put) an object\n    result, _ := client.PutObject(&input)\n    fmt.Println(result)\n}"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "tags": [
          "Basic operations"
        ],
        "operationId": "GetObject",
        "summary": "Read (download) an object",
        "description": "Retrieves objects from IBM COS. If the object you are retrieving has been archived, before you can retrieve the object you must first restore a copy. Otherwise, this operation returns an `InvalidObjectStateError` error. If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in IBM COS, then when you GET the object, you must use the following headers:\n* `x-amz-server-side-encryption-customer-algorithm`\n* `x-amz-server-side-encryption-customer-key`\n* `x-amz-server-side-encryption-customer-key-MD5`\n",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/GetObjectOutput"
                }
              }
            }
          },
          "404": {
            "description": "NoSuchKey",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/NoSuchKey"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket containing the object.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "description": "Returns the object only if its entity tag (ETag) is the same as the one specified, otherwise returns a 412 (precondition failed).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-Modified-Since",
            "in": "header",
            "required": false,
            "description": "Returns the object only if it has been modified since the specified time, otherwise returns a 304 (not modified).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "Returns the object only if its entity tag (ETag) is different from the one specified, otherwise returns a 304 (not modified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-Unmodified-Since",
            "in": "header",
            "required": false,
            "description": "Returns the object only if it has not been modified since the specified time, otherwise return a 412 (precondition failed).'",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Key of the object to get.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "Range",
            "in": "header",
            "required": false,
            "description": "Downloads the specified range bytes of an object. For more information about the HTTP Range header, see [RFC 2516](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "response-cache-control",
            "in": "query",
            "required": false,
            "description": "Sets the `Cache-Control` header of the response.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "response-content-disposition",
            "in": "query",
            "required": false,
            "description": "Sets the `Content-Disposition` header of the response",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "response-content-encoding",
            "in": "query",
            "required": false,
            "description": "Sets the `Content-Encoding` header of the response.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "response-content-language",
            "in": "query",
            "required": false,
            "description": "Sets the `Content-Language` header of the response.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "response-content-type",
            "in": "query",
            "required": false,
            "description": "Sets the `Content-Type` header of the response.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "response-expires",
            "in": "query",
            "required": false,
            "description": "Sets the `Expires` header of the response.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-algorithm",
            "in": "header",
            "required": false,
            "description": "Specifies the algorithm to use to when encrypting the object (for example, AES256).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key",
            "in": "header",
            "required": false,
            "description": "Specifies the customer-provided encryption key for IBM COS to use in encrypting data. This value is used to store the object and then it is discarded; IBM COS does not store the encryption key. The key must be appropriate for use with the algorithm specified in the `x-amz-server-side-encryption-customer-algorithm` header.",
            "schema": {
              "type": "string",
              "format": "password"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key-MD5",
            "in": "header",
            "required": false,
            "description": "Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. IBM COS uses this header for a message integrity check to ensure that the encryption key was transmitted without error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "partNumber",
            "in": "query",
            "required": false,
            "description": "Part number of the object being read. This is a positive integer between 1 and 10,000. Effectively performs a \"ranged\" GET request for the part specified. Useful for downloading just a part of an object.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.get"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object.read"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Read an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Read an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Read an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Read an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Read an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "head": {
        "tags": [
          "Basic operations"
        ],
        "operationId": "HeadObject",
        "summary": "Read object metadata",
        "description": "The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you're only interested in an object's metadata or it's existence.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/HeadObjectOutput"
                }
              }
            }
          },
          "404": {
            "description": "NoSuchKey",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/NoSuchKey"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket containing the object.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "description": "Return the object only if its entity tag (ETag) is the same as the one specified, otherwise return a 412 (precondition failed).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-Modified-Since",
            "in": "header",
            "required": false,
            "description": "Return the object only if it has been modified since the specified time, otherwise return a 304 (not modified).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "Return the object only if its entity tag (ETag) is different from the one specified, otherwise return a 304 (not modified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-Unmodified-Since",
            "in": "header",
            "required": false,
            "description": "Return the object only if it has not been modified since the specified time, otherwise return a 412 (precondition failed).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "The object key.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "Range",
            "in": "header",
            "required": false,
            "description": "Downloads the specified range bytes of an object. For more information about the HTTP Range header, see [RFC 2516](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-algorithm",
            "in": "header",
            "required": false,
            "description": "Specifies the algorithm to use to when encrypting the object (for example, AES256).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key",
            "in": "header",
            "required": false,
            "description": "Specifies the customer-provided encryption key for IBM COS to use in encrypting data. This value is used to store the object and then it is discarded; IBM COS does not store the encryption key. The key must be appropriate for use with the algorithm specified in the `x-amz-server-side-encryption-customer-algorithm` header.",
            "schema": {
              "type": "string",
              "format": "password"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key-MD5",
            "in": "header",
            "required": false,
            "description": "Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. IBM COS uses this header for a message integrity check to ensure that the encryption key was transmitted without error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "partNumber",
            "in": "query",
            "required": false,
            "description": "Part number of the object being read. This is a positive integer between 1 and 10,000. Effectively performs a \"ranged\" HEAD request for the part specified. Useful querying about the size of the part and the number of parts in this object.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.head"
            },
            {
              "name": "cloud-object-storage.bucket.list_crk_id"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-metadata.read"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Get an object's headers",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Get an object's headers",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Get an object's headers",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Get an object's headers",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Get an object's headers",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "delete": {
        "tags": [
          "Basic operations"
        ],
        "operationId": "DeleteObject",
        "summary": "Delete an object",
        "description": "Permantently deletes an object. This operation is final - there is no way to recover a deleted object. Data stored in IBM COS is erasure coded and distributed to multiple individual storage devices in multiple data centers. When data is deleted, various mechanisms exist which prevent recovery or reconstruction of the deleted objects.\n\nDeletion of an object undergoes various stages. First, the metadata is marked to indicate the object is deleted, then, the data is removed. Eventually, deleted metadata is overwritten by a process of compaction and the deleted data blocks are overwritten with new data in the course of normal operations. As soon as the metadata is marked deleted, it is not possible to read an object remotely. IBM's provider-managed encryption and erasure coding prevents data (both before and after deletion) from being accessible from within individual data centers.\n",
        "responses": {
          "204": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteObjectOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket containing the object.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Key name of the object to delete.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.delete"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object.delete"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Delete an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Delete an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Delete an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Delete an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Delete an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}/{TargetKey}": {
      "put": {
        "tags": [
          "Basic operations"
        ],
        "operationId": "CopyObject",
        "summary": "Copy an object",
        "description": "Copies an object.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CopyObjectOutput"
                }
              }
            }
          },
          "404": {
            "description": "ObjectNotInActiveTierError",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ObjectNotInActiveTierError"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "x-amz-acl",
            "in": "header",
            "deprecated": true,
            "required": false,
            "description": "The canned ACL to apply to the object.",
            "schema": {
              "type": "string",
              "enum": [
                "private",
                "public-read"
              ]
            }
          },
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the destination bucket.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Cache-Control",
            "in": "header",
            "required": false,
            "description": "Specifies caching behavior along the request/reply chain.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Disposition",
            "in": "header",
            "required": false,
            "description": "Specifies presentational information for the object.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Encoding",
            "in": "header",
            "required": false,
            "description": "Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. For more information, see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Language",
            "in": "header",
            "required": false,
            "description": "The language the content is in.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": false,
            "description": "A standard MIME type describing the format of the contents. For more information, see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-copy-source",
            "in": "header",
            "required": true,
            "description": "Specifies the source object for the copy operation.",
            "schema": {
              "type": "string",
              "pattern": "\\/.+\\/.+"
            }
          },
          {
            "name": "x-amz-copy-source-if-match",
            "in": "header",
            "required": false,
            "description": "Copies the object if its entity tag (ETag) matches the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-copy-source-if-modified-since",
            "in": "header",
            "required": false,
            "description": "Copies the object if it has been modified since the specified time.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "x-amz-copy-source-if-none-match",
            "in": "header",
            "required": false,
            "description": "Copies the object if its entity tag (ETag) is different than the specified ETag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-copy-source-if-unmodified-since",
            "in": "header",
            "required": false,
            "description": "Copies the object if it hasn't been modified since the specified time.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Expires",
            "in": "header",
            "required": false,
            "description": "The date and time at which the object is no longer cacheable. For more information, [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "TargetKey",
            "in": "path",
            "required": true,
            "description": "The key of the destination object.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "x-amz-metadata-directive",
            "in": "header",
            "required": false,
            "description": "Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request.",
            "schema": {
              "type": "string",
              "enum": [
                "COPY",
                "REPLACE"
              ]
            }
          },
          {
            "name": "x-amz-tagging-directive",
            "in": "header",
            "required": false,
            "description": "Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request.",
            "schema": {
              "type": "string",
              "enum": [
                "COPY",
                "REPLACE"
              ]
            }
          },
          {
            "name": "x-amz-server-side-encryption",
            "in": "header",
            "required": false,
            "description": "The server-side encryption algorithm used when storing this object.",
            "schema": {
              "type": "string",
              "enum": [
                "AES256"
              ]
            }
          },
          {
            "name": "x-amz-website-redirect-location",
            "in": "header",
            "required": false,
            "description": "If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-algorithm",
            "in": "header",
            "required": false,
            "description": "Specifies the algorithm to use to when encrypting the object (for example, AES256).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key",
            "in": "header",
            "required": false,
            "description": "Specifies the customer-provided encryption key for use in encrypting data.",
            "schema": {
              "type": "string",
              "format": "password"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key-MD5",
            "in": "header",
            "required": false,
            "description": "Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Used as a message integrity check to ensure that the encryption key was transmitted without error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-copy-source-server-side-encryption-customer-algorithm",
            "in": "header",
            "required": false,
            "description": "Specifies the algorithm to use when decrypting the source object (for example, AES256).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-copy-source-server-side-encryption-customer-key",
            "in": "header",
            "required": false,
            "description": "Specifies the customer-provided encryption key for IBM COS to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created.",
            "schema": {
              "type": "string",
              "format": "password"
            }
          },
          {
            "name": "x-amz-copy-source-server-side-encryption-customer-key-MD5",
            "in": "header",
            "required": false,
            "description": "Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Used as a message integrity check to ensure that the encryption key was transmitted without error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-tagging",
            "in": "header",
            "required": false,
            "description": "The tag-set for the object destination object this value must be used in conjunction with the `TaggingDirective`. The tag-set must be encoded as URL Query parameters.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "properties": {
                  "x-amz-meta-": {
                    "description": "A map of metadata to store with the object.",
                    "type": "object",
                    "additionalProperties": {
                      "$ref": "#/components/schemas/MetadataValue"
                    }
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.copy"
            },
            {
              "name": "cloud-object-storage.object.copy_get"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-copy.read"
            },
            {
              "name": "cloud-object-storage.object-copy.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Copy an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Copy an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Copy an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Copy an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Copy an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}/{Key}?uploads": {
      "post": {
        "tags": [
          "Multipart uploads"
        ],
        "operationId": "InitiateMultipartUpload",
        "summary": "Initiate a multipart upload",
        "description": "This operation initiates a multipart upload and returns an upload ID. This upload ID is used to associate all of the parts in the specific multipart upload. You specify this upload ID in each of your subsequent upload part requests. You also include this upload ID in the final request to either complete or abort the multipart upload request.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CreateMultipartUploadOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket to which to initiate the upload.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "uploads",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "description": "Upload the object only if its entity tag (ETag) is the same as the one specified, otherwise return a 412 (precondition failed).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "Upload the object only if its entity tag (ETag) is different from the one specified, otherwise return a 412 (precondition failed).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-Unmodified-Since",
            "in": "header",
            "required": false,
            "description": "Upload the object only if it has not been modified since the specified time, otherwise return a 412 (precondition failed).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Cache-Control",
            "in": "header",
            "required": false,
            "description": "Specifies caching behavior along the request/reply chain.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Disposition",
            "in": "header",
            "required": false,
            "description": "Specifies presentational information for the object.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Encoding",
            "in": "header",
            "required": false,
            "description": "Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. For more information, see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Language",
            "in": "header",
            "required": false,
            "description": "The language the content is in.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": false,
            "description": "A standard MIME type describing the format of the contents. For more information, see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Expires",
            "in": "header",
            "required": false,
            "description": "The date and time at which the object is no longer cacheable. For more information, [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Object key for which the multipart upload is to be initiated.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "x-amz-server-side-encryption",
            "in": "header",
            "required": false,
            "description": "The server-side encryption algorithm used when storing this object (for example, AES256).",
            "schema": {
              "type": "string",
              "enum": [
                "AES256"
              ]
            }
          },
          {
            "name": "x-amz-website-redirect-location",
            "in": "header",
            "required": false,
            "description": "If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-algorithm",
            "in": "header",
            "required": false,
            "description": "Specifies the algorithm to use to when encrypting the object (for example, AES256).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key",
            "in": "header",
            "required": false,
            "description": "Specifies the customer-provided encryption key for encrypting data. IBM COS does not store the encryption key - it is discarded use. The key must be appropriate for use with the algorithm specified in the `x-amz-server-side-encryption-customer-algorithm` header.",
            "schema": {
              "type": "string",
              "format": "password"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key-MD5",
            "in": "header",
            "required": false,
            "description": "Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321, ensuring the encryption key is transmitted without error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-tagging",
            "in": "header",
            "required": false,
            "description": "A set of key-value pairs, encoded as URL query parameters.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-acl",
            "in": "header",
            "deprecated": true,
            "required": false,
            "description": "The canned ACL to apply to the object.",
            "schema": {
              "type": "string",
              "enum": [
                "private",
                "public-read"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "properties": {
                  "x-amz-meta-": {
                    "description": "A map of metadata to store with the object in S3.",
                    "type": "object",
                    "additionalProperties": {
                      "$ref": "#/components/schemas/MetadataValue"
                    }
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.post_initiate_upload"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-multipart.start"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Initiate a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Initiate a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Initiate a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Initiate a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Initiate a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}/{Key}?uploadId={uploadId}": {
      "post": {
        "tags": [
          "Multipart uploads"
        ],
        "operationId": "CompleteMultipartUpload",
        "summary": "Complete a multipart upload",
        "description": "Completes a multipart upload by assembling previously uploaded parts.\n\nAfter successfully uploading all parts of an upload, you call this operation to complete the upload. Upon receiving this request, IBM COS concatenates all the parts in ascending order by part number to create a new object. In the Complete Multipart Upload request, you must provide the parts list. You must ensure that the parts list is complete. This operation concatenates the parts that you provide in the list. For each part in the list, you must provide the part number and the `ETag` value, returned after that part was uploaded.\n",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CompleteMultipartUploadOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "Name of the bucket to which the multipart upload was initiated.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Object key for which the multipart upload was initiated.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "uploadId",
            "in": "query",
            "required": true,
            "description": "ID for the initiated multipart upload.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "properties": {
                  "CompleteMultipartUpload": {
                    "description": "The container for the completed multipart upload details.",
                    "type": "object",
                    "properties": {
                      "Parts": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/CompletedPartList"
                          },
                          {
                            "xml": {
                              "name": "Part"
                            },
                            "description": "Array of CompletedPart data types."
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.post_complete_upload"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-multipart.complete"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Complete a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Complete a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Complete a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Complete a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Complete a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "tags": [
          "Multipart uploads"
        ],
        "operationId": "ListParts",
        "summary": "List parts of a multipart upload",
        "description": "Lists the parts that have been uploaded for a specific multipart upload. This operation must include the upload ID, which you obtain by sending the initiate multipart upload request. This request by default returns a maximum of 1,000 uploaded parts. You can restrict the number of parts returned by specifying the `max-parts` request parameter. If your multipart upload consists of more than 1,000 parts, the response returns an `IsTruncated` field with the value of true, and a `NextPartNumberMarker` element. In subsequent `ListParts` requests you can include the `part-number-marker` query string parameter and set its value to the `NextPartNumberMarker` field value from the previous response.\n",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ListPartsOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket where the parts have been uploaded.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Object key for which the multipart upload was initiated.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "max-parts",
            "in": "query",
            "required": false,
            "description": "Sets the maximum number of parts to return.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "part-number-marker",
            "in": "query",
            "required": false,
            "description": "Specifies the part after which listing should begin. Only parts with higher part numbers will be listed.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "uploadId",
            "in": "query",
            "required": true,
            "description": "Upload ID identifying the multipart upload whose parts are being listed.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.get_uploads"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-multipart.list"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "List parts of a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "List parts of a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "List parts of a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "List parts of a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "List parts of a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "delete": {
        "tags": [
          "Multipart uploads"
        ],
        "operationId": "AbortMultipartUpload",
        "summary": "Abort a multipart upload",
        "description": "Stops a current multipart upload and removes any parts of an incomplete upload, which would otherwise incur storage costs.\n",
        "responses": {
          "204": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/AbortMultipartUploadOutput"
                }
              }
            }
          },
          "404": {
            "description": "NoSuchUpload",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/NoSuchUpload"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The destination bucket for the upload.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Key of the object for which the multipart upload was initiated.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "uploadId",
            "in": "query",
            "required": true,
            "description": "Upload ID that identifies the multipart upload.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.delete_upload"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-multipart.delete"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Abort a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Abort a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Abort a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Abort a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Abort a multipart upload",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}?lifecycle": {
      "put": {
        "tags": [
          "Lifecycle configuration"
        ],
        "operationId": "PutBucketLifecycleConfiguration",
        "summary": "Create a lifecycle configuration",
        "description": "Creates a new lifecycle configuration for the bucket or replaces an existing lifecycle configuration. You specify the lifecycle configuration in your request body. The lifecycle configuration is specified as XML consisting of one or more rules. Each rule consists of the following:\n\n* Filter identifying a subset of objects to which the rule applies. The filter can be based on a key name prefix, object tags, or a combination of both.\n* Status whether the rule is in effect.\n* One or more lifecycle transition and expiration actions that you want IBM COS to perform on the objects identified by the filter. Note that there can only be one `Transistion` rule, and filters are not supported for `Transition` rules.\n",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket for which to set the configuration.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lifecycle",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "properties": {
                  "LifecycleConfiguration": {
                    "description": "Specifies the lifecycle configuration for objects in a bucket.",
                    "type": "object",
                    "properties": {
                      "Rules": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/LifecycleRules"
                          },
                          {
                            "xml": {
                              "name": "Rule"
                            },
                            "description": "A lifecycle rule for individual objects in a bucket."
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.put_lifecycle"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-lifecycle.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Create a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Create a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Create a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Create a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Create a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "tags": [
          "Lifecycle configuration"
        ],
        "operationId": "GetBucketLifecycleConfiguration",
        "summary": "Read a lifecycle configuration",
        "description": "Returns the lifecycle configuration information set on the bucket.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/GetBucketLifecycleConfigurationOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket for which to get the lifecycle information.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lifecycle",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.get_lifecycle"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-lifecycle.read"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Read a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Read a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Read a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Read a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Read a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "delete": {
        "tags": [
          "Lifecycle configuration"
        ],
        "operationId": "DeleteBucketLifecycle",
        "summary": "Delete a lifecycle configuration",
        "description": "Deletes the lifecycle configuration from the specified bucket. IBM COS removes all the lifecycle configuration rules in the lifecycle subresource associated with the bucket. Your objects never expire, and IBM COS no longer automatically deletes any objects on the basis of rules contained in the deleted lifecycle configuration. There is usually some time lag before lifecycle configuration deletion is fully propagated across the IBM COS system.",
        "responses": {
          "204": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket name of the lifecycle to delete.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lifecycle",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.put_lifecycle"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-lifecycle.delete"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Delete a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Delete a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Delete a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Delete a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Delete a lifecycle configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}?replication": {
      "put": {
        "tags": [
          "Bucket replication operations"
        ],
        "operationId": "PutBucketReplication",
        "summary": "Configure a bucket for replication",
        "description": "The replication configuration is provided as XML in the body of the request.\n\nA replication configuration must include at least one rule, and can contain a maximum of 1,000. Each rule identifies a subset of objects to replicate by filtering the objects in the source bucket. To choose additional subsets of objects to replicate, add a rule for each subset.\n\nTo specify a subset of the objects in the source bucket to apply a replication rule to, add the `Filter` element as a child of the `Rule` element. You can filter objects based on an object key prefix, one or more object tags, or both. When you add the `Filter` element in the configuration, you must also add the following elements: `DeleteMarkerReplication`, `Status`, and `Priority`.\n",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket for which to set the configuration.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "replication",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "properties": {
                  "ReplicationConfiguration": {
                    "description": "Specifies the replication configuration for objects in a bucket.",
                    "type": "object",
                    "properties": {
                      "Rules": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/ReplicationRules"
                          },
                          {
                            "xml": {
                              "name": "Rule"
                            },
                            "description": "A replication rule for individual objects in a bucket."
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.put_replication"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-replication.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Create a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"PUT\" \"https://$BUCKET.s3.$REGION.cloud-object-storage.appdomain.cloud/?replication\" \\\n     -H 'Authorization: bearer $TOKEN' \\\n     -H 'Content-MD5: exuBoz2kFBykNwqu64JZuA==' \\\n     -H 'Content-Type: text/plain; charset=utf-8' \\\n     -d $'<ReplicationConfiguration xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">\n            <Rule>\n              <ID>SimpleReplication</ID>\n              <Priority>1</Priority>\n              <Status>Enabled</Status>\n              <DeleteMarkerReplication>\n                <Status>Disabled</Status>\n              </DeleteMarkerReplication>\n              <Filter/>\n              <Destination>\n                <Bucket>$DESTINATION_CRN</Bucket>\n              </Destination>\n          \t</Rule>\n          </ReplicationConfiguration>'\n"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Create a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      "package com.ibm.cloud.objectstorage.examples;\n\nimport com.ibm.cloud.objectstorage.ClientConfiguration;\nimport com.ibm.cloud.objectstorage.auth.AWSCredentials;\nimport com.ibm.cloud.objectstorage.auth.AWSStaticCredentialsProvider;\nimport com.ibm.cloud.objectstorage.client.builder.AwsClientBuilder.EndpointConfiguration;\nimport com.ibm.cloud.objectstorage.oauth.BasicIBMOAuthCredentials;\nimport com.ibm.cloud.objectstorage.services.s3.AmazonS3;\nimport com.ibm.cloud.objectstorage.services.s3.AmazonS3ClientBuilder;\nimport com.ibm.cloud.objectstorage.services.s3.model.*;\n\npublic class PutBucketReplication {\n\n    private static AmazonS3 cosClient;\n\n    public static void main(String[] args) {\n        String apiKey = \"<API_KEY>\";\n        String serviceInstanceId = \"<SERVICE_INSTANCE_ID>\";\n        String endpoint = \"<ENDPOINT>\";\n        String location = \"us-standard\";\n        String bucketName = \"my-replication-bucket\";\n\n        cosClient = createClient(apiKey, serviceInstanceId, endpoint, location);\n        putBucketReplication(bucketName);\n    }\n\n    public static AmazonS3 createClient(String apiKey, String serviceInstanceId,\n                                        String endpoint, String location) {\n        AWSCredentials credentials = new BasicIBMOAuthCredentials(apiKey, serviceInstanceId);\n        ClientConfiguration clientConfig = new ClientConfiguration()\n            .withRequestTimeout(5000);\n        clientConfig.setUseTcpKeepAlive(true);\n\n        return AmazonS3ClientBuilder\n            .standard()\n            .withCredentials(new AWSStaticCredentialsProvider(credentials))\n            .withEndpointConfiguration(new EndpointConfiguration(endpoint, location))\n            .withPathStyleAccessEnabled(true)\n            .withClientConfiguration(clientConfig)\n            .build();\n    }\n\n    public static void putBucketReplication(String bucketName) {\n        try {\n            ReplicationRule rule = new ReplicationRule()\n                .withId(\"replication-rule-1\")\n                .withPriority(123)\n                .withStatus(ReplicationRuleStatus.Enabled)\n                .withFilter(new ReplicationRuleFilter()\n                    .withPrefix(\"documents/\")\n                    .withTag(new Tag(\"replicate\", \"true\")))\n                .withDestinationConfig(new ReplicationDestinationConfig()\n                    .withBucketARN(\"arn:aws:s3:::destination-bucket\"))\n                .withDeleteMarkerReplication(new DeleteMarkerReplication()\n                    .withStatus(DeleteMarkerReplicationStatus.Enabled));\n\n            BucketReplicationConfiguration replicationConfig =\n                new BucketReplicationConfiguration()\n                    .withRules(rule);\n\n            SetBucketReplicationConfigurationRequest request =\n                new SetBucketReplicationConfigurationRequest(bucketName, replicationConfig);\n\n            cosClient.setBucketReplicationConfiguration(request);\n\n            System.out.println(\"Replication enabled successfully for bucket: \" + bucketName);\n\n        } catch (Exception e) {\n            System.err.println(\"Error enabling replication: \" + e.getMessage());\n            e.printStackTrace();\n        }\n    }\n}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Create a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      "#!/usr/bin/env python3\n\nimport os\nimport ibm_boto3\nfrom ibm_botocore.config import Config\nfrom ibm_botocore.exceptions import ClientError\n\nAPI_KEY = os.environ.get('IBMCLOUD_API_KEY')\nSERVICE_INSTANCE = os.environ.get('SERVICE_INSTANCE_ID')\nENDPOINT = os.environ.get('ENDPOINT')\n\nBUCKET = \"my-replication-bucket\"\n\ncosClient = ibm_boto3.client(\"s3\",\n                         ibm_api_key_id=API_KEY,\n                         ibm_service_instance_id=SERVICE_INSTANCE,\n                         config=Config(signature_version=\"oauth\"),\n                         endpoint_url=ENDPOINT\n                         )\n\nresponse = cosClient.put_bucket_replication(\n    Bucket=BUCKET,\n    ReplicationConfiguration={\n        'Rules': [\n            {\n                'ID': 'string',\n                'Priority': 123,\n                'Filter': {\n                    'Prefix': 'string',\n                    'Tag': {\n                        'Key': 'string',\n                        'Value': 'string'\n                    },\n                    'And': {\n                        'Prefix': 'string',\n                        'Tags': [\n                            {\n                                'Key': 'string',\n                                'Value': 'string'\n                            },\n                        ]\n                    }\n                },\n                'Status': 'Enabled',\n                'Destination': {\n                    'Bucket': 'string',\n                },\n                'DeleteMarkerReplication': {\n                    'Status': 'Enabled'\n                }\n            },\n        ]\n    }\n)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Create a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      "const IBM = require('ibm-cos-sdk');\n\nvar config = {\n    endpoint: '<endpoint>',\n    apiKeyId: '<api-key>',\n    serviceInstanceId: '<resource-instance-id>',\n};\n\nvar cos = new IBM.S3(config);\n\nvar params = {\n  Bucket: 'STRING_VALUE',\n  ReplicationConfiguration: {\n    Role: 'STRING_VALUE',\n    Rules: [\n      {\n        Destination: {\n          Bucket: 'STRING_VALUE',\n        },\n        Status: 'Enabled',\n        Filter: {\n          And: {\n            Prefix: 'STRING_VALUE',\n            Tags: [\n              {\n                Key: 'STRING_VALUE',\n                Value: 'STRING_VALUE'\n              },\n            ]\n          },\n          Prefix: 'STRING_VALUE',\n          Tag: {\n            Key: 'STRING_VALUE',\n            Value: 'STRING_VALUE'\n          }\n        },\n        ID: 'STRING_VALUE',\n        Prefix: 'STRING_VALUE',\n        Priority: 123,\n        DeleteMarkerReplication: {\n          Status: 'Enabled'\n        }\n      }\n    ]\n  },\n  ContentMD5: 'STRING_VALUE',\n};\n\ncos.putBucketReplication(params, function(err, data) {\n  if (err) console.log(err, err.stack);\n  else     console.log(data);\n});"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Create a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      "package main\n\nimport (\n    \"fmt\"\n    \"os\"\n\n    \"github.com/IBM/ibm-cos-sdk-go/aws\"\n    \"github.com/IBM/ibm-cos-sdk-go/aws/credentials/ibmiam\"\n    \"github.com/IBM/ibm-cos-sdk-go/aws/session\"\n    \"github.com/IBM/ibm-cos-sdk-go/service/s3\"\n)\n\nconst (\n    apiKey            = \"<API_KEY>\"\n    serviceInstanceID = \"<RESOURCE_INSTANCE_ID>\"\n    authEndpoint      = \"https://iam.cloud.ibm.com/identity/token\"\n    serviceEndpoint   = \"<ENDPOINT>\"\n    bucketName        = \"my-replication-bucket\"\n)\n\nfunc main() {\n    conf := aws.NewConfig().\n        WithEndpoint(serviceEndpoint).\n        WithCredentials(ibmiam.NewStaticCredentials(aws.NewConfig(),\n            authEndpoint, apiKey, serviceInstanceID)).\n        WithS3ForcePathStyle(true)\n\n    sess := session.Must(session.NewSession())\n    client := s3.New(sess, conf)\n\n    input := &s3.PutBucketReplicationInput{\n        Bucket: aws.String(bucketName),\n        ReplicationConfiguration: &s3.ReplicationConfiguration{\n            Role: aws.String(\"STRING_VALUE\"),\n            Rules: []*s3.ReplicationRule{\n                {\n                    ID:       aws.String(\"replication-rule-1\"),\n                    Priority: aws.Int64(123),\n                    Status:   aws.String(\"Enabled\"),\n                    Filter: &s3.ReplicationRuleFilter{\n                        Prefix: aws.String(\"documents/\"),\n                        Tag: &s3.Tag{\n                            Key:   aws.String(\"replicate\"),\n                            Value: aws.String(\"true\"),\n                        },\n                    },\n                    Destination: &s3.Destination{\n                        Bucket: aws.String(\"arn:aws:s3:::destination-bucket\"),\n                    },\n                    DeleteMarkerReplication: &s3.DeleteMarkerReplication{\n                        Status: aws.String(\"Enabled\"),\n                    },\n                },\n            },\n        },\n    }\n\n    result, err := client.PutBucketReplication(input)\n    if err != nil {\n        fmt.Printf(\"Error enabling replication: %v\\n\", err)\n        return\n    }\n\n    fmt.Printf(\"Replication enabled successfully: %+v\\n\", result)\n}"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "tags": [
          "Bucket replication operations"
        ],
        "operationId": "GetBucketReplicationConfiguration",
        "summary": "Read a replication configuration",
        "description": "Returns the replication configuration information set on the bucket.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/GetBucketReplicationConfigurationOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket for which to get the replication information.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "replication",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.get_replication"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-replication.read"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Read a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Read a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Read a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Read a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Read a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "delete": {
        "tags": [
          "Bucket replication operations"
        ],
        "operationId": "DeleteBucketReplication",
        "summary": "Delete a replication configuration",
        "description": "Deletes the replication configuration from the specified bucket. IBM COS removes all the lifecycle configuration rules in the lifecycle subresource associated with the bucket. Your objects never expire, and IBM COS no longer automatically deletes any objects on the basis of rules contained in the deleted replication configuration. There is usually some time lag before replication configuration deletion is fully propagated across the IBM COS system.",
        "responses": {
          "204": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket name of the replication to delete.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "replication",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.put_replication"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-replication.delete"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Delete a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Delete a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Delete a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Delete a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Delete a replication configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}?ibm-replication-failures": {
      "get": {
        "tags": [
          "Bucket replication operations"
        ],
        "operationId": "ListBucketReplicationFailures",
        "summary": "List replication failures in a bucket",
        "description": "Returns some or all (up to 1,000) of the replication failures in a source bucket. You can use the request parameters as selection criteria to return a subset of the failures and use continuation token for paging when the result is truncated.\n",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "type": "object",
                  "xml": {
                    "name": "ListReplicationFailureResult",
                    "namespace": "http://s3.amazonaws.com/doc/2006-03-01/"
                  },
                  "properties": {
                    "Name": {
                      "type": "string",
                      "description": "The name of the source bucket"
                    },
                    "FirstSyncAttemptedBefore": {
                      "type": "string",
                      "format": "date-time",
                      "description": "The timestamp filter used in the request"
                    },
                    "MaxKeys": {
                      "type": "integer",
                      "format": "int32",
                      "description": "Maximum number of failures to return"
                    },
                    "IsTruncated": {
                      "type": "boolean",
                      "description": "Indicates whether the list is truncated"
                    },
                    "EncodingType": {
                      "type": "string",
                      "description": "Encoding type used for object keys"
                    },
                    "KeyCount": {
                      "type": "integer",
                      "format": "int32",
                      "description": "Number of failures returned in this response"
                    },
                    "ContinuationToken": {
                      "type": "string",
                      "description": "Token used for this request"
                    },
                    "NextContinuationToken": {
                      "type": "string",
                      "description": "Token to use for the next page of results"
                    },
                    "Contents": {
                      "type": "array",
                      "maxItems": 1000,
                      "items": {
                        "type": "object",
                        "xml": {
                          "name": "Contents"
                        },
                        "properties": {
                          "Key": {
                            "type": "string",
                            "description": "Object key that failed replication"
                          },
                          "VersionId": {
                            "type": "string",
                            "description": "Version ID of the object"
                          },
                          "SyncType": {
                            "type": "string",
                            "description": "Type of synchronization (e.g., Content, Metadata)"
                          },
                          "FirstSyncAttempted": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Timestamp when replication was first attempted"
                          },
                          "LastSyncAttempted": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Timestamp when replication was last attempted"
                          },
                          "SyncFailureCause": {
                            "type": "string",
                            "description": "Reason for the replication failure"
                          }
                        }
                      }
                    }
                  }
                },
                "example": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<ListReplicationFailureResult xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">\n    <Name>example</Name>\n    <FirstSyncAttemptedBefore>2025-12-15T00:00:00.000Z</FirstSyncAttemptedBefore>\n    <MaxKeys>10</MaxKeys>\n    <IsTruncated>false</IsTruncated>\n    <EncodingType>false</EncodingType>\n    <KeyCount>2</KeyCount>\n    <Contents>\n        <Key>test-obj+*1765434016787</Key>\n        <VersionId>00000000-0000-0000-0000-019b0c114413</VersionId>\n        <SyncType>Content</SyncType>\n        <FirstSyncAttempted>2025-12-11T06:20:16.787Z</FirstSyncAttempted>\n        <LastSyncAttempted>2025-12-11T06:20:16.787Z</LastSyncAttempted>\n        <SyncFailureCause>Versioning disabled on destination bucket</SyncFailureCause>\n    </Contents>\n    <Contents>\n        <Key>test-obj+*1765434016786</Key>\n        <VersionId>00000000-0000-0000-0000-019b0c114412</VersionId>\n        <SyncType>Content</SyncType>\n        <FirstSyncAttempted>2025-12-11T06:20:16.786Z</FirstSyncAttempted>\n        <LastSyncAttempted>2025-12-11T06:20:16.786Z</LastSyncAttempted>\n        <SyncFailureCause>Replication operation not authorized on target bucket</SyncFailureCause>\n    </Contents>\n</ListReplicationFailureResult>\n"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the source bucket for which to list replication failures.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ibm-replication-failures",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          },
          {
            "name": "encoding-type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          },
          {
            "name": "continuation-token",
            "in": "query",
            "required": false,
            "description": "Specifies the failure at which the listing should begin, in reverse chronological order. This is used for pagination purposes if there are more entries present after the entries returned in the last listing request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-keys",
            "in": "query",
            "required": false,
            "description": "Restricts the number of failures to display in the response. Default and maximum is 1,000.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "first-sync-attempted-before",
            "in": "query",
            "required": false,
            "description": "Specifies the timestamp at which the listing should begin, in reverse chronological order. The time corresponds to when the replication was originally triggered (<FirstSyncAttempted> field in the entry). Thus, the listing will contain any replication failures that are at least as old as the specified timestamp.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.get_replication_failures"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-replication-failures.list"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "List replication failures in a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"GET\" \"https://$BUCKET.s3.$REGION.cloud-object-storage.appdomain.cloud/?ibm-replication-failures\" \\\n     -H 'Authorization: bearer $TOKEN'\n"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "List replication failures in a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      "package com.ibm.cloud.objectstorage.examples;\n\nimport com.ibm.cloud.objectstorage.ClientConfiguration;\nimport com.ibm.cloud.objectstorage.auth.AWSCredentials;\nimport com.ibm.cloud.objectstorage.auth.AWSStaticCredentialsProvider;\nimport com.ibm.cloud.objectstorage.client.builder.AwsClientBuilder.EndpointConfiguration;\nimport com.ibm.cloud.objectstorage.oauth.BasicIBMOAuthCredentials;\nimport com.ibm.cloud.objectstorage.services.s3.AmazonS3;\nimport com.ibm.cloud.objectstorage.services.s3.AmazonS3ClientBuilder;\nimport com.ibm.cloud.objectstorage.services.s3.model.*;\n\npublic class ListBucketReplicationFailures {\n\n    private static AmazonS3 cosClient;\n\n    public static void main(String[] args) {\n        String apiKey = System.getenv(\"IBMCLOUD_API_KEY\");\n        String serviceInstanceId = System.getenv(\"SERVICE_INSTANCE_ID\");\n        String endpoint = System.getenv(\"ENDPOINT\");\n        String location = \"us-standard\";\n        String bucketName = \"my-replication-bucket\";\n\n        cosClient = createClient(apiKey, serviceInstanceId, endpoint, location);\n        listBucketReplicationFailures(bucketName);\n    }\n\n    public static AmazonS3 createClient(String apiKey, String serviceInstanceId,\n                                        String endpoint, String location) {\n        AWSCredentials credentials = new BasicIBMOAuthCredentials(apiKey, serviceInstanceId);\n        ClientConfiguration clientConfig = new ClientConfiguration()\n            .withRequestTimeout(5000);\n        clientConfig.setUseTcpKeepAlive(true);\n\n        return AmazonS3ClientBuilder\n            .standard()\n            .withCredentials(new AWSStaticCredentialsProvider(credentials))\n            .withEndpointConfiguration(new EndpointConfiguration(endpoint, location))\n            .withPathStyleAccessEnabled(true)\n            .withClientConfiguration(clientConfig)\n            .build();\n    }\n\n    public static void listBucketReplicationFailures(String bucketName) {\n        try {\n            System.out.println(\"Listing replication failures for bucket: \" + bucketName);\n\n            ListBucketReplicationFailuresRequest request =\n                new ListBucketReplicationFailuresRequest(bucketName);\n\n            ListBucketReplicationFailuresResult result =\n                cosClient.listBucketReplicationFailures(request);\n\n            System.out.println(\"Replication Failures:\");\n\n            if (result.getReplicationFailures() != null && !result.getReplicationFailures().isEmpty()) {\n                for (ReplicationFailure failure : result.getReplicationFailures()) {\n                    System.out.println(\"  Key: \" + failure.getKey());\n                    System.out.println(\"  VersionId: \" + failure.getVersionId());\n                    System.out.println(\"  FirstSyncAttempted: \" + failure.getFirstSyncAttempted());\n                    System.out.println(\"  LastSyncAttempted: \" + failure.getLastSyncAttempted());\n                    System.out.println(\"  FailureReason: \" + failure.getFailureReason());\n                    System.out.println(\"  ---\");\n                }\n            } else {\n                System.out.println(\"  No replication failures found.\");\n            }\n\n            if (result.isTruncated()) {\n                System.out.println(\"More results available. Use ContinuationToken: \" +\n                    result.getNextContinuationToken());\n            }\n\n        } catch (Exception e) {\n            System.err.println(\"Error listing replication failures: \" + e.getMessage());\n            e.printStackTrace();\n        }\n    }\n}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "List replication failures in a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      "#!/usr/bin/env python3\n\nimport os\nimport ibm_boto3\nfrom ibm_botocore.config import Config\n\nAPI_KEY = os.environ.get('IBMCLOUD_API_KEY')\nSERVICE_INSTANCE_ID = os.environ.get('SERVICE_INSTANCE_ID')\nENDPOINT = os.environ.get('ENDPOINT')\n\nBUCKET = \"my-replication-bucket\"\n\ncos = ibm_boto3.resource(\"s3\",\n    ibm_api_key_id=API_KEY,\n    ibm_service_instance_id=SERVICE_INSTANCE_ID,\n    config=Config(signature_version=\"oauth\"),\n    endpoint_url=ENDPOINT\n)\n\ndef list_bucket_replication_failures(bucket_name):\n    try:\n        response = cos.meta.client.list_bucket_replication_failures(\n            Bucket=bucket_name\n        )\n\n        print(\"Replication Failures:\")\n        if 'ListReplicationFailureResult' in response:\n            failures = response['ListReplicationFailureResult']\n            if 'ReplicationFailure' in failures:\n                for failure in failures['ReplicationFailure']:\n                    print(f\"  Key: {failure.get('Key')}\")\n                    print(f\"  VersionId: {failure.get('VersionId')}\")\n                    print(f\"  FirstSyncAttempted: {failure.get('FirstSyncAttempted')}\")\n                    print(f\"  LastSyncAttempted: {failure.get('LastSyncAttempted')}\")\n                    print(f\"  FailureReason: {failure.get('FailureReason')}\")\n                    print(\"  ---\")\n            else:\n                print(\"  No replication failures found.\")\n\n        if response.get('IsTruncated'):\n            print(f\"More results available. Use ContinuationToken: {response.get('NextContinuationToken')}\")\n\n    except Exception as e:\n        print(f\"Error listing replication failures: {e}\")\n\nlist_bucket_replication_failures(BUCKET)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "List replication failures in a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      "const IBM = require('ibm-cos-sdk');\n\nconst API_KEY = process.env.IBMCLOUD_API_KEY;\nconst SERVICE_INSTANCE_ID = process.env.SERVICE_INSTANCE_ID;\nconst ENDPOINT = process.env.ENDPOINT;\n\nconst BUCKET = 'my-replication-bucket';\n\nconst config = {\n    endpoint: ENDPOINT,\n    apiKeyId: API_KEY,\n    serviceInstanceId: SERVICE_INSTANCE_ID,\n};\n\nconst cos = new IBM.S3(config);\n\nfunction listBucketReplicationFailures(bucketName) {\n    console.log(`Listing replication failures for bucket: ${bucketName}`);\n\n    return cos.listBucketReplicationFailures({\n        Bucket: bucketName\n    }).promise()\n    .then((data) => {\n        console.log('Replication Failures:');\n\n        if (data.ListReplicationFailureResult && data.ListReplicationFailureResult.ReplicationFailure) {\n            data.ListReplicationFailureResult.ReplicationFailure.forEach((failure) => {\n                console.log(`  Key: ${failure.Key}`);\n                console.log(`  VersionId: ${failure.VersionId}`);\n                console.log(`  FirstSyncAttempted: ${failure.FirstSyncAttempted}`);\n                console.log(`  LastSyncAttempted: ${failure.LastSyncAttempted}`);\n                console.log(`  FailureReason: ${failure.FailureReason}`);\n                console.log('  ---');\n            });\n        } else {\n            console.log('  No replication failures found.');\n        }\n\n        if (data.IsTruncated) {\n            console.log(`More results available. Use ContinuationToken: ${data.NextContinuationToken}`);\n        }\n    })\n    .catch((err) => {\n        console.error(`Error listing replication failures: ${err.message}`);\n    });\n}\n\nlistBucketReplicationFailures(BUCKET);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "List replication failures in a bucket",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      "package main\n\nimport (\n    \"fmt\"\n    \"os\"\n\n    \"github.com/IBM/ibm-cos-sdk-go/aws\"\n    \"github.com/IBM/ibm-cos-sdk-go/aws/credentials/ibmiam\"\n    \"github.com/IBM/ibm-cos-sdk-go/aws/session\"\n    \"github.com/IBM/ibm-cos-sdk-go/service/s3\"\n)\n\nconst (\n    bucketName = \"my-replication-bucket\"\n)\n\nfunc main() {\n    apiKey := os.Getenv(\"IBMCLOUD_API_KEY\")\n    serviceInstanceID := os.Getenv(\"SERVICE_INSTANCE_ID\")\n    authEndpoint := \"https://iam.cloud.ibm.com/identity/token\"\n    serviceEndpoint := os.Getenv(\"ENDPOINT\")\n\n    conf := aws.NewConfig().\n        WithEndpoint(serviceEndpoint).\n        WithCredentials(ibmiam.NewStaticCredentials(aws.NewConfig(),\n            authEndpoint, apiKey, serviceInstanceID)).\n        WithS3ForcePathStyle(true)\n\n    sess := session.Must(session.NewSession())\n    client := s3.New(sess, conf)\n\n    listBucketReplicationFailures(client, bucketName)\n}\n\nfunc listBucketReplicationFailures(client *s3.S3, bucketName string) {\n    fmt.Printf(\"Listing replication failures for bucket: %s\\n\", bucketName)\n\n    input := &s3.ListBucketReplicationFailuresInput{\n        Bucket: aws.String(bucketName),\n    }\n\n    result, err := client.ListBucketReplicationFailures(input)\n    if err != nil {\n        fmt.Printf(\"Error listing replication failures: %v\\n\", err)\n        return\n    }\n\n    fmt.Println(\"Replication Failures:\")\n    if result.ListReplicationFailureResult != nil && result.ListReplicationFailureResult.ReplicationFailure != nil {\n        for _, failure := range result.ListReplicationFailureResult.ReplicationFailure {\n            fmt.Printf(\"  Key: %s\\n\", aws.StringValue(failure.Key))\n            fmt.Printf(\"  VersionId: %s\\n\", aws.StringValue(failure.VersionId))\n            fmt.Printf(\"  FirstSyncAttempted: %s\\n\", aws.TimeValue(failure.FirstSyncAttempted))\n            fmt.Printf(\"  LastSyncAttempted: %s\\n\", aws.TimeValue(failure.LastSyncAttempted))\n            fmt.Printf(\"  FailureReason: %s\\n\", aws.StringValue(failure.FailureReason))\n            fmt.Println(\"  ---\")\n        }\n    } else {\n        fmt.Println(\"  No replication failures found.\")\n    }\n\n    if aws.BoolValue(result.IsTruncated) {\n        fmt.Printf(\"More results available. Use ContinuationToken: %s\\n\", aws.StringValue(result.NextContinuationToken))\n    }\n}\n     -H \"Authorization: Bearer $IAM_TOKEN\""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}?ibm-replication-reattempt": {
      "put": {
        "tags": [
          "Bucket replication operations"
        ],
        "operationId": "ScheduleBucketReplicationFailureReattempt",
        "summary": "Schedule replication failure reattempt",
        "description": "This schedules a re-attempt of all replication failures, including any stale failures that are older than 30 days and no longer eligible for automatic retries by the system. Long-term replication failures are processed in 24 hour cycles.\n\nIssuing this request schedules reattempts for the stale failures in the cycle starting at the next midnight GMT. For example, if a request is issued at `2026-01-01T01:00:00Z`, the earliest time at which these failures get processed is `2026-01-02T00:00:00Z`. On successful request, this timestamp is also provided in the response header `x-ibm-replication-reattempt-scheduled-time`. Multiple requests arriving on the same day in GMT (that is, resulting in the same scheduled time) are idempotent.\n\nEach stale failure is re-attempted once on a best-effort basis. They are executed, but no guarantees are made on their timing.\n",
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-ibm-replication-reattempt-scheduled-time": {
                "description": "The earliest time at which stale replication failures are scheduled to be processed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the source bucket for which to schedule replication failure reattempts.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ibm-replication-reattempt",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.put_replication_reattempt"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-replication-failures.update"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Schedule replication failure reattempt",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      "curl -X \"PUT\" \"https://$BUCKET.s3.$REGION.cloud-object-storage.appdomain.cloud/?ibm-replication-reattempt\" \\\n     -H 'Authorization: bearer $TOKEN'\n"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Schedule replication failure reattempt",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      "package com.ibm.cloud.objectstorage.examples;\n\nimport com.ibm.cloud.objectstorage.ClientConfiguration;\nimport com.ibm.cloud.objectstorage.auth.AWSCredentials;\nimport com.ibm.cloud.objectstorage.auth.AWSStaticCredentialsProvider;\nimport com.ibm.cloud.objectstorage.client.builder.AwsClientBuilder.EndpointConfiguration;\nimport com.ibm.cloud.objectstorage.oauth.BasicIBMOAuthCredentials;\nimport com.ibm.cloud.objectstorage.services.s3.AmazonS3;\nimport com.ibm.cloud.objectstorage.services.s3.AmazonS3ClientBuilder;\nimport com.ibm.cloud.objectstorage.services.s3.model.*;\n\npublic class BucketReplicationReattempt {\n\n    private static AmazonS3 cosClient;\n\n    public static void main(String[] args) {\n        String apiKey = System.getenv(\"IBMCLOUD_API_KEY\");\n        String serviceInstanceId = System.getenv(\"SERVICE_INSTANCE_ID\");\n        String endpoint = System.getenv(\"ENDPOINT\");\n        String location = \"us-standard\";\n        String bucketName = \"my-replication-bucket\";\n\n        cosClient = createClient(apiKey, serviceInstanceId, endpoint, location);\n        reattemptReplication(bucketName);\n    }\n\n    public static AmazonS3 createClient(String apiKey, String serviceInstanceId,\n                                        String endpoint, String location) {\n        AWSCredentials credentials = new BasicIBMOAuthCredentials(apiKey, serviceInstanceId);\n        ClientConfiguration clientConfig = new ClientConfiguration()\n            .withRequestTimeout(5000);\n        clientConfig.setUseTcpKeepAlive(true);\n\n        return AmazonS3ClientBuilder\n            .standard()\n            .withCredentials(new AWSStaticCredentialsProvider(credentials))\n            .withEndpointConfiguration(new EndpointConfiguration(endpoint, location))\n            .withPathStyleAccessEnabled(true)\n            .withClientConfiguration(clientConfig)\n            .build();\n    }\n\n    public static void reattemptReplication(String bucketName) {\n        try {\n            System.out.println(\"Scheduling replication reattempt for bucket: \" + bucketName);\n\n            PutBucketReplicationReattemptRequest request =\n                new PutBucketReplicationReattemptRequest(bucketName);\n\n            PutBucketReplicationReattemptResult result =\n                cosClient.putBucketReplicationReattempt(request);\n\n            System.out.println(\"Replication reattempt scheduled successfully for bucket: \" + bucketName);\n            System.out.println(\"Response: \" + result);\n\n        } catch (Exception e) {\n            System.err.println(\"Error scheduling replication reattempt: \" + e.getMessage());\n            e.printStackTrace();\n        }\n    }\n}"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Schedule replication failure reattempt",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      "#!/usr/bin/env python3\n\nimport os\nimport ibm_boto3\nfrom ibm_botocore.config import Config\n\nAPI_KEY = os.environ.get('IBMCLOUD_API_KEY')\nSERVICE_INSTANCE_ID = os.environ.get('SERVICE_INSTANCE_ID')\nENDPOINT = os.environ.get('ENDPOINT')\n\nBUCKET = \"my-replication-bucket\"\n\ncos = ibm_boto3.resource(\"s3\",\n    ibm_api_key_id=API_KEY,\n    ibm_service_instance_id=SERVICE_INSTANCE_ID,\n    config=Config(signature_version=\"oauth\"),\n    endpoint_url=ENDPOINT\n)\n\ndef reattempt_replication(bucket_name):\n    try:\n        response = cos.meta.client.put_bucket_replication_reattempt(\n            Bucket=bucket_name\n        )\n\n        print(f\"Replication reattempt scheduled successfully for bucket: {bucket_name}\")\n        print(f\"Response: {response}\")\n\n    except Exception as e:\n        print(f\"Error scheduling replication reattempt: {e}\")\n\nreattempt_replication(BUCKET)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Schedule replication failure reattempt",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      "const IBM = require('ibm-cos-sdk');\n\nconst API_KEY = process.env.IBMCLOUD_API_KEY;\nconst SERVICE_INSTANCE_ID = process.env.SERVICE_INSTANCE_ID;\nconst ENDPOINT = process.env.ENDPOINT;\n\nconst BUCKET = 'my-replication-bucket';\n\nconst config = {\n    endpoint: ENDPOINT,\n    apiKeyId: API_KEY,\n    serviceInstanceId: SERVICE_INSTANCE_ID,\n};\n\nconst cos = new IBM.S3(config);\n\nfunction reattemptReplication(bucketName) {\n    console.log(`Scheduling replication reattempt for bucket: ${bucketName}`);\n\n    return cos.putBucketReplicationReattempt({\n        Bucket: bucketName\n    }).promise()\n    .then((data) => {\n        console.log(`Replication reattempt scheduled successfully for bucket: ${bucketName}`);\n        console.log('Response:', data);\n    })\n    .catch((err) => {\n        console.error(`Error scheduling replication reattempt: ${err.message}`);\n    });\n}\n\nreattemptReplication(BUCKET);"
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Schedule replication failure reattempt",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      "package main\n\nimport (\n    \"fmt\"\n    \"os\"\n\n    \"github.com/IBM/ibm-cos-sdk-go/aws\"\n    \"github.com/IBM/ibm-cos-sdk-go/aws/credentials/ibmiam\"\n    \"github.com/IBM/ibm-cos-sdk-go/aws/session\"\n    \"github.com/IBM/ibm-cos-sdk-go/service/s3\"\n)\n\nconst (\n    bucketName = \"my-replication-bucket\"\n)\n\nfunc main() {\n    apiKey := os.Getenv(\"IBMCLOUD_API_KEY\")\n    serviceInstanceID := os.Getenv(\"SERVICE_INSTANCE_ID\")\n    authEndpoint := \"https://iam.cloud.ibm.com/identity/token\"\n    serviceEndpoint := os.Getenv(\"ENDPOINT\")\n\n    conf := aws.NewConfig().\n        WithEndpoint(serviceEndpoint).\n        WithCredentials(ibmiam.NewStaticCredentials(aws.NewConfig(),\n            authEndpoint, apiKey, serviceInstanceID)).\n        WithS3ForcePathStyle(true)\n\n    sess := session.Must(session.NewSession())\n    client := s3.New(sess, conf)\n\n    reattemptReplication(client, bucketName)\n}\n\nfunc reattemptReplication(client *s3.S3, bucketName string) {\n    fmt.Printf(\"Scheduling replication reattempt for bucket: %s\\n\", bucketName)\n\n    input := &s3.PutBucketReplicationReattemptInput{\n        Bucket: aws.String(bucketName),\n    }\n\n    result, err := client.PutBucketReplicationReattempt(input)\n    if err != nil {\n        fmt.Printf(\"Error scheduling replication reattempt: %v\\n\", err)\n        return\n    }\n\n    fmt.Printf(\"Replication reattempt scheduled successfully for bucket: %s\\n\", bucketName)\n    fmt.Printf(\"Response: %+v\\n\", result)\n}\n     -H \"Authorization: Bearer $IAM_TOKEN\""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}/{Key}?restore": {
      "post": {
        "tags": [
          "Lifecycle configuration"
        ],
        "operationId": "RestoreObject",
        "summary": "Temporarily restore an archived object",
        "description": "Restores an archived copy of an object back into IBM COS. To access an archived object, you must first initiate a restore request. This restores a temporary copy of the archived object. In a restore request, you specify the number of days that you want the restored copy to exist. After the specified period, IBM COS deletes the temporary copy but the object remains archived.\n",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/RestoreObjectOutput"
                }
              }
            }
          },
          "404": {
            "description": "ObjectAlreadyInActiveTierError",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ObjectAlreadyInActiveTierError"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket name or containing the object to restore.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Object key for which the operation was initiated.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "restore",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            },
            "allowEmptyValue": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "properties": {
                  "RestoreRequest": {
                    "description": "Container for restore job parameters.",
                    "type": "object",
                    "properties": {
                      "Days": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Days"
                          },
                          {
                            "description": "Lifetime of the active copy in days."
                          }
                        ]
                      },
                      "Type": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/RestoreRequestType"
                          },
                          {
                            "description": "Type of restore request."
                          }
                        ]
                      },
                      "Tier": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Tier"
                          },
                          {
                            "description": "S3 Glacier retrieval tier at which the restore will be processed."
                          }
                        ]
                      },
                      "Description": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Description"
                          },
                          {
                            "description": "The optional description for the job."
                          }
                        ]
                      },
                      "OutputLocation": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/OutputLocation"
                          },
                          {
                            "description": "Describes the location where the restore job's output is stored."
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.restore"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-restore.read"
            },
            {
              "name": "cloud-object-storage.object-restore.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Temporarily restore an archived object",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Temporarily restore an archived object",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Temporarily restore an archived object",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Temporarily restore an archived object",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Temporarily restore an archived object",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}?protection": {
      "put": {
        "tags": [
          "Immutable object storage"
        ],
        "operationId": "PutBucketProtectionConfiguration",
        "summary": "Create a protection configuration",
        "description": "Creates a new protection configuration (this term is interchangeable with \"retention policy\") for the bucket or replaces an existing protection configuration. You specify the protection configuration in your request body. The protection configuration is specified as XML.\n",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket for which to set the configuration.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "protection",
            "in": "query",
            "required": true,
            "allowEmptyValue": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "$ref": "#/components/schemas/Protection"
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.put_protection"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-retention.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Create a protection configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Create a protection configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Create a protection configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Create a protection configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Create a protection configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}?website": {
      "put": {
        "tags": [
          "Websites and CORS"
        ],
        "operationId": "PutBucketWebsite",
        "summary": "Create a website configuration",
        "description": "Sets the configuration of the website that is specified in the `website` subresource. To configure a bucket as a website, you can add this subresource on the bucket with website configuration information such as the file name of the index document and any redirect rules.\n",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket that will serve a static website.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-MD5",
            "in": "header",
            "required": false,
            "description": "The base64-encoded 128-bit MD5 digest of the payload (just the request body without the headers) according to [RFC 1864](http://www.ietf.org/rfc/rfc1864.txt). This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, it is recommended to use the Content-MD5 mechanism as an end-to-end integrity check.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "website",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "required": [
                  "WebsiteConfiguration"
                ],
                "properties": {
                  "WebsiteConfiguration": {
                    "description": "Specifies website configuration parameters for an IBM COS bucket.",
                    "type": "object",
                    "properties": {
                      "ErrorDocument": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/ErrorDocument"
                          },
                          {
                            "description": "The name of the error document for the website."
                          }
                        ]
                      },
                      "IndexDocument": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/IndexDocument"
                          },
                          {
                            "description": "The name of the index document for the website."
                          }
                        ]
                      },
                      "RedirectAllRequestsTo": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/RedirectAllRequestsTo"
                          },
                          {
                            "description": "The redirect behavior for every request to this bucket's website endpoint. If you specify this property, you can't specify any other property."
                          }
                        ]
                      },
                      "RoutingRules": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/RoutingRules"
                          },
                          {
                            "description": "Rules that define when a redirect is applied and the redirect behavior."
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.put_website"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-website.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Create a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Create a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Create a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Create a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Create a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "tags": [
          "Websites and CORS"
        ],
        "operationId": "GetBucketWebsite",
        "summary": "Read a website configuration",
        "description": "Returns the website configuration for a bucket.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/GetBucketWebsiteOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket name for which to get the website configuration.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "website",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.get_website"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-website.read"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Read a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Read a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Read a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Read a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Read a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "delete": {
        "tags": [
          "Websites and CORS"
        ],
        "operationId": "DeleteBucketWebsite",
        "summary": "Delete a website configuration",
        "description": "This operation removes the website configuration for a bucket. IBM COS returns a `200 OK` response upon successfully deleting a website configuration on the specified bucket. You will get a `200 OK` response if the website configuration you are trying to delete does not exist on the bucket. IBM COS returns a `404` response if the bucket specified in the request does not exist.",
        "responses": {
          "204": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket for which you want to remove the website configuration.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "website",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.delete_website"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-website.delete"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Delete a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Delete a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Delete a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Delete a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Delete a website configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}?cors": {
      "put": {
        "tags": [
          "Websites and CORS"
        ],
        "operationId": "PutBucketCors",
        "summary": "Configure CORS",
        "description": "Sets the CORS configuration for your bucket. If the configuration exists, it will be overwritten and replaced.\n\nYou set this configuration on a bucket so that the bucket can service cross-origin requests. For example, you might want to enable a request whose origin is `http://www.example.com` to access your bucket at `my.example.bucket.com` by using `XMLHttpRequest` in a browser.\n\nTo enable cross-origin resource sharing (CORS) on a bucket, you create a XML configuration in which you configure rules that identify origins and the HTTP methods that can be executed on your bucket. The document is limited to 64 KB in size. When IBM COS receives a cross-origin request (or a pre-flight OPTIONS request) against a bucket, it evaluates the CORS configuration on the bucket and uses the first `CORSRule` rule that matches the incoming browser request to enable a cross-origin request. For a rule to match, the following conditions must be met:\n\n* The request's `Origin` header must match `AllowedOrigin` elements.\n* The request method (for example, GET, PUT, HEAD, and so on) or the `Access-Control-Request-Method` header in case of a pre-flight `OPTIONS` request must be one of the `AllowedMethod` elements.\n* Every header specified in the `Access-Control-Request-Headers` request header of a pre-flight request must match an `AllowedHeader` element.\n",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "Specifies the bucket impacted by the CORS configuration.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-MD5",
            "in": "header",
            "required": false,
            "description": "The base64-encoded 128-bit MD5 digest of the payload (just the request body without the headers) according to [RFC 1864](http://www.ietf.org/rfc/rfc1864.txt). This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, it is recommended to use the Content-MD5 mechanism as an end-to-end integrity check.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cors",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "required": [
                  "CORSConfiguration"
                ],
                "properties": {
                  "CORSConfiguration": {
                    "description": "Describes the cross-origin access configuration for objects in an IBM COS bucket.",
                    "type": "object",
                    "properties": {
                      "CORSRules": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/CORSRules"
                          }
                        ]
                      }
                    },
                    "xml": {
                      "name": "CORSRule"
                    }
                  }
                },
                "description": "A set of origins and methods (cross-origin access that you want to allow). You can add up to 100 rules to the configuration."
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.put_cors"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-cors.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Create a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Create a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Create a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Create a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Create a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "tags": [
          "Websites and CORS"
        ],
        "operationId": "GetBucketCors",
        "summary": "Read a CORS configuration",
        "description": "Returns the CORS configuration information set for the bucket.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/GetBucketCorsOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket name for which to get the CORS configuration.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cors",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.get_cors"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-cors.read"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Read a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Read a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Read a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Read a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Read a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "delete": {
        "tags": [
          "Websites and CORS"
        ],
        "operationId": "DeleteBucketCors",
        "summary": "Delete a CORS configuration",
        "description": "Deletes the CORS configuration information set for the bucket.",
        "responses": {
          "204": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "Specifies the bucket whose CORS configuration is being deleted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cors",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.delete_cors"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-cors.delete"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Delete a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Delete a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Delete a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Delete a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Delete a CORS configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}/{Key}?tagging": {
      "put": {
        "tags": [
          "Tagging"
        ],
        "operationId": "PutObjectTagging",
        "summary": "Add a set of tags to an object",
        "description": "Sets tags on an object that already exists. A tag is a key-value pair.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/PutObjectTaggingOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket containing the object.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Name of the object key.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "Content-MD5",
            "in": "header",
            "required": false,
            "description": "The base64-encoded 128-bit MD5 digest of the payload (just the request body without the headers) according to [RFC 1864](http://www.ietf.org/rfc/rfc1864.txt). This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, it is recommended to use the Content-MD5 mechanism as an end-to-end integrity check.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tagging",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "required": [
                  "Tagging"
                ],
                "properties": {
                  "Tagging": {
                    "description": "Container for `TagSet` elements.",
                    "type": "object",
                    "properties": {
                      "TagSet": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/TagSet"
                          },
                          {
                            "description": "A collection for a set of tags"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.put_tagging"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-tagging.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Add tags to an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Add tags to an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Add tags to an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Add tags to an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Add tags to an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "tags": [
          "Tagging"
        ],
        "operationId": "GetObjectTagging",
        "summary": "Read a set of object tags",
        "description": "Returns the tags of an object.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/GetObjectTaggingOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket containing the object.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Object key for which to get the tagging information.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "tagging",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.get_tagging"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-tagging.read"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Read object tags",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Read object tags",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Read object tags",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Read object tags",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Read object tags",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "delete": {
        "tags": [
          "Tagging"
        ],
        "operationId": "DeleteObjectTagging",
        "summary": "Delete a set of object tags",
        "description": "Removes the entire tag set from the specified object.",
        "responses": {
          "204": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteObjectTaggingOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket that contains the object.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Name of the object key.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "tagging",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.delete_tagging"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-tagging.delete"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Delete object tags",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Delete object tags",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Delete object tags",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Delete object tags",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Delete object tags",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}?delete": {
      "post": {
        "tags": [
          "Basic operations"
        ],
        "operationId": "DeleteObjects",
        "summary": "Delete multiple objects",
        "description": "This operation enables you to delete multiple objects from a bucket using a single HTTP request. If you know the object keys that you want to delete, then this operation provides a suitable alternative to sending individual delete requests, reducing per-request overhead. The request contains a list of up to 1000 keys that you want to delete. In the XML, you provide the object key names. For each key, IBM COS performs a delete operation and returns the result of that delete, success, or failure, in the response. Note that if the object specified in the request is not found, IBM COS returns the result as deleted. The operation supports two modes for the response: verbose and quiet. By default, the operation uses verbose mode in which the response includes the result of deletion of each key in your request. In quiet mode the response includes only keys where the delete operation encountered an error. For a successful deletion, the operation does not return any information about the delete in the response body.\n",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteObjectsOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket name containing the objects to delete.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "delete",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "required": [
                  "Delete"
                ],
                "properties": {
                  "Delete": {
                    "description": "Container for the objects to delete.",
                    "type": "object",
                    "properties": {
                      "Objects": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/ObjectIdentifierList"
                          },
                          {
                            "xml": {
                              "name": "Object"
                            },
                            "description": "The objects to delete."
                          }
                        ]
                      },
                      "Quiet": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Quiet"
                          },
                          {
                            "description": "Element to enable quiet mode for the request. When you add this element, you must set its value to true."
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.post_multi_delete"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-batch.delete"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Delete multiple objects",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Delete multiple objects",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Delete multiple objects",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Delete multiple objects",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Delete multiple objects",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}?publicAccessBlock": {
      "put": {
        "tags": [
          "Security and compliance"
        ],
        "operationId": "PutPublicAccessBlock",
        "summary": "Create a public ACL block configuration",
        "description": "Creates or modifies the `PublicAccessBlock` configuration for an IBM COS bucket.",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the IBM COS bucket whose `PublicAccessBlock` configuration you want to set.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-MD5",
            "in": "header",
            "required": false,
            "description": "The base64-encoded 128-bit MD5 digest of the payload (just the request body without the headers) according to [RFC 1864](http://www.ietf.org/rfc/rfc1864.txt). This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, it is recommended to use the Content-MD5 mechanism as an end-to-end integrity check.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicAccessBlock",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "required": [
                  "PublicAccessBlockConfiguration"
                ],
                "properties": {
                  "PublicAccessBlockConfiguration": {
                    "description": "The PublicAccessBlock configuration that you want to apply to this IBM COS bucket. You can enable the configuration options in any combination.",
                    "type": "object",
                    "properties": {
                      "BlockPublicAcls": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Setting"
                          },
                          {
                            "description": "Specifies whether IBM COS should block public access control lists (ACLs) for this bucket and objects in this bucket. Setting this element to `TRUE` causes the following behavior:\n\n* PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.\n* PUT Object calls fail if the request includes a public ACL.\n* PUT Bucket calls fail if the request includes a public ACL.\n\nEnabling this setting doesn't affect existing policies or ACLs.\n"
                          }
                        ]
                      },
                      "IgnorePublicAcls": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Setting"
                          },
                          {
                            "description": "Specifies whether IBM COS should ignore public ACLs for this bucket and objects in this bucket. Setting this element to `TRUE` causes IBM COS to ignore all public ACLs on this bucket and objects in this bucket. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set."
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.put_public_access_block"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-public-access-block.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Create a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Create a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Create a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Create a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Create a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "get": {
        "tags": [
          "Security and compliance"
        ],
        "operationId": "GetPublicAccessBlock",
        "summary": "Read a public ACL block configuration",
        "description": "Retrieves the `PublicAccessBlock` configuration for an IBM COS bucket.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/GetPublicAccessBlockOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the IBM COS bucket whose `PublicAccessBlock` configuration you want to retrieve.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicAccessBlock",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.get_public_access_block"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-public-access-block.read"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Read a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Read a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Read a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Read a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Read a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "delete": {
        "tags": [
          "Security and compliance"
        ],
        "operationId": "DeletePublicAccessBlock",
        "summary": "Delete a public ACL block configuration",
        "description": "Removes the `PublicAccessBlock` configuration for an IBM COS bucket.",
        "responses": {
          "204": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The IBM COS bucket whose `PublicAccessBlock` configuration you want to delete.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicAccessBlock",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.delete_public_access_block"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-public-access-block.delete"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Delete a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Delete a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Delete a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Delete a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Delete a public ACL block configuration",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}?acl": {
      "get": {
        "deprecated": true,
        "tags": [
          "Security and compliance"
        ],
        "operationId": "GetBucketAcl",
        "summary": "Read a bucket ACL",
        "description": "This implementation of the `GET` operation uses the `acl` subresource to return the access control list (ACL) of a bucket.",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "Specifies the bucket whose ACL is being requested.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "acl",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.get_acl"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-acl.read"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Read a bucket ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Read a bucket ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Read a bucket ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Read a bucket ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Read a bucket ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "put": {
        "deprecated": true,
        "tags": [
          "Security and compliance"
        ],
        "operationId": "PutBucketAcl",
        "summary": "Create a bucket ACL",
        "description": "This operation should not be used.  Instead, use IAM policies to grant public access.",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "x-amz-acl",
            "in": "header",
            "required": false,
            "description": "The canned ACL to apply to the bucket.",
            "schema": {
              "type": "string",
              "enum": [
                "private",
                "public-read"
              ]
            }
          },
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket to which to apply the ACL.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "acl",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.put_acl"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-acl.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Create a bucket ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Create a bucket ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Create a bucket ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Create a bucket ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Create a bucket ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}/{Key}?acl": {
      "get": {
        "deprecated": true,
        "tags": [
          "Security and compliance"
        ],
        "operationId": "GetObjectAcl",
        "summary": "Read an object ACL",
        "description": "This operation should not be used.  Instead, use IAM policies to grant public access.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/GetObjectAclOutput"
                }
              }
            }
          },
          "404": {
            "description": "NoSuchKey",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/NoSuchKey"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket containing the object being requested.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "The key of the object for which to get the ACL information.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "acl",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.get_acl"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-acl.read"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Read an object ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Read an object ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Read an object ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Read an object ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Read an object ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "put": {
        "deprecated": true,
        "tags": [
          "Security and compliance"
        ],
        "operationId": "PutObjectAcl",
        "summary": "Make an object publicly accessible",
        "description": "This operation should not be used.  Instead, use IAM policies to grant public access. This operation can be used to make a single object in a bucket publicly accessible, but it is discouraged.  Instead, create a new bucket with a Public Access policy and copy the object to that bucket.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/PutObjectAclOutput"
                }
              }
            }
          },
          "404": {
            "description": "NoSuchKey",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/NoSuchKey"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "x-amz-acl",
            "in": "header",
            "required": false,
            "description": "The canned ACL to apply to the object.",
            "schema": {
              "type": "string",
              "enum": [
                "private",
                "public-read"
              ]
            }
          },
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket name that contains the object to which you want to attach the ACL.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-MD5",
            "in": "header",
            "required": false,
            "description": "The base64-encoded 128-bit MD5 digest of the payload (just the request body without the headers) according to [RFC 1864](http://www.ietf.org/rfc/rfc1864.txt). This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, it is recommended to use the Content-MD5 mechanism as an end-to-end integrity check.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-grant-full-control",
            "in": "header",
            "required": false,
            "description": "<p>Allows grantee the read, write, read ACP, and write ACP permissions on the bucket.</p> <p>This action is not supported by IBM COS on Outposts.</p>",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-grant-read",
            "in": "header",
            "required": false,
            "description": "<p>Allows grantee to list the objects in the bucket.</p> <p>This action is not supported by IBM COS on Outposts.</p>",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-grant-read-acp",
            "in": "header",
            "required": false,
            "description": "<p>Allows grantee to read the bucket ACL.</p> <p>This action is not supported by IBM COS on Outposts.</p>",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-grant-write",
            "in": "header",
            "required": false,
            "description": "Allows grantee to create, overwrite, and delete any object in the bucket.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-grant-write-acp",
            "in": "header",
            "required": false,
            "description": "<p>Allows grantee to write the ACL for the applicable bucket.</p> <p>This action is not supported by IBM COS on Outposts.</p>",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Key for which the PUT operation was initiated.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "acl",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "properties": {
                  "AccessControlPolicy": {
                    "description": "Contains the elements that set the ACL permissions for an object per grantee.",
                    "type": "object",
                    "properties": {
                      "Grants": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Grants"
                          },
                          {
                            "xml": {
                              "name": "AccessControlList"
                            },
                            "description": "A list of grants."
                          }
                        ]
                      },
                      "Owner": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Owner"
                          },
                          {
                            "description": "Container for the bucket owner's display name and ID."
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.put_acl"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-acl.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Create an object ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Create an object ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Create an object ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Create an object ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Create an object ACL",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}?uploads": {
      "get": {
        "tags": [
          "Multipart uploads"
        ],
        "operationId": "ListMultipartUploads",
        "summary": "List active multipart uploads",
        "description": "This operation lists in-progress multipart uploads. An in-progress multipart upload is a multipart upload that has been initiated using the Initiate Multipart Upload request, but has not yet been completed or aborted. This operation returns at most 1,000 multipart uploads in the response. 1,000 multipart uploads is the maximum number of uploads a response can include, which is also the default value. You can further limit the number of uploads in a response by specifying the `max-uploads` parameter in the response. If additional multipart uploads satisfy the list criteria, the response will contain an `IsTruncated` element with the value true. To list the additional multipart uploads, use the `key-marker` and `upload-id-marker` request parameters. In the response, the uploads are sorted by key. If your application has initiated more than one multipart upload using the same object key, then uploads in the response are first sorted by key. Additionally, uploads are sorted in ascending order within each key by the upload initiation time.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ListMultipartUploadsOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket to which the multipart upload was initiated.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "delimiter",
            "in": "query",
            "required": false,
            "description": "Character you use to group keys. All keys that contain the same string between the prefix, if specified, and the first occurrence of the delimiter after the prefix are grouped under a single result element, `CommonPrefixes`. If you don''t specify the prefix parameter, then the substring starts at the beginning of the key. The keys that are grouped under `CommonPrefixes` result element are not returned elsewhere in the response.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "encoding-type",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "string",
              "enum": [
                "url"
              ],
              "description": "Requests IBM COS to encode the object keys in the response and specifies the encoding method to use. An object key may contain any Unicode character; however, XML 1.0 parser cannot parse some characters, such as characters with an ASCII value from 0 to 10. For characters that are not supported in XML 1.0, you can add this parameter to request that IBM COS encode the keys in the response."
            }
          },
          {
            "name": "key-marker",
            "in": "query",
            "required": false,
            "description": "Together with upload-id-marker, this parameter specifies the multipart upload after which listing should begin. If `upload-id-marker` is not specified, only the keys lexicographically greater than the specified `key-marker` will be included in the list. If `upload-id-marker` is specified, any multipart uploads for a key equal to the `key-marker` might also be included, provided those multipart uploads have upload IDs lexicographically greater than the specified `upload-id-marker`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-uploads",
            "in": "query",
            "required": false,
            "description": "Sets the maximum number of multipart uploads, from 1 to 1,000, to return in the response body. 1,000 is the maximum number of uploads that can be returned in a response.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "prefix",
            "in": "query",
            "required": false,
            "description": "Lists in-progress uploads only for those keys that begin with the specified prefix. You can use prefixes to separate a bucket into different grouping of keys. (You can think of using prefix to make groups in the same way you'd use a folder in a file system.)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "upload-id-marker",
            "in": "query",
            "required": false,
            "description": "Together with key-marker, specifies the multipart upload after which listing should begin. If key-marker is not specified, the upload-id-marker parameter is ignored. Otherwise, any multipart uploads for a key equal to the key-marker might be included in the list only if they have an upload ID lexicographically greater than the specified `upload-id-marker`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "MaxUploads",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Pagination limit",
            "required": false
          },
          {
            "name": "KeyMarker",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Pagination token",
            "required": false
          },
          {
            "name": "UploadIdMarker",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Pagination token",
            "required": false
          },
          {
            "name": "uploads",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "allowEmptyValue": true
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.bucket.get_uploads"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.bucket-multipart.list"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "List active multipart uploads",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "List active multipart uploads",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "List active multipart uploads",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "List active multipart uploads",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "List active multipart uploads",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}/{Key}?partNumber={partNumber}&uploadId={uploadId}": {
      "put": {
        "tags": [
          "Multipart uploads"
        ],
        "operationId": "UploadPart",
        "summary": "Upload a part of an object",
        "description": "Uploads a part in a multipart upload. In this operation, you provide part data in your request. However, you have an option to specify your existing IBM COS object as a data source for the part you are uploading. To upload a part from an existing object, you use the `UploadPartCopy` operation. You must initiate a multipart upload (see `CreateMultipartUpload`) before you can upload any part. In response to your initiate request, IBM COS returns an upload ID (a unique identifier) that you must include in your upload part requests.Part numbers can be any number from 1 to 10,000, inclusive. A part number uniquely identifies a part and also defines its position within the object being created. If you upload a new part using the same part number that was used with a previous part, the previously uploaded part is overwritten. Each part must be at least 5 MB in size, except the last part. There is no size limit on the last part of your multipart upload.\n\nTo ensure that data is not corrupted when traversing the network, specify the `Content-MD5` header in the upload part request. IBM COS checks the part data against the provided MD5 value. If they do not match, IBM COS returns an error. If the upload request uses HMAC authentication (AWS Signature Version 4), then IBM COS uses the `x-amz-content-sha256` header as a checksum instead of `Content-MD5`.\n\nAfter you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, IBM COS frees up the parts storage and stops charging you for the parts storage.\n",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/UploadPartOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The name of the bucket to which the multipart upload was initiated.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Length",
            "in": "header",
            "required": false,
            "description": "Size of the body in bytes. This parameter is useful when the size of the body cannot be determined automatically. For more information, see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "Content-MD5",
            "in": "header",
            "required": false,
            "description": "The base64-encoded 128-bit MD5 digest of the payload (just the request body without the headers) according to [RFC 1864](http://www.ietf.org/rfc/rfc1864.txt). This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, it is recommended to use the Content-MD5 mechanism as an end-to-end integrity check.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Object key for which the multipart upload was initiated.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "partNumber",
            "in": "query",
            "required": true,
            "description": "Part number of part being uploaded. This is a positive integer between 1 and 10,000.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "uploadId",
            "in": "query",
            "required": true,
            "description": "Upload ID identifying the multipart upload whose part is being uploaded.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-algorithm",
            "in": "header",
            "required": false,
            "description": "Specifies the algorithm to use to when encrypting the object (for example, AES256).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key",
            "in": "header",
            "required": false,
            "description": "Specifies the customer-provided encryption key for IBM COS to use in encrypting data. This value is used to store the object and then it is discarded; IBM COS does not store the encryption key. The key must be appropriate for use with the algorithm specified in the `x-amz-server-side-encryption-customer-algorithm header`. This must be the same encryption key specified in the initiate multipart upload request.",
            "schema": {
              "type": "string",
              "format": "password"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key-MD5",
            "in": "header",
            "required": false,
            "description": "Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. IBM COS uses this header for a message integrity check to ensure that the encryption key was transmitted without error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-request-payer",
            "in": "header",
            "required": false,
            "description": "",
            "schema": {
              "type": "string",
              "enum": [
                "requester"
              ],
              "description": "Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html\">Downloading Objects in Requestor Pays Buckets</a> in the <i>IBM COS Developer Guide</i>."
            }
          },
          {
            "name": "x-amz-expected-bucket-owner",
            "in": "header",
            "required": false,
            "description": "The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP `403 (Access Denied)` error.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "text/xml": {
              "schema": {
                "type": "object",
                "properties": {
                  "Body": {
                    "description": "Object data.",
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.put_part"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-multipart.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Upload a part",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Upload a part",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Upload a part",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Upload a part",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Upload a part",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/{Bucket}/{TargetKey}?partNumber={partNumber}&uploadId={uploadId}": {
      "put": {
        "tags": [
          "Multipart uploads"
        ],
        "operationId": "UploadPartCopy",
        "summary": "Use an existing object as a part of a new object",
        "description": "Uploads a part by copying data from an existing object as data source. You specify the data source by adding the request header `x-amz-copy-source` in your request and a byte range by adding the request header `x-amz-copy-source-range` in your request. The minimum allowable part size for a multipart upload is 5 MB. Instead of using an existing object as part data, you might use the `UploadPart`operation and provide data in your request.\n\nYou must initiate a multipart upload before you can upload any part. In response to your initiate request. IBM COS returns a unique identifier, the upload ID, that you must include in your upload part request.\n\nNote the following additional considerations about the request headers `x-amz-copy-source-if-match`, `x-amz-copy-source-if-none-match`, `x-amz-copy-source-if-unmodified-since`, and `x-amz-copy-source-if-modified-since`:\n* If both of the `x-amz-copy-source-if-match` and `x-amz-copy-source-if-unmodified-since` headers are present in the request as follows: `x-amz-copy-source-if-match` condition evaluates to `true`, and `x-amz-copy-source-if-unmodified-since` condition evaluates to `false`, then IBM COS returns `200 OK` and copies the data.\n* If both of the `x-amz-copy-source-if-none-match` and `x-amz-copy-source-if-modified-since` headers are present in the request as follows: `x-amz-copy-source-if-none-match` condition evaluates to `false`, and `x-amz-copy-source-if-modified-since` condition evaluates to `true` IBM COS returns `412 Precondition Failed` response code.\n",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/UploadPartCopyOutput"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Bucket",
            "in": "path",
            "required": true,
            "description": "The bucket name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-copy-source",
            "in": "header",
            "required": true,
            "description": "Specifies the source object to use as a part in the multipart upload.",
            "schema": {
              "type": "string",
              "pattern": "\\/.+\\/.+"
            }
          },
          {
            "name": "x-amz-copy-source-if-match",
            "in": "header",
            "required": false,
            "description": "Copies the object if its entity tag (ETag) matches the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-copy-source-if-modified-since",
            "in": "header",
            "required": false,
            "description": "Copies the object if it has been modified since the specified time.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "x-amz-copy-source-if-none-match",
            "in": "header",
            "required": false,
            "description": "Copies the object if its entity tag (ETag) is different than the specified ETag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-copy-source-if-unmodified-since",
            "in": "header",
            "required": false,
            "description": "Copies the object if it hasn't been modified since the specified time.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "x-amz-copy-source-range",
            "in": "header",
            "required": false,
            "description": "The range of bytes to copy from the source object. The range value must use the form bytes=first-last, where the first and last are the zero-based byte offsets to copy. For example, bytes=0-9 indicates that you want to copy the first 10 bytes of the source. You can copy a range only if the source object is greater than 5 MB.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Key",
            "in": "path",
            "required": true,
            "description": "Object key for which the multipart upload was initiated.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "partNumber",
            "in": "query",
            "required": true,
            "description": "Part number of part being copied. This is a positive integer between 1 and 10,000.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "uploadId",
            "in": "query",
            "required": true,
            "description": "Upload ID identifying the multipart upload whose part is being copied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-algorithm",
            "in": "header",
            "required": false,
            "description": "Specifies the algorithm to use to when encrypting the object (`AES256`).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key",
            "in": "header",
            "required": false,
            "description": "Specifies the customer-provided encryption key for IBM COS to use in encrypting data. This value is used to store the object and then it is discarded; IBM COS does not store the encryption key. The key must be appropriate for use with the algorithm specified in the `x-amz-server-side-encryption-customer-algorithm` header. This must be the same encryption key specified in the initiate multipart upload request.",
            "schema": {
              "type": "string",
              "format": "password"
            }
          },
          {
            "name": "x-amz-server-side-encryption-customer-key-MD5",
            "in": "header",
            "required": false,
            "description": "Specifies the 128-bit MD5 digest of the encryption key according to [RFC 1321](https://tools.ietf.org/html/rfc1321). IBM COS uses this header for a message integrity check to ensure that the encryption key was transmitted without error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-copy-source-server-side-encryption-customer-algorithm",
            "in": "header",
            "required": false,
            "description": "Specifies the algorithm to use when decrypting the source object (`AES256`).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-amz-copy-source-server-side-encryption-customer-key",
            "in": "header",
            "required": false,
            "description": "Specifies the customer-provided encryption key for IBM COS to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created.",
            "schema": {
              "type": "string",
              "format": "password"
            }
          },
          {
            "name": "x-amz-copy-source-server-side-encryption-customer-key-MD5",
            "in": "header",
            "required": false,
            "description": "Specifies the 128-bit MD5 digest of the encryption key according to [RFC 1321](https://tools.ietf.org/html/rfc1321). IBM COS uses this header for a message integrity check to ensure that the encryption key was transmitted without error.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "cloud-object-storage.object.copy_part"
            },
            {
              "name": "cloud-object-storage.object.copy_part_get"
            }
          ]
        },
        "x-ibm-events": {
          "events": [
            {
              "name": "cloud-object-storage.object-multipart.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Upload a part from an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "curl",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Upload a part from an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "java",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Upload a part from an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "python",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Upload a part from an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "node",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Upload a part from an object",
                "example": [
                  {
                    "type": "code",
                    "lang": "go",
                    "source": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    }
  },
  "security": [
    {
      "hmac": []
    }
  ],
  "components": {
    "parameters": {
      "x-amz-security-token": {
        "name": "x-amz-security-token",
        "in": "header",
        "required": false,
        "schema": {
          "type": "string"
        }
      }
    },
    "securitySchemes": {
      "hmac": {
        "type": "apiKey",
        "name": "Authorization",
        "in": "header",
        "description": "IBM COS signature",
        "x-amazon-apigateway-authtype": "awsS3"
      }
    },
    "schemas": {
      "AbortMultipartUploadOutput": {
        "type": "object",
        "example": {},
        "properties": {}
      },
      "NoSuchUpload": {},
      "CompleteMultipartUploadOutput": {
        "type": "object",
        "example": {
          "Bucket": "acexamplebucket",
          "ETag": "\"4d9031c7644d8081c2829f4ea23c55f7-2\"",
          "Key": "bigobject",
          "Location": "https://examplebucket.s3.us-south.cloud-object-storage.appdomain.com/bigobject"
        },
        "properties": {
          "Location": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Location"
              },
              {
                "description": "The URI that identifies the newly created object."
              }
            ]
          },
          "Bucket": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketName"
              },
              {
                "description": "The name of the bucket that contains the newly created object."
              }
            ]
          },
          "Key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectKey"
              },
              {
                "description": "The object key of the newly created object."
              }
            ]
          },
          "ETag": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ETag"
              },
              {
                "description": "Entity tag that identifies the newly created object data. Objects with different object data will have different entity tags. The entity tag is an opaque string. The entity tag is an MD5 digest of the object data, unless it was uploaded using SSE-C (and is randomly generated)."
              }
            ]
          }
        }
      },
      "CompletedPartList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/CompletedPart"
        },
        "xml": {
          "wrapped": false
        }
      },
      "CopyObjectOutput": {
        "type": "object",
        "example": {
          "CopyObjectResult": {
            "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"",
            "LastModified": "2016-12-15T17:38:53.000Z"
          }
        },
        "properties": {
          "CopyObjectResult": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CopyObjectResult"
              },
              {
                "description": "Container for all response elements."
              }
            ]
          }
        }
      },
      "MetadataValue": {
        "type": "string"
      },
      "ObjectNotInActiveTierError": {},
      "BucketLocationConstraint": {
        "type": "string",
        "enum": [
          "us-standard",
          "us-cold"
        ]
      },
      "BucketAlreadyExists": {},
      "CreateMultipartUploadOutput": {
        "type": "object",
        "example": {
          "Bucket": "examplebucket",
          "Key": "largeobject",
          "UploadId": "ibZBv_75gd9r8lH_gqXatLdxMVpAlj6ZQjEs.OwyF3953YdwbcQnMA2BLGn8Lx12fQNICtMw5KyteFeHw.Sjng--"
        },
        "properties": {
          "Bucket": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketName"
              },
              {
                "description": "<p>The name of the bucket to which the multipart upload was initiated. </p> <p>When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html\">Using Access Points</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p> <p>When using this API with IBM COS on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html\">Using S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>"
              }
            ]
          },
          "Key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectKey"
              },
              {
                "description": "Object key for which the multipart upload was initiated."
              }
            ]
          },
          "UploadId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MultipartUploadId"
              },
              {
                "description": "ID for the initiated multipart upload."
              }
            ]
          }
        }
      },
      "DeleteObjectOutput": {
        "type": "object",
        "example": {},
        "properties": {}
      },
      "DeleteObjectTaggingOutput": {
        "type": "object",
        "example": {
          "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI"
        },
        "properties": {}
      },
      "DeleteObjectsOutput": {
        "type": "object",
        "example": {
          "Deleted": [
            {
              "Key": "HappyFace.jpg",
              "VersionId": "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd"
            },
            {
              "Key": "HappyFace.jpg",
              "VersionId": "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b"
            }
          ]
        },
        "properties": {
          "Errors": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Errors"
              },
              {
                "xml": {
                  "name": "Error"
                },
                "description": "Container for a failed delete operation that describes the object that IBM COS attempted to delete and the error it encountered."
              }
            ]
          }
        }
      },
      "ObjectIdentifierList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ObjectIdentifier"
        },
        "xml": {
          "wrapped": false
        }
      },
      "Quiet": {
        "type": "boolean"
      },
      "GetBucketCorsOutput": {
        "type": "object",
        "example": {
          "CORSRules": [
            {
              "AllowedHeaders": [
                "Authorization"
              ],
              "AllowedMethods": [
                "GET"
              ],
              "AllowedOrigins": [
                "*"
              ],
              "MaxAgeSeconds": 3000
            }
          ]
        },
        "properties": {
          "CORSRules": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CORSRules"
              },
              {
                "xml": {
                  "name": "CORSRule"
                },
                "description": "A set of origins and methods (cross-origin access that you want to allow). You can add up to 100 rules to the configuration."
              }
            ]
          }
        }
      },
      "GetBucketLifecycleOutput": {
        "type": "object",
        "example": {
          "Rules": [
            {
              "Expiration": {
                "Days": 1
              },
              "ID": "delete logs",
              "Prefix": "123/",
              "Status": "Enabled"
            }
          ]
        },
        "properties": {
          "Rules": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Rules"
              },
              {
                "xml": {
                  "name": "Rule"
                },
                "description": "Container for a lifecycle rule."
              }
            ]
          }
        }
      },
      "GetBucketLifecycleConfigurationOutput": {
        "type": "object",
        "example": {
          "Rules": [
            {
              "ID": "Rule for TaxDocs/",
              "Prefix": "TaxDocs",
              "Status": "Enabled",
              "Transitions": [
                {
                  "Days": 365,
                  "StorageClass": "STANDARD_IA"
                }
              ]
            }
          ]
        },
        "properties": {
          "Rules": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LifecycleRules"
              },
              {
                "xml": {
                  "name": "Rule"
                },
                "description": "Container for a lifecycle rule."
              }
            ]
          }
        }
      },
      "GetBucketReplicationConfigurationOutput": {
        "type": "object",
        "properties": {
          "Rules": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ReplicationRules"
              },
              {
                "xml": {
                  "name": "Rule"
                },
                "description": "Container for a replication rule."
              }
            ]
          }
        }
      },
      "GetBucketWebsiteOutput": {
        "type": "object",
        "example": {
          "ErrorDocument": {
            "Key": "error.html"
          },
          "IndexDocument": {
            "Suffix": "index.html"
          }
        },
        "properties": {
          "RedirectAllRequestsTo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RedirectAllRequestsTo"
              },
              {
                "description": "Specifies the redirect behavior of all requests to a website endpoint of an IBM COS bucket."
              }
            ]
          },
          "IndexDocument": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IndexDocument"
              },
              {
                "description": "The name of the index document for the website (for example `index.html`)."
              }
            ]
          },
          "ErrorDocument": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorDocument"
              },
              {
                "description": "The object key name of the website error document to use for 4XX class errors."
              }
            ]
          },
          "RoutingRules": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RoutingRules"
              },
              {
                "description": "Rules that define when a redirect is applied and the redirect behavior."
              }
            ]
          }
        }
      },
      "GetObjectOutput": {
        "type": "object",
        "example": {
          "AcceptRanges": "bytes",
          "ContentLength": "10",
          "ContentRange": "bytes 0-9/43",
          "ContentType": "text/plain",
          "ETag": "\"0d94420ffd0bc68cd3d152506b97a9cc\"",
          "LastModified": "Thu, 09 Oct 2014 22:57:28 GMT",
          "Metadata": {},
          "VersionId": "null"
        },
        "properties": {
          "Body": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Body"
              },
              {
                "description": "Object data."
              }
            ]
          },
          "Metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Metadata"
              },
              {
                "xml": {
                  "name": "x-amz-meta-"
                },
                "description": "A map of metadata to store with the object in S3."
              }
            ]
          }
        }
      },
      "NoSuchKey": {},
      "GetObjectAclOutput": {
        "type": "object",
        "example": {
          "Grants": [
            {
              "Grantee": {
                "DisplayName": "owner-display-name",
                "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc",
                "Type": "CanonicalUser"
              },
              "Permission": "WRITE"
            },
            {
              "Grantee": {
                "DisplayName": "owner-display-name",
                "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc",
                "Type": "CanonicalUser"
              },
              "Permission": "WRITE_ACP"
            },
            {
              "Grantee": {
                "DisplayName": "owner-display-name",
                "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc",
                "Type": "CanonicalUser"
              },
              "Permission": "READ"
            },
            {
              "Grantee": {
                "DisplayName": "owner-display-name",
                "ID": "852b113eexamplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc",
                "Type": "CanonicalUser"
              },
              "Permission": "READ_ACP"
            }
          ],
          "Owner": {
            "DisplayName": "owner-display-name",
            "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc"
          }
        },
        "properties": {
          "Owner": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Owner"
              },
              {
                "description": " Container for the bucket owner's display name and ID."
              }
            ]
          },
          "Grants": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Grants"
              },
              {
                "xml": {
                  "name": "AccessControlList"
                },
                "description": "A list of grants."
              }
            ]
          }
        }
      },
      "GetObjectTaggingOutput": {
        "type": "object",
        "required": [
          "TagSet"
        ],
        "example": {
          "TagSet": [
            {
              "Key": "Key4",
              "Value": "Value4"
            },
            {
              "Key": "Key3",
              "Value": "Value3"
            }
          ],
          "VersionId": "null"
        },
        "properties": {
          "TagSet": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TagSet"
              },
              {
                "description": "Contains the tag set."
              }
            ]
          }
        }
      },
      "GetPublicAccessBlockOutput": {
        "type": "object",
        "properties": {
          "PublicAccessBlockConfiguration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAccessBlockConfiguration"
              },
              {
                "description": "The `PublicAccessBlock` configuration currently in effect for this IBM COS bucket."
              }
            ]
          }
        }
      },
      "NoSuchBucket": {},
      "HeadObjectOutput": {
        "type": "object",
        "example": {
          "AcceptRanges": "bytes",
          "ContentLength": "3191",
          "ContentType": "image/jpeg",
          "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"",
          "LastModified": "Thu, 15 Dec 2016 01:19:41 GMT",
          "Metadata": {},
          "VersionId": "null"
        },
        "properties": {
          "Metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Metadata"
              },
              {
                "xml": {
                  "name": "x-amz-meta-"
                },
                "description": "A map of metadata to store with the object in S3."
              }
            ]
          }
        }
      },
      "ListBucketsOutput": {
        "example": "<ListBucketResult>\n  <Name>apiary</Name>\n  <Prefix/>\n  <KeyCount>3</KeyCount>\n  <MaxKeys>1000</MaxKeys>\n  <Delimiter/>\n  <IsTruncated>false</IsTruncated>\n  <Contents>\n      <Key>drone-bee</Key>\n      <LastModified>2016-08-25T17:38:38.549Z</LastModified>\n      <ETag>\"0cbc6611f5540bd0809a388dc95a615b\"</ETag>\n      <Size>4</Size>\n      <StorageClass>STANDARD</StorageClass>\n  </Contents>\n  <Contents>\n      <Key>soldier-bee</Key>\n      <LastModified>2016-08-25T17:49:06.006Z</LastModified>\n      <ETag>\"37d4c94839ee181a2224d6242176c4b5\"</ETag>\n      <Size>11</Size>\n      <StorageClass>STANDARD</StorageClass>\n  </Contents>\n  <Contents>\n      <Key>worker-bee</Key>\n      <LastModified>2016-08-25T17:46:53.288Z</LastModified>\n      <ETag>\"d34d8aada2996fc42e6948b926513907\"</ETag>\n      <Size>467</Size>\n      <StorageClass>STANDARD</StorageClass>\n  </Contents>\n</ListBucketResult>\n",
        "properties": {
          "Buckets": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Buckets"
              },
              {
                "description": "The list of buckets owned by the requestor."
              }
            ]
          },
          "Owner": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Owner"
              },
              {
                "description": "The owner of the buckets listed."
              }
            ]
          }
        }
      },
      "ListMultipartUploadsOutput": {
        "type": "object",
        "example": {
          "Uploads": [
            {
              "Initiated": "2014-05-01T05:40:58.000Z",
              "Initiator": {
                "DisplayName": "display-name",
                "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc"
              },
              "Key": "JavaFile",
              "Owner": {
                "DisplayName": "display-name",
                "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc"
              },
              "StorageClass": "STANDARD",
              "UploadId": "examplelUa.CInXklLQtSMJITdUnoZ1Y5GACB5UckOtspm5zbDMCkPF_qkfZzMiFZ6dksmcnqxJyIBvQMG9X9Q--"
            },
            {
              "Initiated": "2014-05-01T05:41:27.000Z",
              "Initiator": {
                "DisplayName": "display-name",
                "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc"
              },
              "Key": "JavaFile",
              "Owner": {
                "DisplayName": "display-name",
                "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc"
              },
              "StorageClass": "STANDARD",
              "UploadId": "examplelo91lv1iwvWpvCiJWugw2xXLPAD7Z8cJyX9.WiIRgNrdG6Ldsn.9FtS63TCl1Uf5faTB.1U5Ckcbmdw--"
            }
          ]
        },
        "properties": {
          "Bucket": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketName"
              },
              {
                "description": "The name of the bucket to which the multipart upload was initiated."
              }
            ]
          },
          "KeyMarker": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KeyMarker"
              },
              {
                "description": "The key at or after which the listing began."
              }
            ]
          },
          "UploadIdMarker": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UploadIdMarker"
              },
              {
                "description": "Upload ID after which listing began."
              }
            ]
          },
          "NextKeyMarker": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextKeyMarker"
              },
              {
                "description": "When a list is truncated, this element specifies the value that should be used for the key-marker request parameter in a subsequent request."
              }
            ]
          },
          "Prefix": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Prefix"
              },
              {
                "description": "When a prefix is provided in the request, this field contains the specified prefix. The result contains only keys starting with the specified prefix."
              }
            ]
          },
          "Delimiter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Delimiter"
              },
              {
                "description": "Contains the delimiter you specified in the request. If you don't specify a delimiter in your request, this element is absent from the response."
              }
            ]
          },
          "NextUploadIdMarker": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextUploadIdMarker"
              },
              {
                "description": "When a list is truncated, this element specifies the value that should be used for the `upload-id-marker` request parameter in a subsequent request."
              }
            ]
          },
          "MaxUploads": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaxUploads"
              },
              {
                "description": "Maximum number of multipart uploads that could have been included in the response."
              }
            ]
          },
          "IsTruncated": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IsTruncated"
              },
              {
                "description": "Indicates whether the returned list of multipart uploads is truncated. A value of true indicates that the list was truncated. The list can be truncated if the number of multipart uploads exceeds the limit allowed or specified by max uploads."
              }
            ]
          },
          "Uploads": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MultipartUploadList"
              },
              {
                "xml": {
                  "name": "Upload"
                },
                "description": "Container for elements related to a particular multipart upload. A response can contain zero or more `Upload` elements."
              }
            ]
          },
          "CommonPrefixes": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CommonPrefixList"
              },
              {
                "description": "If you specify a delimiter in the request, then the result returns each distinct key prefix containing the delimiter in a `CommonPrefixes` element. The distinct key prefixes are returned in the `Prefix` child element."
              }
            ]
          },
          "EncodingType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EncodingType"
              },
              {
                "description": "Encoding type used by IBM COS to encode object keys in the response. If you specify `encoding-type` request parameter, IBM COS includes this element in the response, and returns encoded key name values in the following response elements: `Delimiter`, `KeyMarker`, `Prefix`, `NextKeyMarker`, `Key`.\n"
              }
            ]
          }
        }
      },
      "ListObjectVersionsOutput": {
        "type": "object",
        "example": {
          "Versions": [
            {
              "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"",
              "IsLatest": true,
              "Key": "HappyFace.jpg",
              "LastModified": "2016-12-15T01:19:41.000Z",
              "Owner": {
                "DisplayName": "owner-display-name",
                "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc"
              },
              "Size": 3191,
              "StorageClass": "STANDARD",
              "VersionId": "null"
            },
            {
              "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"",
              "IsLatest": false,
              "Key": "HappyFace.jpg",
              "LastModified": "2016-12-13T00:58:26.000Z",
              "Owner": {
                "DisplayName": "owner-display-name",
                "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc"
              },
              "Size": 3191,
              "StorageClass": "STANDARD",
              "VersionId": "PHtexPGjH2y.zBgT8LmB7wwLI2mpbz.k"
            }
          ]
        },
        "properties": {
          "IsTruncated": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IsTruncated"
              },
              {
                "description": "A flag that indicates whether IBM COS returned all of the results that satisfied the search criteria. If your results were truncated, you can make a follow-up paginated request using the NextKeyMarker and NextVersionIdMarker response parameters as a starting place in another request to return the rest of the results."
              }
            ]
          },
          "KeyMarker": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KeyMarker"
              },
              {
                "description": "Marks the last key returned in a truncated response."
              }
            ]
          },
          "NextKeyMarker": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextKeyMarker"
              },
              {
                "description": "When the number of responses exceeds the value of `MaxKeys`, `NextKeyMarker` specifies the first key not returned that satisfies the search criteria. Use this value for the key-marker request parameter in a subsequent request."
              }
            ]
          },
          "Name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketName"
              },
              {
                "description": "The bucket name."
              }
            ]
          },
          "Prefix": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Prefix"
              },
              {
                "description": "Selects objects that start with the value supplied by this parameter."
              }
            ]
          },
          "Delimiter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Delimiter"
              },
              {
                "description": "The delimiter grouping the included keys. A delimiter is a character that you specify to group keys. All keys that contain the same string between the prefix and the first occurrence of the delimiter are grouped under a single result element in `CommonPrefixes`. These groups are counted as one result against the max-keys limitation. These keys are not returned elsewhere in the response."
              }
            ]
          },
          "MaxKeys": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaxKeys"
              },
              {
                "description": "Specifies the maximum number of objects to return."
              }
            ]
          },
          "CommonPrefixes": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CommonPrefixList"
              },
              {
                "description": "All of the keys rolled up into a common prefix count as a single return when calculating the number of returns."
              }
            ]
          },
          "EncodingType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EncodingType"
              },
              {
                "description": "Encoding type used by IBM COS to encode object keys in the response. If you specify `encoding-type` request parameter, IBM COS includes this element in the response, and returns encoded key name values in the following response elements: `Delimiter`, `KeyMarker`, `Prefix`, `NextKeyMarker`, `Key`.\n"
              }
            ]
          }
        }
      },
      "ListObjectsOutput": {
        "type": "object",
        "example": {
          "Contents": [
            {
              "ETag": "\"70ee1738b6b21e2c8a43f3a5ab0eee71\"",
              "Key": "example1.jpg",
              "LastModified": "2014-11-21T19:40:05.000Z",
              "Owner": {
                "DisplayName": "myname",
                "ID": "12345example25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc"
              },
              "Size": 11,
              "StorageClass": "STANDARD"
            },
            {
              "ETag": "\"9c8af9a76df052144598c115ef33e511\"",
              "Key": "example2.jpg",
              "LastModified": "2013-11-15T01:10:49.000Z",
              "Owner": {
                "DisplayName": "myname",
                "ID": "12345example25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc"
              },
              "Size": 713193,
              "StorageClass": "STANDARD"
            }
          ],
          "NextMarker": "eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAyfQ=="
        },
        "properties": {
          "IsTruncated": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IsTruncated"
              },
              {
                "description": "A flag that indicates whether IBM COS returned all of the results that satisfied the search criteria."
              }
            ]
          },
          "Marker": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Marker"
              },
              {
                "description": "Indicates where in the bucket listing begins. Marker is included in the response if it was sent with the request."
              }
            ]
          },
          "NextMarker": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextMarker"
              },
              {
                "description": "When response is truncated (the `IsTruncated` element value in the response is true), you can use the key name in this field as marker in the subsequent request to get next set of objects. IBM COS lists objects in alphabetical order.\n\n**Note:** This element is returned only if you have delimiter request parameter specified. If response does not include the `NextMarker` and it is truncated, you can use the value of the last key in the response as the marker in the subsequent request to get the next set of object keys.\n"
              }
            ]
          },
          "Contents": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectList"
              },
              {
                "description": "Metadata about each object returned."
              }
            ]
          },
          "Name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketName"
              },
              {
                "description": "The bucket name."
              }
            ]
          },
          "Prefix": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Prefix"
              },
              {
                "description": "Keys that begin with the indicated prefix."
              }
            ]
          },
          "Delimiter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Delimiter"
              },
              {
                "description": "Causes keys that contain the same string between the prefix and the first occurrence of the delimiter to be rolled up into a single result element in the `CommonPrefixes` collection. These rolled-up keys are not returned elsewhere in the response. Each rolled-up result counts as only one return against the `MaxKeys` value."
              }
            ]
          },
          "MaxKeys": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaxKeys"
              },
              {
                "description": "The maximum number of keys returned in the response body."
              }
            ]
          },
          "CommonPrefixes": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CommonPrefixList"
              },
              {
                "description": "<p>All of the keys rolled up in a common prefix count as a single return when calculating the number of returns. </p> <p>A response can contain CommonPrefixes only if you specify a delimiter.</p> <p>CommonPrefixes contains all (if there are any) keys between Prefix and the next occurrence of the string specified by the delimiter.</p> <p> CommonPrefixes lists keys that act like subdirectories in the directory specified by Prefix.</p> <p>For example, if the prefix is notes/ and the delimiter is a slash (/) as in notes/summer/july, the common prefix is notes/summer/. All of the keys that roll up into a common prefix count as a single return when calculating the number of returns.</p>"
              }
            ]
          },
          "EncodingType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EncodingType"
              },
              {
                "description": "Encoding type used by IBM COS to encode object keys in the response."
              }
            ]
          }
        }
      },
      "ListObjectsV2Output": {
        "type": "object",
        "example": {
          "Contents": [
            {
              "ETag": "\"70ee1738b6b21e2c8a43f3a5ab0eee71\"",
              "Key": "happyface.jpg",
              "LastModified": "2014-11-21T19:40:05.000Z",
              "Size": 11,
              "StorageClass": "STANDARD"
            },
            {
              "ETag": "\"becf17f89c30367a9a44495d62ed521a-1\"",
              "Key": "test.jpg",
              "LastModified": "2014-05-02T04:51:50.000Z",
              "Size": 4192256,
              "StorageClass": "STANDARD"
            }
          ],
          "IsTruncated": true,
          "KeyCount": "2",
          "MaxKeys": "2",
          "Name": "examplebucket",
          "NextContinuationToken": "1w41l63U0xa8q7smH50vCxyTQqdxo69O3EmK28Bi5PcROI4wI/EyIJg==",
          "Prefix": ""
        },
        "properties": {
          "IsTruncated": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IsTruncated"
              },
              {
                "description": "Set to false if all of the results were returned. Set to true if more keys are available to return. If the number of results exceeds that specified by MaxKeys, all of the results might not be returned."
              }
            ]
          },
          "Contents": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectList"
              },
              {
                "description": "Metadata about each object returned."
              }
            ]
          },
          "Name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketName"
              },
              {
                "description": "<p>The bucket name.</p> <p>When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html\">Using Access Points</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p> <p>When using this API with IBM COS on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html\">Using S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>"
              }
            ]
          },
          "Prefix": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Prefix"
              },
              {
                "description": " Keys that begin with the indicated prefix."
              }
            ]
          },
          "Delimiter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Delimiter"
              },
              {
                "description": "Causes keys that contain the same string between the prefix and the first occurrence of the delimiter to be rolled up into a single result element in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere in the response. Each rolled-up result counts as only one return against the `MaxKeys` value."
              }
            ]
          },
          "MaxKeys": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaxKeys"
              },
              {
                "description": "Sets the maximum number of keys returned in the response. By default the API returns up to 1,000 key names. The response might contain fewer keys but will never contain more."
              }
            ]
          },
          "CommonPrefixes": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CommonPrefixList"
              },
              {
                "description": "<p>All of the keys rolled up into a common prefix count as a single return when calculating the number of returns.</p> <p>A response can contain `CommonPrefixes` only if you specify a delimiter.</p> <p> `CommonPrefixes` contains all (if there are any) keys between `Prefix` and the next occurrence of the string specified by a delimiter.</p> <p> `CommonPrefixes` lists keys that act like subdirectories in the directory specified by `Prefix`.</p> <p>For example, if the prefix is `notes/` and the delimiter is a slash (`/`) as in `notes/summer/july`, the common prefix is `notes/summer/`. All of the keys that roll up into a common prefix count as a single return when calculating the number of returns. </p>"
              }
            ]
          },
          "EncodingType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EncodingType"
              },
              {
                "description": "Encoding type used by IBM COS to encode object keys in the response. If you specify `encoding-type` request parameter, IBM COS includes this element in the response, and returns encoded key name values in the following response elements: `Delimiter`, `KeyMarker`, `Prefix`, `NextKeyMarker`, `Key`.\n"
              }
            ]
          },
          "KeyCount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KeyCount"
              },
              {
                "description": "KeyCount is the number of keys returned with this request. KeyCount will always be less than equals to MaxKeys field. Say you ask for 50 keys, your result will include less than equals 50 keys "
              }
            ]
          },
          "ContinuationToken": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Token"
              },
              {
                "description": " If ContinuationToken was sent with the request, it is included in the response."
              }
            ]
          },
          "NextContinuationToken": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextToken"
              },
              {
                "description": " `NextContinuationToken` is sent when `isTruncated` is true, which means there are more keys in the bucket that can be listed. The next list requests to IBM COS can be continued with this `NextContinuationToken`. `NextContinuationToken` is obfuscated and is not a real key"
              }
            ]
          },
          "StartAfter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StartAfter"
              },
              {
                "description": "If StartAfter was sent with the request, it is included in the response."
              }
            ]
          }
        }
      },
      "ListVersionsResult": {
        "type": "object",
        "example": {
          "Contents": [
            {
              "ETag": "\"70ee1738b6b21e2c8a43f3a5ab0eee71\"",
              "Key": "happyface.jpg",
              "LastModified": "2014-11-21T19:40:05.000Z",
              "Size": 11,
              "StorageClass": "STANDARD"
            },
            {
              "ETag": "\"becf17f89c30367a9a44495d62ed521a-1\"",
              "Key": "test.jpg",
              "LastModified": "2014-05-02T04:51:50.000Z",
              "Size": 4192256,
              "StorageClass": "STANDARD"
            }
          ],
          "IsTruncated": true,
          "KeyCount": "2",
          "MaxKeys": "2",
          "Name": "examplebucket",
          "NextContinuationToken": "1w41l63U0xa8q7smH50vCxyTQqdxo69O3EmK28Bi5PcROI4wI/EyIJg==",
          "Prefix": ""
        },
        "properties": {
          "IsTruncated": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IsTruncated"
              },
              {
                "description": "Set to false if all of the results were returned. Set to true if more keys are available to return. If the number of results exceeds that specified by MaxKeys, all of the results might not be returned."
              }
            ]
          },
          "Contents": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectList"
              },
              {
                "description": "Metadata about each object returned."
              }
            ]
          },
          "Name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketName"
              },
              {
                "description": "<p>The bucket name.</p> <p>When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html\">Using Access Points</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p> <p>When using this API with IBM COS on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html\">Using S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>"
              }
            ]
          },
          "Prefix": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Prefix"
              },
              {
                "description": " Keys that begin with the indicated prefix."
              }
            ]
          },
          "Delimiter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Delimiter"
              },
              {
                "description": "Causes keys that contain the same string between the prefix and the first occurrence of the delimiter to be rolled up into a single result element in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere in the response. Each rolled-up result counts as only one return against the `MaxKeys` value."
              }
            ]
          },
          "MaxKeys": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaxKeys"
              },
              {
                "description": "The maximum number of keys returned in the response body."
              }
            ]
          },
          "CommonPrefixes": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CommonPrefixList"
              },
              {
                "description": "<p>All of the keys rolled up into a common prefix count as a single return when calculating the number of returns.</p> <p>A response can contain `CommonPrefixes` only if you specify a delimiter.</p> <p> `CommonPrefixes` contains all (if there are any) keys between `Prefix` and the next occurrence of the string specified by a delimiter.</p> <p> `CommonPrefixes` lists keys that act like subdirectories in the directory specified by `Prefix`.</p> <p>For example, if the prefix is `notes/` and the delimiter is a slash (`/`) as in `notes/summer/july`, the common prefix is `notes/summer/`. All of the keys that roll up into a common prefix count as a single return when calculating the number of returns. </p>"
              }
            ]
          },
          "EncodingType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EncodingType"
              },
              {
                "description": "Encoding type used by IBM COS to encode object keys in the response. If you specify `encoding-type` request parameter, IBM COS includes this element in the response, and returns encoded key name values in the following response elements: `Delimiter`, `KeyMarker`, `Prefix`, `NextKeyMarker`, `Key`.\n"
              }
            ]
          },
          "KeyCount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KeyCount"
              },
              {
                "description": "KeyCount is the number of keys returned with this request. KeyCount will always be less than equals to MaxKeys field. Say you ask for 50 keys, your result will include less than equals 50 keys "
              }
            ]
          },
          "ContinuationToken": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Token"
              },
              {
                "description": " If ContinuationToken was sent with the request, it is included in the response."
              }
            ]
          },
          "NextContinuationToken": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextToken"
              },
              {
                "description": " `NextContinuationToken` is sent when `isTruncated` is true, which means there are more keys in the bucket that can be listed. The next list requests to IBM COS can be continued with this `NextContinuationToken`. `NextContinuationToken` is obfuscated and is not a real key"
              }
            ]
          },
          "StartAfter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StartAfter"
              },
              {
                "description": "If StartAfter was sent with the request, it is included in the response."
              }
            ]
          }
        }
      },
      "ListPartsOutput": {
        "type": "object",
        "example": {
          "Initiator": {
            "DisplayName": "owner-display-name",
            "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc"
          },
          "Owner": {
            "DisplayName": "owner-display-name",
            "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc"
          },
          "Parts": [
            {
              "ETag": "\"d8c2eafd90c266e19ab9dcacc479f8af\"",
              "LastModified": "2016-12-16T00:11:42.000Z",
              "PartNumber": "1",
              "Size": 26246026
            },
            {
              "ETag": "\"d8c2eafd90c266e19ab9dcacc479f8af\"",
              "LastModified": "2016-12-16T00:15:01.000Z",
              "PartNumber": "2",
              "Size": 26246026
            }
          ],
          "StorageClass": "STANDARD"
        },
        "properties": {
          "Bucket": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketName"
              },
              {
                "description": "The name of the bucket to which the multipart upload was initiated."
              }
            ]
          },
          "Key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectKey"
              },
              {
                "description": "Object key for which the multipart upload was initiated."
              }
            ]
          },
          "UploadId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MultipartUploadId"
              },
              {
                "description": "Upload ID identifying the multipart upload whose parts are being listed."
              }
            ]
          },
          "PartNumberMarker": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PartNumberMarker"
              },
              {
                "description": "When a list is truncated, this element specifies the last part in the list, as well as the value to use for the part-number-marker request parameter in a subsequent request."
              }
            ]
          },
          "NextPartNumberMarker": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextPartNumberMarker"
              },
              {
                "description": "When a list is truncated, this element specifies the last part in the list, as well as the value to use for the part-number-marker request parameter in a subsequent request."
              }
            ]
          },
          "MaxParts": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaxParts"
              },
              {
                "description": "Maximum number of parts that were allowed in the response."
              }
            ]
          },
          "IsTruncated": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IsTruncated"
              },
              {
                "description": " Indicates whether the returned list of parts is truncated. A true value indicates that the list was truncated. A list can be truncated if the number of parts exceeds the limit returned in the MaxParts element."
              }
            ]
          },
          "Parts": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Parts"
              },
              {
                "xml": {
                  "name": "Part"
                },
                "description": " Container for elements related to a particular part. A response can contain zero or more `Part` elements."
              }
            ]
          },
          "Initiator": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Initiator"
              },
              {
                "description": "Container element that identifies who initiated the multipart upload. If the initiator is an AWS account, this element provides the same information as the `Owner` element. If the initiator is an IAM User, this element provides the user ARN and display name."
              }
            ]
          },
          "Owner": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Owner"
              },
              {
                "description": " Container element that identifies the object owner, after the object is created. If multipart upload is initiated by an IAM user, this element provides the parent account ID and display name."
              }
            ]
          },
          "StorageClass": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StorageClass"
              },
              {
                "description": "Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded object."
              }
            ]
          }
        }
      },
      "Grants": {
        "type": "array",
        "items": {
          "allOf": [
            {
              "$ref": "#/components/schemas/Grant"
            },
            {
              "xml": {
                "name": "Grant"
              }
            }
          ]
        }
      },
      "Owner": {
        "type": "object",
        "properties": {
          "DisplayName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DisplayName"
              },
              {
                "description": "Container for the display name of the owner."
              }
            ]
          },
          "ID": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ID"
              },
              {
                "description": "Container for the ID of the owner."
              }
            ]
          }
        },
        "description": "Container for the owner's display name and ID."
      },
      "CORSRules": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/CORSRule"
        },
        "xml": {
          "wrapped": false
        }
      },
      "IsEnabled": {
        "type": "boolean"
      },
      "Rules": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Rule"
        },
        "xml": {
          "wrapped": false
        }
      },
      "LifecycleRules": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/LifecycleRule"
        },
        "xml": {
          "wrapped": false
        }
      },
      "ReplicationRules": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ReplicationRule"
        },
        "xml": {
          "wrapped": false
        }
      },
      "Role": {
        "type": "string"
      },
      "TagSet": {
        "type": "array",
        "items": {
          "allOf": [
            {
              "$ref": "#/components/schemas/Tag"
            },
            {
              "xml": {
                "name": "Tag"
              }
            }
          ]
        }
      },
      "ErrorDocument": {
        "type": "object",
        "required": [
          "Key"
        ],
        "properties": {
          "Key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectKey"
              },
              {
                "description": "The object key name to use when a 4XX class error occurs."
              }
            ]
          }
        },
        "description": "The error information."
      },
      "IndexDocument": {
        "type": "object",
        "required": [
          "Suffix"
        ],
        "properties": {
          "Suffix": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Suffix"
              },
              {
                "description": "A suffix that is appended to a request that is for a directory on the website endpoint (for example,if the suffix is index.html and you make a request to samplebucket/images/ the data that is returned will be for the object with the key name images/index.html) The suffix must not be empty and must not include a slash character."
              }
            ]
          }
        },
        "description": "Container for the `Suffix` element."
      },
      "RedirectAllRequestsTo": {
        "type": "object",
        "required": [
          "HostName"
        ],
        "properties": {
          "HostName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/HostName"
              },
              {
                "description": "Name of the host where requests are redirected."
              }
            ]
          },
          "Protocol": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Protocol"
              },
              {
                "description": "Protocol to use when redirecting requests. The default is the protocol that is used in the original request."
              }
            ]
          }
        },
        "description": "Specifies the redirect behavior of all requests to a website endpoint of an IBM COS bucket."
      },
      "RoutingRules": {
        "type": "array",
        "items": {
          "allOf": [
            {
              "$ref": "#/components/schemas/RoutingRule"
            },
            {
              "xml": {
                "name": "RoutingRule"
              }
            }
          ]
        }
      },
      "PutObjectAclOutput": {
        "type": "object",
        "example": {},
        "properties": {}
      },
      "Date": {
        "type": "string",
        "format": "date-time"
      },
      "PutObjectTaggingOutput": {
        "type": "object",
        "example": {
          "VersionId": "null"
        },
        "properties": {}
      },
      "Setting": {
        "type": "boolean"
      },
      "RestoreObjectOutput": {
        "type": "object",
        "example": {},
        "properties": {}
      },
      "Days": {
        "type": "integer"
      },
      "GlacierJobParameters": {
        "type": "object",
        "required": [
          "Tier"
        ],
        "properties": {
          "Tier": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Tier"
              },
              {
                "description": "S3 Glacier retrieval tier at which the restore will be processed."
              }
            ]
          }
        },
        "description": "Container for S3 Glacier job parameters."
      },
      "RestoreRequestType": {
        "type": "string",
        "enum": [
          "SELECT"
        ]
      },
      "Tier": {
        "type": "string",
        "enum": [
          "Bulk",
          "Accelerated"
        ]
      },
      "Description": {
        "type": "string"
      },
      "OutputLocation": {
        "type": "object",
        "properties": {
          "S3": {
            "allOf": [
              {
                "$ref": "#/components/schemas/S3Location"
              },
              {
                "description": "Describes an S3 location that will receive the results of the restore request."
              }
            ]
          }
        },
        "description": "Describes the location where the restore job's output is stored."
      },
      "ObjectAlreadyInActiveTierError": {},
      "Start": {
        "type": "integer"
      },
      "End": {
        "type": "integer"
      },
      "UploadPartOutput": {
        "type": "object",
        "example": {
          "ETag": "\"d8c2eafd90c266e19ab9dcacc479f8af\""
        },
        "properties": {}
      },
      "UploadPartCopyOutput": {
        "type": "object",
        "example": {
          "CopyPartResult": {
            "ETag": "\"65d16d19e65a7508a51f043180edcc36\"",
            "LastModified": "2016-12-29T21:44:28.000Z"
          }
        },
        "properties": {
          "CopyPartResult": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CopyPartResult"
              },
              {
                "description": "Container for all response elements."
              }
            ]
          }
        }
      },
      "BucketName": {
        "type": "string"
      },
      "ObjectKey": {
        "type": "string",
        "minLength": 1
      },
      "MultipartUploadId": {
        "type": "string"
      },
      "AccountId": {
        "type": "string"
      },
      "AbortMultipartUploadRequest": {
        "type": "object",
        "title": "AbortMultipartUploadRequest",
        "properties": {}
      },
      "AbortRuleId": {
        "type": "string"
      },
      "AcceptRanges": {
        "type": "string"
      },
      "AccessControlPolicy": {
        "type": "object",
        "properties": {
          "Grants": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Grants"
              },
              {
                "xml": {
                  "name": "AccessControlList"
                },
                "description": "A list of grants."
              }
            ]
          },
          "Owner": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Owner"
              },
              {
                "description": "Container for the bucket owner's display name and ID."
              }
            ]
          }
        },
        "description": "Contains the elements that set the ACL permissions for an object per grantee."
      },
      "OwnerOverride": {
        "type": "string",
        "enum": [
          "Destination"
        ]
      },
      "AllowedHeader": {
        "type": "string"
      },
      "AllowedHeaders": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/AllowedHeader"
        },
        "xml": {
          "wrapped": false
        }
      },
      "AllowedMethod": {
        "type": "string"
      },
      "AllowedMethods": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/AllowedMethod"
        },
        "xml": {
          "wrapped": false
        }
      },
      "AllowedOrigin": {
        "type": "string"
      },
      "AllowedOrigins": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/AllowedOrigin"
        },
        "xml": {
          "wrapped": false
        }
      },
      "Prefix": {
        "type": "string"
      },
      "Tag": {
        "type": "object",
        "required": [
          "Key",
          "Value"
        ],
        "properties": {
          "Key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectKey"
              },
              {
                "description": "Name of the object key."
              }
            ]
          },
          "Value": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Value"
              },
              {
                "description": "Value of the tag."
              }
            ]
          }
        },
        "description": "A container of a key value name pair."
      },
      "Body": {
        "type": "string"
      },
      "CreationDate": {
        "type": "string",
        "format": "date-time"
      },
      "Bucket": {
        "type": "object",
        "properties": {
          "Name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketName"
              },
              {
                "description": "The name of the bucket."
              }
            ]
          },
          "CreationDate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CreationDate"
              },
              {
                "description": "Date the bucket was created."
              }
            ]
          }
        },
        "description": " In terms of implementation, a Bucket is a resource. An IBM COS bucket name is globally unique, and the namespace is shared by all AWS accounts. "
      },
      "BucketCannedACL": {
        "type": "string",
        "enum": [
          "private",
          "public-read"
        ]
      },
      "BucketLifecycleConfiguration": {
        "type": "object",
        "required": [
          "Rules"
        ],
        "properties": {
          "Rules": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LifecycleRules"
              },
              {
                "xml": {
                  "name": "Rule"
                },
                "description": "A lifecycle rule for individual objects in an IBM COS bucket."
              }
            ]
          }
        },
        "description": "Specifies the lifecycle configuration for objects in an IBM COS bucket. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html\">Object Lifecycle Management</a> in the <i>Amazon Simple Storage Service Developer Guide</i>."
      },
      "Buckets": {
        "type": "array",
        "items": {
          "allOf": [
            {
              "$ref": "#/components/schemas/Bucket"
            },
            {
              "xml": {
                "name": "Bucket"
              }
            }
          ]
        }
      },
      "CORSConfiguration": {
        "type": "object",
        "required": [
          "CORSRules"
        ],
        "properties": {
          "CORSRules": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CORSRules"
              },
              {
                "xml": {
                  "name": "CORSRule"
                },
                "description": "A set of origins and methods (cross-origin access that you want to allow). You can add up to 100 rules to the configuration."
              }
            ]
          }
        },
        "description": "Describes the cross-origin access configuration for objects in an IBM COS bucket. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html\">Enabling Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service Developer Guide</i>."
      },
      "ExposeHeaders": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ExposeHeader"
        },
        "xml": {
          "wrapped": false
        }
      },
      "MaxAgeSeconds": {
        "type": "integer"
      },
      "CORSRule": {
        "type": "object",
        "required": [
          "AllowedMethods",
          "AllowedOrigins"
        ],
        "properties": {
          "AllowedHeaders": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AllowedHeaders"
              },
              {
                "xml": {
                  "name": "AllowedHeader"
                },
                "description": "Headers that are specified in the `Access-Control-Request-Headers` header. These headers are allowed in a preflight OPTIONS request. In response to any preflight OPTIONS request, IBM COS returns any requested headers that are allowed."
              }
            ]
          },
          "AllowedMethods": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AllowedMethods"
              },
              {
                "xml": {
                  "name": "AllowedMethod"
                },
                "description": "An HTTP method that you allow the origin to execute. Valid values are `GET`, `PUT`, `HEAD`, `POST`, and `DELETE`."
              }
            ]
          },
          "AllowedOrigins": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AllowedOrigins"
              },
              {
                "xml": {
                  "name": "AllowedOrigin"
                },
                "description": "One or more origins you want customers to be able to access the bucket from."
              }
            ]
          },
          "ExposeHeaders": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ExposeHeaders"
              },
              {
                "xml": {
                  "name": "ExposeHeader"
                },
                "description": "One or more headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript `XMLHttpRequest` object)."
              }
            ]
          },
          "MaxAgeSeconds": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaxAgeSeconds"
              },
              {
                "description": "The time in seconds that your browser is to cache the preflight response for the specified resource."
              }
            ]
          }
        },
        "description": "Specifies a cross-origin access rule for an IBM COS bucket."
      },
      "FileHeaderInfo": {
        "type": "string",
        "enum": [
          "USE",
          "IGNORE",
          "NONE"
        ]
      },
      "Comments": {
        "type": "string"
      },
      "CacheControl": {
        "type": "string"
      },
      "Code": {
        "type": "string"
      },
      "CommonPrefix": {
        "type": "object",
        "properties": {
          "Prefix": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Prefix"
              },
              {
                "description": "Container for the specified common prefix."
              }
            ]
          }
        },
        "description": "Container for all (if there are any) keys between Prefix and the next occurrence of the string specified by a delimiter. CommonPrefixes lists keys that act like subdirectories in the directory specified by Prefix. For example, if the prefix is notes/ and the delimiter is a slash (/) as in notes/summer/july, the common prefix is notes/summer/. "
      },
      "CommonPrefixList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/CommonPrefix"
        },
        "xml": {
          "wrapped": false
        }
      },
      "Location": {
        "type": "string"
      },
      "Expiration": {
        "type": "string"
      },
      "ETag": {
        "type": "string"
      },
      "ServerSideEncryption": {
        "type": "string",
        "enum": [
          "AES256"
        ]
      },
      "CompletedMultipartUpload": {
        "type": "object",
        "properties": {
          "Parts": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CompletedPartList"
              },
              {
                "xml": {
                  "name": "Part"
                },
                "description": "Array of CompletedPart data types."
              }
            ]
          }
        },
        "description": "The container for the completed multipart upload details."
      },
      "CompleteMultipartUploadRequest": {
        "type": "object",
        "title": "CompleteMultipartUploadRequest",
        "properties": {
          "MultipartUpload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CompletedMultipartUpload"
              },
              {
                "xml": {
                  "name": "CompleteMultipartUpload"
                },
                "description": "The container for the multipart upload request information."
              }
            ]
          }
        },
        "xml": {
          "namespace": "http://s3.amazonaws.com/doc/2006-03-01/"
        }
      },
      "PartNumber": {
        "type": "integer"
      },
      "CompletedPart": {
        "type": "object",
        "properties": {
          "ETag": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ETag"
              },
              {
                "description": "Entity tag returned when the part was uploaded."
              }
            ]
          },
          "PartNumber": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PartNumber"
              },
              {
                "description": "Part number that identifies the part. This is a positive integer between 1 and 10,000."
              }
            ]
          }
        },
        "description": "Details of the parts that were uploaded."
      },
      "HttpErrorCodeReturnedEquals": {
        "type": "string"
      },
      "KeyPrefixEquals": {
        "type": "string"
      },
      "Condition": {
        "type": "object",
        "properties": {
          "HttpErrorCodeReturnedEquals": {
            "allOf": [
              {
                "$ref": "#/components/schemas/HttpErrorCodeReturnedEquals"
              },
              {
                "description": "The HTTP error code when the redirect is applied. In the event of an error, if the error code equals this value, then the specified redirect is applied. Required when parent element `Condition` is specified and sibling `KeyPrefixEquals` is not specified. If both are specified, then both must be true for the redirect to be applied."
              }
            ]
          },
          "KeyPrefixEquals": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KeyPrefixEquals"
              },
              {
                "description": "The object key name prefix when the redirect is applied. For example, to redirect requests for `ExamplePage.html`, the key prefix will be `ExamplePage.html`. To redirect request for all pages with the prefix `docs/`, the key prefix will be `/docs`, which identifies all objects in the `docs/` folder. Required when the parent element `Condition` is specified and sibling `HttpErrorCodeReturnedEquals` is not specified. If both conditions are specified, both must be true for the redirect to be applied."
              }
            ]
          }
        },
        "description": "A container for describing a condition that must be met for the specified redirect to apply. For example, 1. If request is for pages in the `/docs` folder, redirect to the `/documents` folder. 2. If request results in HTTP error 4xx, redirect request to another host where you might process the error."
      },
      "ConfirmRemoveSelfBucketAccess": {
        "type": "boolean"
      },
      "ContentDisposition": {
        "type": "string"
      },
      "ContentEncoding": {
        "type": "string"
      },
      "ContentLanguage": {
        "type": "string"
      },
      "ContentLength": {
        "type": "integer"
      },
      "ContentMD5": {
        "type": "string"
      },
      "ContentRange": {
        "type": "string"
      },
      "ContentType": {
        "type": "string"
      },
      "ContinuationEvent": {
        "type": "object",
        "properties": {},
        "description": "<p/>"
      },
      "CopyObjectResult": {
        "type": "object",
        "properties": {
          "ETag": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ETag"
              },
              {
                "description": "Returns the ETag of the new object. The ETag reflects only changes to the contents of an object, not its metadata. The source and destination ETag is identical for a successfully copied object."
              }
            ]
          },
          "LastModified": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LastModified"
              },
              {
                "description": "Returns the date that the object was last modified."
              }
            ]
          }
        },
        "description": "Container for all response elements."
      },
      "CopySourceVersionId": {
        "type": "string"
      },
      "SSECustomerAlgorithm": {
        "type": "string"
      },
      "SSECustomerKeyMD5": {
        "type": "string"
      },
      "SSEKMSEncryptionContext": {
        "type": "string",
        "format": "password"
      },
      "ObjectCannedACL": {
        "type": "string",
        "enum": [
          "private",
          "public-read"
        ]
      },
      "CopySource": {
        "type": "string",
        "pattern": "\\/.+\\/.+"
      },
      "CopySourceIfMatch": {
        "type": "string"
      },
      "CopySourceIfModifiedSince": {
        "type": "string",
        "format": "date-time"
      },
      "CopySourceIfNoneMatch": {
        "type": "string"
      },
      "CopySourceIfUnmodifiedSince": {
        "type": "string",
        "format": "date-time"
      },
      "Expires": {
        "type": "string",
        "format": "date-time"
      },
      "GrantFullControl": {
        "type": "string"
      },
      "GrantRead": {
        "type": "string"
      },
      "GrantReadACP": {
        "type": "string"
      },
      "GrantWriteACP": {
        "type": "string"
      },
      "Metadata": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/MetadataValue"
        }
      },
      "MetadataDirective": {
        "type": "string",
        "enum": [
          "COPY",
          "REPLACE"
        ]
      },
      "TaggingDirective": {
        "type": "string",
        "enum": [
          "COPY",
          "REPLACE"
        ]
      },
      "StorageClass": {
        "type": "string",
        "enum": [
          "STANDARD",
          "ACCELERATED",
          "GLACIER"
        ]
      },
      "WebsiteRedirectLocation": {
        "type": "string"
      },
      "SSECustomerKey": {
        "type": "string",
        "format": "password"
      },
      "CopySourceSSECustomerAlgorithm": {
        "type": "string"
      },
      "CopySourceSSECustomerKey": {
        "type": "string",
        "format": "password"
      },
      "CopySourceSSECustomerKeyMD5": {
        "type": "string"
      },
      "TaggingHeader": {
        "type": "string"
      },
      "CopyObjectRequest": {
        "type": "object",
        "title": "CopyObjectRequest",
        "properties": {
          "Metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Metadata"
              },
              {
                "xml": {
                  "name": "x-amz-meta-"
                },
                "description": "A map of metadata to store with the object in S3."
              }
            ]
          }
        }
      },
      "LastModified": {
        "type": "string",
        "format": "date-time"
      },
      "CopyPartResult": {
        "type": "object",
        "properties": {
          "ETag": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ETag"
              },
              {
                "description": "Entity tag of the object."
              }
            ]
          },
          "LastModified": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LastModified"
              },
              {
                "description": "Date and time at which the object was uploaded."
              }
            ]
          }
        },
        "description": "Container for all response elements."
      },
      "CopySourceRange": {
        "type": "string"
      },
      "CreateMultipartUploadRequest": {
        "type": "object",
        "title": "CreateMultipartUploadRequest",
        "properties": {
          "Metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Metadata"
              },
              {
                "xml": {
                  "name": "x-amz-meta-"
                },
                "description": "A map of user-defined metadata to store with the object. When processed, identical keys will be bundled with comma-separated values."
              }
            ]
          }
        }
      },
      "Years": {
        "type": "integer"
      },
      "Delete": {
        "type": "object",
        "required": [
          "Objects"
        ],
        "properties": {
          "Objects": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectIdentifierList"
              },
              {
                "xml": {
                  "name": "Object"
                },
                "description": "The objects to delete."
              }
            ]
          },
          "Quiet": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Quiet"
              },
              {
                "description": "Element to enable quiet mode for the request. When you add this element, you must set its value to true."
              }
            ]
          }
        },
        "description": "Container for the objects to delete."
      },
      "DeleteBucketCorsRequest": {
        "type": "object",
        "title": "DeleteBucketCorsRequest",
        "properties": {}
      },
      "DeleteBucketLifecycleRequest": {
        "type": "object",
        "title": "DeleteBucketLifecycleRequest",
        "properties": {}
      },
      "DeleteBucketRequest": {
        "type": "object",
        "title": "DeleteBucketRequest",
        "properties": {}
      },
      "DeleteBucketWebsiteRequest": {
        "type": "object",
        "title": "DeleteBucketWebsiteRequest",
        "properties": {}
      },
      "IsLatest": {
        "type": "boolean"
      },
      "DeleteObjectRequest": {
        "type": "object",
        "title": "DeleteObjectRequest",
        "properties": {}
      },
      "DeleteObjectTaggingRequest": {
        "type": "object",
        "title": "DeleteObjectTaggingRequest",
        "properties": {}
      },
      "Errors": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Error"
        },
        "xml": {
          "wrapped": false
        }
      },
      "DeleteObjectsRequest": {
        "type": "object",
        "required": [
          "Delete"
        ],
        "title": "DeleteObjectsRequest",
        "properties": {
          "Delete": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Delete"
              },
              {
                "description": "Container for the request."
              },
              {
                "xml": {
                  "name": "Delete",
                  "wrapped": true
                }
              }
            ]
          }
        }
      },
      "DeletePublicAccessBlockRequest": {
        "type": "object",
        "title": "DeletePublicAccessBlockRequest",
        "properties": {}
      },
      "Delimiter": {
        "type": "string"
      },
      "DisplayName": {
        "type": "string"
      },
      "EmailAddress": {
        "type": "string"
      },
      "EncodingType": {
        "type": "string",
        "enum": [
          "url"
        ],
        "description": "Requests IBM COS to encode the object keys in the response and specifies the encoding method to use. An object key may contain any Unicode character; however, XML 1.0 parser cannot parse some characters, such as characters with an ASCII value from 0 to 10. For characters that are not supported in XML 1.0, you can add this parameter to request that IBM COS encode the keys in the response."
      },
      "Message": {
        "type": "string"
      },
      "Error": {
        "type": "object",
        "properties": {
          "Key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectKey"
              },
              {
                "description": "The error key."
              }
            ]
          },
          "Code": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Code"
              }
            ]
          },
          "Message": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Message"
              },
              {
                "description": "The error message contains a generic description of the error condition in English. It is intended for a human audience. Simple programs display the message directly to the end user if they encounter an error condition they don't know how or don't care to handle. Sophisticated programs with more exhaustive error handling and proper internationalization are more likely to ignore the error message."
              }
            ]
          }
        },
        "description": "Container for all error elements."
      },
      "ExpirationStatus": {
        "type": "string",
        "enum": [
          "Enabled",
          "Disabled"
        ]
      },
      "ExpiredObjectDeleteMarker": {
        "type": "boolean"
      },
      "ExposeHeader": {
        "type": "string"
      },
      "Expression": {
        "type": "string"
      },
      "ExpressionType": {
        "type": "string",
        "enum": [
          "SQL"
        ]
      },
      "FetchOwner": {
        "type": "boolean"
      },
      "FilterRuleName": {
        "type": "string",
        "enum": [
          "prefix",
          "suffix"
        ]
      },
      "FilterRuleValue": {
        "type": "string"
      },
      "FilterRule": {
        "type": "object",
        "properties": {
          "Name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FilterRuleName"
              },
              {
                "description": "The object key name prefix or suffix identifying one or more objects to which the filtering rule applies. The maximum length is 1,024 characters. Overlapping prefixes and suffixes are not supported. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html\">Configuring Event Notifications</a> in the <i>Amazon Simple Storage Service Developer Guide</i>."
              }
            ]
          },
          "Value": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FilterRuleValue"
              },
              {
                "description": "The value that the filter searches for in object key names."
              }
            ]
          }
        },
        "description": "Specifies the IBM COS object key name to filter on and whether to filter on the suffix or prefix of the key name."
      },
      "FilterRuleList": {
        "type": "array",
        "description": "A list of containers for the key-value pair that defines the criteria for the filter rule.",
        "items": {
          "$ref": "#/components/schemas/FilterRule"
        },
        "xml": {
          "wrapped": false
        }
      },
      "GetBucketCorsRequest": {
        "type": "object",
        "title": "GetBucketCorsRequest",
        "properties": {}
      },
      "GetBucketLifecycleConfigurationRequest": {
        "type": "object",
        "title": "GetBucketLifecycleConfigurationRequest",
        "properties": {}
      },
      "GetBucketLifecycleRequest": {
        "type": "object",
        "title": "GetBucketLifecycleRequest",
        "properties": {}
      },
      "GetBucketLocationRequest": {
        "type": "object",
        "title": "GetBucketLocationRequest",
        "properties": {}
      },
      "GetBucketWebsiteRequest": {
        "type": "object",
        "title": "GetBucketWebsiteRequest",
        "properties": {}
      },
      "GetObjectAclRequest": {
        "type": "object",
        "title": "GetObjectAclRequest",
        "properties": {}
      },
      "Restore": {
        "type": "string"
      },
      "MissingMeta": {
        "type": "integer"
      },
      "PartsCount": {
        "type": "integer"
      },
      "TagCount": {
        "type": "integer"
      },
      "IfMatch": {
        "type": "string"
      },
      "IfModifiedSince": {
        "type": "string",
        "format": "date-time"
      },
      "IfNoneMatch": {
        "type": "string"
      },
      "IfUnmodifiedSince": {
        "type": "string",
        "format": "date-time"
      },
      "Range": {
        "type": "string"
      },
      "ResponseCacheControl": {
        "type": "string"
      },
      "ResponseContentDisposition": {
        "type": "string"
      },
      "ResponseContentEncoding": {
        "type": "string"
      },
      "ResponseContentLanguage": {
        "type": "string"
      },
      "ResponseContentType": {
        "type": "string"
      },
      "ResponseExpires": {
        "type": "string",
        "format": "date-time"
      },
      "GetObjectRequest": {
        "type": "object",
        "title": "GetObjectRequest",
        "properties": {}
      },
      "GetObjectTaggingRequest": {
        "type": "object",
        "title": "GetObjectTaggingRequest",
        "properties": {}
      },
      "PublicAccessBlockConfiguration": {
        "type": "object",
        "properties": {
          "BlockPublicAcls": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Setting"
              },
              {
                "description": "<p>Specifies whether IBM COS should block public access control lists (ACLs) for this bucket and objects in this bucket. Setting this element to `TRUE` causes the following behavior:</p> <ul> <li> <p>PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.</p> </li> <li> <p>PUT Object calls fail if the request includes a public ACL.</p> </li> <li> <p>PUT Bucket calls fail if the request includes a public ACL.</p> </li> </ul> <p>Enabling this setting doesn't affect existing policies or ACLs.</p>"
              }
            ]
          },
          "IgnorePublicAcls": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Setting"
              },
              {
                "description": "<p>Specifies whether IBM COS should ignore public ACLs for this bucket and objects in this bucket. Setting this element to `TRUE` causes IBM COS to ignore all public ACLs on this bucket and objects in this bucket.</p> <p>Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.</p>"
              }
            ]
          }
        },
        "description": "The PublicAccessBlock configuration that you want to apply to this IBM COS bucket. You can enable the configuration options in any combination. For more information about when IBM COS considers a bucket or object public, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status\">The Meaning of \"Public\"</a> in the <i>Amazon Simple Storage Service Developer Guide</i>. "
      },
      "GetPublicAccessBlockRequest": {
        "type": "object",
        "title": "GetPublicAccessBlockRequest",
        "properties": {}
      },
      "Grantee": {
        "type": "object",
        "required": [
          "Type"
        ],
        "properties": {
          "DisplayName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DisplayName"
              },
              {
                "description": "Screen name of the grantee."
              }
            ]
          },
          "EmailAddress": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EmailAddress"
              },
              {
                "description": "<p>Email address of the grantee.</p> <note> <p>Using email addresses to specify a grantee is only supported in the following AWS Regions: </p> <ul> <li> <p>US East (N. Virginia)</p> </li> <li> <p>US West (N. California)</p> </li> <li> <p> US West (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p> </li> <li> <p>Asia Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li> <p>Europe (Ireland)</p> </li> <li> <p>South America (São Paulo)</p> </li> </ul> <p>For a list of all the IBM COS supported Regions and endpoints, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region\">Regions and Endpoints</a> in the AWS General Reference.</p> </note>"
              }
            ]
          },
          "ID": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ID"
              },
              {
                "description": "The canonical user ID of the grantee."
              }
            ]
          },
          "Type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Type"
              },
              {
                "xml": {
                  "name": "xsi:type"
                },
                "description": "Type of grantee"
              }
            ]
          },
          "URI": {
            "allOf": [
              {
                "$ref": "#/components/schemas/URI"
              },
              {
                "description": "URI of the grantee group."
              }
            ]
          }
        },
        "description": "Container for the person being granted permissions.",
        "xml": {
          "namespace": "http://www.w3.org/2001/XMLSchema-instance",
          "attribute": true
        }
      },
      "Permission": {
        "type": "string",
        "enum": [
          "FULL_CONTROL",
          "WRITE",
          "WRITE_ACP",
          "READ",
          "READ_ACP"
        ]
      },
      "Grant": {
        "type": "object",
        "properties": {
          "Grantee": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Grantee"
              },
              {
                "description": "The person being granted permissions."
              }
            ]
          },
          "Permission": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Permission"
              },
              {
                "description": "Specifies the permission given to the grantee."
              }
            ]
          }
        },
        "description": "Container for grant information."
      },
      "ID": {
        "type": "string"
      },
      "Type": {
        "type": "string",
        "enum": [
          "CanonicalUser",
          "AmazonCustomerByEmail",
          "Group"
        ]
      },
      "URI": {
        "type": "string"
      },
      "HeadBucketRequest": {
        "type": "object",
        "title": "HeadBucketRequest",
        "properties": {}
      },
      "HeadObjectRequest": {
        "type": "object",
        "title": "HeadObjectRequest",
        "properties": {}
      },
      "HostName": {
        "type": "string"
      },
      "HttpRedirectCode": {
        "type": "string"
      },
      "Suffix": {
        "type": "string"
      },
      "Initiated": {
        "type": "string",
        "format": "date-time"
      },
      "Initiator": {
        "type": "object",
        "properties": {
          "ID": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ID"
              },
              {
                "description": "If the principal is an AWS account, it provides the Canonical User ID. If the principal is an IAM User, it provides a user ARN value."
              }
            ]
          },
          "DisplayName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DisplayName"
              },
              {
                "description": "Name of the Principal."
              }
            ]
          }
        },
        "description": "Container element that identifies who initiated the multipart upload. "
      },
      "IsPublic": {
        "type": "boolean"
      },
      "IsTruncated": {
        "type": "boolean"
      },
      "JSONType": {
        "type": "string",
        "enum": [
          "DOCUMENT",
          "LINES"
        ]
      },
      "KeyCount": {
        "type": "integer"
      },
      "KeyMarker": {
        "type": "string"
      },
      "LifecycleConfiguration": {
        "type": "object",
        "required": [
          "Rules"
        ],
        "properties": {
          "Rules": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Rules"
              },
              {
                "xml": {
                  "name": "Rule"
                },
                "description": "Specifies lifecycle configuration rules for an IBM COS bucket. "
              }
            ]
          }
        },
        "description": "Container for lifecycle rules. You can add as many as 1000 rules."
      },
      "LifecycleExpiration": {
        "type": "object",
        "properties": {
          "Date": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Date"
              },
              {
                "description": "Indicates at what date the object is to be moved or deleted. Should be in GMT ISO 8601 Format."
              }
            ]
          },
          "Days": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Days"
              },
              {
                "description": "Indicates the lifetime, in days, of the objects that are subject to the rule. The value must be a non-zero positive integer."
              }
            ]
          },
          "ExpiredObjectDeleteMarker": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ExpiredObjectDeleteMarker"
              },
              {
                "description": "Indicates whether IBM COS will remove a delete marker with no noncurrent versions. If set to true, the delete marker will be expired; if set to false the policy takes no action. This cannot be specified with Days or Date in a Lifecycle Expiration Policy."
              }
            ]
          }
        },
        "description": "Container for the expiration for the lifecycle of the object."
      },
      "LifecycleRuleFilter": {
        "type": "object",
        "properties": {
          "Prefix": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Prefix"
              },
              {
                "description": "Prefix identifying one or more objects to which the rule applies."
              }
            ]
          },
          "Tag": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Tag"
              },
              {
                "description": "This tag must exist in the object's tag set in order for the rule to apply."
              }
            ]
          },
          "And": {
            "$ref": "#/components/schemas/LifecycleRuleAndOperator"
          }
        },
        "description": "The `Filter` is used to identify objects that a Lifecycle Rule applies to. A `Filter` must have exactly one of `Prefix`, `Tag`, or `And` specified."
      },
      "TransitionList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Transition"
        },
        "xml": {
          "wrapped": false
        }
      },
      "LifecycleRule": {
        "type": "object",
        "required": [
          "Status"
        ],
        "properties": {
          "Expiration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LifecycleExpiration"
              },
              {
                "description": "Specifies the expiration for the lifecycle of the object in the form of date, days and, whether the object has a delete marker."
              }
            ]
          },
          "ID": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ID"
              },
              {
                "description": "Unique identifier for the rule. The value cannot be longer than 255 characters."
              }
            ]
          },
          "Prefix": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Prefix"
              },
              {
                "deprecated": true,
                "description": "Prefix identifying one or more objects to which the rule applies. This is No longer used; use `Filter` instead."
              }
            ]
          },
          "Filter": {
            "$ref": "#/components/schemas/LifecycleRuleFilter"
          },
          "Status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ExpirationStatus"
              },
              {
                "description": "If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is not currently being applied."
              }
            ]
          },
          "Transitions": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransitionList"
              },
              {
                "xml": {
                  "name": "Transition"
                },
                "description": "Specifies when an IBM COS object transitions to a specified storage class."
              }
            ]
          }
        },
        "description": "A lifecycle rule for individual objects in an IBM COS bucket."
      },
      "ReplicationRule": {
        "type": "object",
        "required": [
          "Status"
        ],
        "properties": {
          "ID": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ID"
              },
              {
                "description": "Unique identifier for the rule. The value cannot be longer than 255 characters."
              }
            ]
          },
          "Priority": {
            "type": "string",
            "description": "The priority indicates which rule has precedence whenever two or more replication rules conflict. Object storage will attempt to replicate objects according to all replication rules. However, if there are two or more rules with the same destination bucket, then objects will be replicated according to the rule with the highest priority."
          },
          "Filter": {
            "$ref": "#/components/schemas/LifecycleRuleFilter"
          },
          "Status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ExpirationStatus"
              },
              {
                "description": "If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is not currently being applied."
              }
            ]
          },
          "Destination": {
            "type": "object",
            "properties": {
              "Bucket": {
                "type": "string",
                "description": "The CRN of the destination bucket."
              }
            }
          },
          "DeleteMarkerReplication": {
            "type": "object",
            "properties": {
              "Status": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ExpirationStatus"
                  }
                ]
              }
            }
          }
        },
        "description": "A replication rule for individual objects in an IBM COS bucket."
      },
      "LifecycleRuleAndOperator": {
        "type": "object",
        "properties": {
          "Prefix": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Prefix"
              },
              {
                "description": "Prefix identifying one or more objects to which the rule applies."
              }
            ]
          },
          "Tags": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TagSet"
              },
              {
                "xml": {
                  "name": "Tag"
                },
                "description": "All of these tags must exist in the object's tag set in order for the rule to apply."
              }
            ]
          }
        },
        "description": "This is used in a Lifecycle Rule Filter to apply a logical AND to two or more predicates. The Lifecycle Rule will apply to any object matching all of the predicates configured inside the And operator.",
        "xml": {
          "wrapped": false
        }
      },
      "Token": {
        "type": "string"
      },
      "NextToken": {
        "type": "string"
      },
      "UploadIdMarker": {
        "type": "string"
      },
      "NextKeyMarker": {
        "type": "string"
      },
      "NextUploadIdMarker": {
        "type": "string"
      },
      "MaxUploads": {
        "type": "integer"
      },
      "MultipartUploadList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/MultipartUpload"
        },
        "xml": {
          "wrapped": false
        }
      },
      "ListMultipartUploadsRequest": {
        "type": "object",
        "title": "ListMultipartUploadsRequest",
        "properties": {}
      },
      "MaxKeys": {
        "type": "integer"
      },
      "Marker": {
        "type": "string"
      },
      "NextMarker": {
        "type": "string"
      },
      "ObjectList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Object"
        },
        "xml": {
          "wrapped": false
        }
      },
      "ListObjectsRequest": {
        "type": "object",
        "title": "ListObjectsRequest",
        "properties": {}
      },
      "StartAfter": {
        "type": "string"
      },
      "ListObjectsV2Request": {
        "type": "object",
        "title": "ListObjectsV2Request",
        "properties": {}
      },
      "PartNumberMarker": {
        "type": "integer"
      },
      "NextPartNumberMarker": {
        "type": "integer"
      },
      "MaxParts": {
        "type": "integer"
      },
      "Parts": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Part"
        },
        "xml": {
          "wrapped": false
        }
      },
      "ListPartsRequest": {
        "type": "object",
        "title": "ListPartsRequest",
        "properties": {}
      },
      "LocationPrefix": {
        "type": "string"
      },
      "TargetBucket": {
        "type": "string"
      },
      "TargetPrefix": {
        "type": "string"
      },
      "MetadataKey": {
        "type": "string"
      },
      "MetadataEntry": {
        "type": "object",
        "properties": {
          "Name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetadataKey"
              },
              {
                "description": "Name of the Object."
              }
            ]
          },
          "Value": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetadataValue"
              },
              {
                "description": "Value of the Object."
              }
            ]
          }
        },
        "description": "A metadata key-value pair to store with an object."
      },
      "Minutes": {
        "type": "integer"
      },
      "MultipartUpload": {
        "type": "object",
        "properties": {
          "UploadId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MultipartUploadId"
              },
              {
                "description": "Upload ID that identifies the multipart upload."
              }
            ]
          },
          "Key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectKey"
              },
              {
                "description": "Key of the object for which the multipart upload was initiated."
              }
            ]
          },
          "Initiated": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Initiated"
              },
              {
                "description": "Date and time at which the multipart upload was initiated."
              }
            ]
          },
          "StorageClass": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StorageClass"
              },
              {
                "description": "The class of storage used to store the object."
              }
            ]
          },
          "Owner": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Owner"
              },
              {
                "description": "Specifies the owner of the object that is part of the multipart upload. "
              }
            ]
          },
          "Initiator": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Initiator"
              },
              {
                "description": "Identifies who initiated the multipart upload."
              }
            ]
          }
        },
        "description": "Container for the `MultipartUpload` for the IBM COS object."
      },
      "TransitionStorageClass": {
        "type": "string",
        "enum": [
          "GLACIER",
          "ACCELERATED"
        ]
      },
      "S3KeyFilter": {
        "type": "object",
        "properties": {
          "FilterRules": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FilterRuleList"
              },
              {
                "xml": {
                  "name": "FilterRule"
                }
              }
            ]
          }
        },
        "description": "A container for object key name prefix and suffix filtering rules."
      },
      "Size": {
        "type": "integer"
      },
      "ObjectStorageClass": {
        "type": "string",
        "enum": [
          "STANDARD",
          "ACCELERATED",
          "GLACIER"
        ]
      },
      "Object": {
        "type": "object",
        "properties": {
          "Key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectKey"
              },
              {
                "description": "The name that you assign to an object. You use the object key to retrieve the object."
              }
            ]
          },
          "LastModified": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LastModified"
              },
              {
                "description": "The date the Object was Last Modified"
              }
            ]
          },
          "ETag": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ETag"
              },
              {
                "description": "<p>The entity tag is a hash of the object. The ETag reflects changes only to the contents of an object, not its metadata. The ETag may or may not be an MD5 digest of the object data. Whether or not it is depends on how the object was created and how it is encrypted as described below:</p> <ul> <li> <p>Objects created by the PUT Object, POST Object, or Copy operation, or through the AWS Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that are an MD5 digest of their object data.</p> </li> <li> <p>Objects created by the PUT Object, POST Object, or Copy operation, or through the AWS Management Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are not an MD5 digest of their object data.</p> </li> <li> <p>If an object is created by either the Multipart Upload or Part Copy operation, the ETag is not an MD5 digest, regardless of the method of encryption.</p> </li> </ul>"
              }
            ]
          },
          "Size": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Size"
              },
              {
                "description": "Size in bytes of the object"
              }
            ]
          },
          "StorageClass": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectStorageClass"
              },
              {
                "description": "The class of storage used to store the object."
              }
            ]
          },
          "Owner": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Owner"
              },
              {
                "description": "The owner of the object"
              }
            ]
          }
        },
        "description": "An object consists of data and its descriptive metadata."
      },
      "ObjectIdentifier": {
        "type": "object",
        "required": [
          "Key"
        ],
        "properties": {
          "Key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectKey"
              },
              {
                "description": "Key name of the object to delete."
              }
            ]
          }
        },
        "description": "Object Identifier is unique value to identify objects."
      },
      "S3Location": {
        "type": "object",
        "required": [
          "BucketName",
          "Prefix"
        ],
        "properties": {
          "BucketName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketName"
              },
              {
                "description": "The name of the bucket where the restore results will be placed."
              }
            ]
          },
          "Prefix": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LocationPrefix"
              },
              {
                "description": "The prefix that is prepended to the restore results for this request."
              }
            ]
          },
          "CannedACL": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ObjectCannedACL"
              },
              {
                "description": "The canned ACL to apply to the restore results."
              }
            ]
          },
          "AccessControlList": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Grants"
              },
              {
                "description": "A list of grants that control access to the staged results."
              }
            ]
          },
          "Tagging": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Tagging"
              },
              {
                "description": "The tag-set that is applied to the restore results."
              }
            ]
          },
          "UserMetadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserMetadata"
              },
              {
                "description": "A list of metadata to store with the restore results in S3."
              }
            ]
          },
          "StorageClass": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StorageClass"
              },
              {
                "description": "The class of storage used to store the restore results."
              }
            ]
          }
        },
        "description": "Describes an IBM COS location that will receive the results of the restore request."
      },
      "Part": {
        "type": "object",
        "properties": {
          "PartNumber": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PartNumber"
              },
              {
                "description": "Part number identifying the part. This is a positive integer between 1 and 10,000."
              }
            ]
          },
          "LastModified": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LastModified"
              },
              {
                "description": "Date and time at which the part was uploaded."
              }
            ]
          },
          "ETag": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ETag"
              },
              {
                "description": "Entity tag returned when the part was uploaded."
              }
            ]
          },
          "Size": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Size"
              },
              {
                "description": "Size in bytes of the uploaded part data."
              }
            ]
          }
        },
        "description": "Container for elements related to a part."
      },
      "Protocol": {
        "type": "string",
        "enum": [
          "http",
          "https"
        ]
      },
      "PutBucketCorsRequest": {
        "type": "object",
        "required": [
          "CORSConfiguration"
        ],
        "title": "PutBucketCorsRequest",
        "properties": {
          "CORSConfiguration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CORSConfiguration"
              },
              {
                "description": "Describes the cross-origin access configuration for objects in an IBM COS bucket. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html\">Enabling Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service Developer Guide</i>."
              }
            ]
          }
        },
        "xml": {
          "namespace": "http://s3.amazonaws.com/doc/2006-03-01/"
        }
      },
      "PutBucketLifecycleConfigurationRequest": {
        "type": "object",
        "title": "PutBucketLifecycleConfigurationRequest",
        "properties": {
          "LifecycleConfiguration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BucketLifecycleConfiguration"
              },
              {
                "description": "Container for lifecycle rules. You can add as many as 1,000 rules."
              }
            ]
          }
        },
        "xml": {
          "namespace": "http://s3.amazonaws.com/doc/2006-03-01/"
        }
      },
      "Tagging": {
        "type": "object",
        "required": [
          "TagSet"
        ],
        "properties": {
          "TagSet": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TagSet"
              },
              {
                "description": "A collection for a set of tags"
              }
            ]
          }
        },
        "description": "Container for `TagSet` elements."
      },
      "WebsiteConfiguration": {
        "type": "object",
        "properties": {
          "ErrorDocument": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorDocument"
              },
              {
                "description": "The name of the error document for the website."
              }
            ]
          },
          "IndexDocument": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IndexDocument"
              },
              {
                "description": "The name of the index document for the website."
              }
            ]
          },
          "RedirectAllRequestsTo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RedirectAllRequestsTo"
              },
              {
                "description": "<p>The redirect behavior for every request to this bucket's website endpoint.</p> <important> <p>If you specify this property, you can't specify any other property.</p> </important>"
              }
            ]
          },
          "RoutingRules": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RoutingRules"
              },
              {
                "description": "Rules that define when a redirect is applied and the redirect behavior."
              }
            ]
          }
        },
        "description": "Specifies website configuration parameters for an IBM COS bucket."
      },
      "PutBucketWebsiteRequest": {
        "type": "object",
        "required": [
          "WebsiteConfiguration"
        ],
        "title": "PutBucketWebsiteRequest",
        "properties": {
          "WebsiteConfiguration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/WebsiteConfiguration"
              },
              {
                "description": "Container for the request."
              }
            ]
          }
        },
        "xml": {
          "namespace": "http://s3.amazonaws.com/doc/2006-03-01/"
        }
      },
      "PutObjectAclRequest": {
        "type": "object",
        "title": "PutObjectAclRequest",
        "properties": {
          "AccessControlPolicy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AccessControlPolicy"
              },
              {
                "description": "Contains the elements that set the ACL permissions for an object per grantee."
              }
            ]
          }
        },
        "xml": {
          "namespace": "http://s3.amazonaws.com/doc/2006-03-01/"
        }
      },
      "PutObjectRequest": {
        "type": "object",
        "title": "PutObjectRequest",
        "properties": {
          "Body": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Body"
              },
              {
                "description": "Object data."
              }
            ]
          },
          "Metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Metadata"
              },
              {
                "xml": {
                  "name": "x-amz-meta-"
                },
                "description": "A map of metadata to store with the object in S3."
              }
            ]
          }
        }
      },
      "PutObjectTaggingRequest": {
        "type": "object",
        "required": [
          "Tagging"
        ],
        "title": "PutObjectTaggingRequest",
        "properties": {
          "Tagging": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Tagging"
              },
              {
                "description": "Container for the `TagSet` and `Tag` elements"
              }
            ]
          }
        },
        "xml": {
          "namespace": "http://s3.amazonaws.com/doc/2006-03-01/"
        }
      },
      "PutPublicAccessBlockRequest": {
        "type": "object",
        "required": [
          "PublicAccessBlockConfiguration"
        ],
        "title": "PutPublicAccessBlockRequest",
        "properties": {
          "PublicAccessBlockConfiguration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAccessBlockConfiguration"
              },
              {
                "description": "The `PublicAccessBlock` configuration that you want to apply to this IBM COS bucket. You can enable the configuration options in any combination. For more information about when IBM COS considers a bucket or object public, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status\">The Meaning of \"Public\"</a> in the <i>Amazon Simple Storage Service Developer Guide</i>."
              }
            ]
          }
        },
        "xml": {
          "namespace": "http://s3.amazonaws.com/doc/2006-03-01/"
        }
      },
      "ReplaceKeyPrefixWith": {
        "type": "string"
      },
      "ReplaceKeyWith": {
        "type": "string"
      },
      "Redirect": {
        "type": "object",
        "properties": {
          "HostName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/HostName"
              },
              {
                "description": "The host name to use in the redirect request."
              }
            ]
          },
          "HttpRedirectCode": {
            "allOf": [
              {
                "$ref": "#/components/schemas/HttpRedirectCode"
              },
              {
                "description": "The HTTP redirect code to use on the response. Not required if one of the siblings is present."
              }
            ]
          },
          "Protocol": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Protocol"
              },
              {
                "description": "Protocol to use when redirecting requests. The default is the protocol that is used in the original request."
              }
            ]
          },
          "ReplaceKeyPrefixWith": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ReplaceKeyPrefixWith"
              },
              {
                "description": "The object key prefix to use in the redirect request. For example, to redirect requests for all pages with prefix `docs/` (objects in the `docs/` folder) to `documents/`, you can set a condition block with `KeyPrefixEquals` set to `docs/` and in the Redirect set `ReplaceKeyPrefixWith` to `/documents`. Not required if one of the siblings is present. Can be present only if `ReplaceKeyWith` is not provided."
              }
            ]
          },
          "ReplaceKeyWith": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ReplaceKeyWith"
              },
              {
                "description": "The specific object key to use in the redirect request. For example, redirect request to `error.html`. Not required if one of the siblings is present. Can be present only if `ReplaceKeyPrefixWith` is not provided."
              }
            ]
          }
        },
        "description": "Specifies how requests are redirected. In the event of an error, you can specify a different error code to return."
      },
      "RestoreOutputPath": {
        "type": "string"
      },
      "RestoreRequest": {
        "type": "object",
        "properties": {
          "Days": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Days"
              },
              {
                "description": "Lifetime of the active copy in days. Do not use with restores that specify `OutputLocation`."
              }
            ]
          },
          "GlacierJobParameters": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GlacierJobParameters"
              },
              {
                "description": "S3 Glacier related parameters pertaining to this job. Do not use with restores that specify `OutputLocation`."
              }
            ]
          },
          "Type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RestoreRequestType"
              },
              {
                "description": "Type of restore request."
              }
            ]
          },
          "Tier": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Tier"
              },
              {
                "description": "S3 Glacier retrieval tier at which the restore will be processed."
              }
            ]
          },
          "Description": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Description"
              },
              {
                "description": "The optional description for the job."
              }
            ]
          },
          "OutputLocation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OutputLocation"
              },
              {
                "description": "Describes the location where the restore job's output is stored."
              }
            ]
          }
        },
        "description": "Container for restore job parameters."
      },
      "RestoreObjectRequest": {
        "type": "object",
        "title": "RestoreObjectRequest",
        "properties": {
          "RestoreRequest": {
            "$ref": "#/components/schemas/RestoreRequest"
          }
        },
        "xml": {
          "namespace": "http://s3.amazonaws.com/doc/2006-03-01/"
        }
      },
      "RoutingRule": {
        "type": "object",
        "required": [
          "Redirect"
        ],
        "properties": {
          "Condition": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Condition"
              },
              {
                "description": "A container for describing a condition that must be met for the specified redirect to apply. For example, 1. If request is for pages in the `/docs` folder, redirect to the `/documents` folder. 2. If request results in HTTP error 4xx, redirect request to another host where you might process the error."
              }
            ]
          },
          "Redirect": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Redirect"
              },
              {
                "description": "Container for redirect information. You can redirect requests to another host, to another page, or with another protocol. In the event of an error, you can specify a different error code to return."
              }
            ]
          }
        },
        "description": "Specifies the redirect behavior and when a redirect is applied. For more information about routing rules, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html#advanced-conditional-redirects\">Configuring advanced conditional redirects</a> in the <i>Amazon Simple Storage Service Developer Guide</i>."
      },
      "Transition": {
        "type": "object",
        "properties": {
          "Date": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Date"
              },
              {
                "description": "Indicates when objects are transitioned to the specified storage class. The date value must be in ISO 8601 format. The time is always midnight UTC."
              }
            ]
          },
          "Days": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Days"
              },
              {
                "description": "Indicates the number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer."
              }
            ]
          },
          "StorageClass": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransitionStorageClass"
              },
              {
                "description": "The storage class to which you want the object to transition."
              }
            ]
          }
        },
        "description": "Specifies when an object transitions to a specified storage class."
      },
      "Rule": {
        "type": "object",
        "required": [
          "Prefix",
          "Status"
        ],
        "properties": {
          "Expiration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LifecycleExpiration"
              },
              {
                "description": "Specifies the expiration for the lifecycle of the object."
              }
            ]
          },
          "ID": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ID"
              },
              {
                "description": "Unique identifier for the rule. The value can't be longer than 255 characters."
              }
            ]
          },
          "Prefix": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Prefix"
              },
              {
                "description": "Object key prefix that identifies one or more objects to which this rule applies."
              }
            ]
          },
          "Status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ExpirationStatus"
              },
              {
                "description": "If `Enabled`, the rule is currently being applied. If `Disabled`, the rule is not currently being applied."
              }
            ]
          },
          "Transition": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Transition"
              },
              {
                "description": "Specifies when an object transitions to an archived state."
              }
            ]
          }
        },
        "description": "Specifies lifecycle rules for a bucket."
      },
      "UserMetadata": {
        "type": "array",
        "items": {
          "allOf": [
            {
              "$ref": "#/components/schemas/MetadataEntry"
            },
            {
              "xml": {
                "name": "MetadataEntry"
              }
            }
          ]
        }
      },
      "Value": {
        "type": "string"
      },
      "UploadPartCopyRequest": {
        "type": "object",
        "title": "UploadPartCopyRequest",
        "properties": {}
      },
      "UploadPartRequest": {
        "type": "object",
        "title": "UploadPartRequest",
        "properties": {
          "Body": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Body"
              },
              {
                "description": "Object data."
              }
            ]
          }
        }
      },
      "Protection": {
        "description": "Specifies protection configuration for a bucket.",
        "type": "object",
        "xml": {
          "wrapped": true,
          "name": "ProtectionConfiguration"
        },
        "required": [
          "status",
          "minimumRetention",
          "maximumRetention",
          "defaultRetention"
        ],
        "properties": {
          "status": {
            "type": "string",
            "description": "Indicator that the bucket has an active retention policy.",
            "xml": {
              "name": "Status"
            },
            "enum": [
              "Enabled"
            ]
          },
          "minimumRetention": {
            "type": "object",
            "xml": {
              "name": "MinimumRetention"
            },
            "properties": {
              "days": {
                "xml": {
                  "name": "Days"
                },
                "type": "integer",
                "description": "Minimum number of days that an object may be protected.",
                "minimum": 0,
                "maximum": 365243,
                "example": 7
              }
            }
          },
          "maximumRetention": {
            "type": "object",
            "xml": {
              "name": "MaximumRetention"
            },
            "properties": {
              "days": {
                "xml": {
                  "name": "Days"
                },
                "type": "integer",
                "description": "Maximum number of days that an object may be protected.",
                "minimum": 0,
                "maximum": 365243,
                "example": 365
              }
            }
          },
          "defaultRetention": {
            "type": "object",
            "xml": {
              "name": "DefaultRetention"
            },
            "properties": {
              "days": {
                "xml": {
                  "name": "Days"
                },
                "type": "integer",
                "description": "Default number of days that a new object is protected.",
                "minimum": 0,
                "maximum": 365243,
                "example": 1
              }
            }
          }
        }
      },
      "BucketListing": {
        "description": "This operation returns a list of all buckets within a service instance.",
        "type": "object",
        "xml": {
          "wrapped": true,
          "name": "ListAllMyBucketsResult"
        },
        "properties": {
          "owner": {
            "type": "object",
            "xml": {
              "name": "Owner"
            },
            "properties": {
              "id": {
                "xml": {
                  "name": "ID"
                },
                "type": "string",
                "description": "Service instance ID.",
                "example": "d6f76k03-6k4f-4a82-n165-697654o63903"
              },
              "displayName": {
                "xml": {
                  "name": "DisplayName"
                },
                "type": "string",
                "description": "Service instance ID.",
                "example": "d6f76k03-6k4f-4a82-n165-697654o63903"
              }
            }
          },
          "buckets": {
            "type": "array",
            "xml": {
              "name": "Buckets"
            },
            "items": {
              "type": "object",
              "xml": {
                "name": "Bucket"
              },
              "properties": {
                "name": {
                  "xml": {
                    "name": "Name"
                  },
                  "type": "string",
                  "description": "Bucket name.",
                  "example": "myBucket"
                },
                "creationDate": {
                  "xml": {
                    "name": "CreationDate"
                  },
                  "type": "string",
                  "format": "date-time",
                  "description": "Timestamp of bucket creation.",
                  "example": "2019-04-29T20:49:22.374Z"
                }
              }
            }
          }
        }
      }
    }
  }
}