openapi: 3.2.0 info: description: 'Amazon S3 Compatibility API supported by the Oracle Cloud Infrastructure Object Storage Service. See [Understanding Object Storage Namespaces](/Content/Object/Tasks/understandingnamespaces.htm) for information about Object Storage namespaces and how to get your namespace string. ' license: name: Oracle Corporation title: Amazon S3 Compatibility S3 Object Storage API version: '20160918' x-provenance: method: harvested first_party: true publisher: Oracle source: https://docs.oracle.com/en-us/iaas/api/specs/9e2da9aadeefd1443d7c5b128aaa328b373918e6b46cc11aa15a86db6ec8107b.yaml harvested: '2026-08-04' note: Published by Oracle as the contract for the Amazon S3 Compatibility API OCI service and stored verbatim; API Evangelist added only this provenance block. x-evidence: - url: https://docs.oracle.com/en-us/iaas/api/specs/index.json what: Oracle's own index of every OCI service specification - url: https://docs.oracle.com/en-us/iaas/api/specs/9e2da9aadeefd1443d7c5b128aaa328b373918e6b46cc11aa15a86db6ec8107b.yaml what: the harvested document for Amazon S3 Compatibility API servers: - url: https://localhost:9060/ tags: - name: s3ObjectStorage paths: /: get: description: 'Lists all buckets owned by the authenticated sender of the request. ' operationId: GetService parameters: - $ref: '#/components/parameters/OptionalDateTimeHeader' responses: 200: description: A list of all of the buckets owned by the authenticated sender of the request. headers: opc-request-id: description: 'Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, provide this request ID. ' schema: type: string content: application/xml: schema: $ref: '#/components/schemas/ListAllMyBuckets' 400: $ref: '#/components/responses/BadRequest' 401: $ref: '#/components/responses/NotAuthenticated' 403: $ref: '#/components/responses/Forbidden' 408: $ref: '#/components/responses/RequestTimeout' 500: $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/Error' summary: GET Service (List Buckets) tags: - s3ObjectStorage x-example: 'GET / HTTP/1.1 Host: <object_storage_namespace>.compat.objectstorage.us-phoenix-1.oraclecloud.com Date: Fri, 12 Aug 2016 22:42:15 GMT Authorization: <authorization_string> ' x-related-resource: '#/definitions/Bucket' /{bucketName}: delete: description: 'Deletes a bucket. All objects in the bucket must be deleted before the bucket itself can be deleted. ' operationId: DeleteBucket parameters: - $ref: '#/components/parameters/BucketPathParam' - $ref: '#/components/parameters/OptionalDateTimeHeader' responses: 204: description: The response body is always empty. headers: opc-request-id: description: 'Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, provide this request ID. ' schema: type: string 400: $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotAuthorizedOrNotFound' 408: $ref: '#/components/responses/RequestTimeout' 409: $ref: '#/components/responses/NotAuthorizedOrInternalConflict' 500: $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/Error' summary: DELETE Bucket tags: - s3ObjectStorage x-example: 'DELETE /example_bucket HTTP/1.1 Host: <object_storage_namespace>.compat.objectstorage.us-phoenix-1.oraclecloud.com Date: Fri, 12 Aug 2016 22:52:33 GMT Authorization: <authorization_string> ' x-related-resource: '#/definitions/Bucket' get: description: 'Lists up to 1000 objects in the specified bucket. ' operationId: ListObjects parameters: - $ref: '#/components/parameters/BucketPathParam' - $ref: '#/components/parameters/DelimiterQueryParam' - $ref: '#/components/parameters/EncodingTypeQueryParam' - $ref: '#/components/parameters/MaxKeysQueryParam' - $ref: '#/components/parameters/PrefixQueryParam' - $ref: '#/components/parameters/ContinuationTokenQueryParam' - $ref: '#/components/parameters/StartAfterQueryParam' - $ref: '#/components/parameters/OptionalDateTimeHeader' responses: 200: description: A list of objects in the bucket. headers: opc-request-id: description: 'Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, provide this request ID. ' schema: type: string content: application/xml: schema: $ref: '#/components/schemas/ListBucket' 400: $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotAuthorizedOrNotFound' 408: $ref: '#/components/responses/RequestTimeout' 500: $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/Error' summary: GET Bucket (List Objects) tags: - s3ObjectStorage x-example: 'GET /example_bucket HTTP/1.1 Host: <object_storage_namespace>.compat.objectstorage.us-phoenix-1.oraclecloud.com Date: Fri, 12 Aug 2016 22:52:33 GMT Authorization: <authorization_string> ' x-related-resource: '#/definitions/Bucket' head: description: 'Checks to see if a bucket exists and that the requester has permission to access it. ' operationId: HeadBucket parameters: - $ref: '#/components/parameters/BucketPathParam' - $ref: '#/components/parameters/OptionalDateTimeHeader' responses: 200: description: The bucket exists and access is authorized. headers: ETag: description: The current entity tag for the bucket. schema: type: string opc-request-id: description: 'Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, provide this request ID. ' schema: type: string 400: $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotAuthorizedOrNotFound' 408: $ref: '#/components/responses/RequestTimeout' 500: $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/Error' summary: HEAD Bucket tags: - s3ObjectStorage x-example: 'HEAD /example_bucket HTTP/1.1 Host: <object_storage_namespace>.compat.objectstorage.us-phoenix-1.oraclecloud.com Date: Fri, 12 Aug 2016 22:52:33 GMT Authorization: <authorization_string> Connection: Keep-Alive ' x-related-resource: '#/definitions/Bucket' put: description: 'Creates a new bucket. ' operationId: PutBucket parameters: - $ref: '#/components/parameters/BucketPathParam' - $ref: '#/components/parameters/OptionalDateTimeHeader' responses: 200: description: The bucket was successfully created. headers: opc-request-id: description: 'Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, provide this request ID. ' schema: type: string 400: $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotAuthorizedOrNotFound' 408: $ref: '#/components/responses/RequestTimeout' 409: $ref: '#/components/responses/NotAuthorizedOrInternalConflict' 500: $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/Error' summary: PUT Bucket (Create Bucket) tags: - s3ObjectStorage x-example: 'PUT /example_bucket HTTP/1.1 Host: <object_storage_namespace>.compat.objectstorage.us-phoenix-1.oraclecloud.com Content-Length: 0 Date: Fri, 12 Aug 2016 22:52:33 GMT Authorization: <authorization_string> ' x-related-resource: '#/definitions/Bucket' /{bucketName}?tagging: delete: description: 'Delete the tags from a bucket. ' operationId: DeleteBucketTagging parameters: - $ref: '#/components/parameters/BucketPathParam' - $ref: '#/components/parameters/OptionalDateTimeHeader' responses: 204: description: The response body is always empty. headers: opc-request-id: description: 'Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, provide this request ID. ' schema: type: string 400: $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotAuthorizedOrNotFound' 408: $ref: '#/components/responses/RequestTimeout' 409: $ref: '#/components/responses/NotAuthorizedOrInternalConflict' 500: $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/Error' summary: DeleteBucketTagging tags: - s3ObjectStorage x-example: 'DELETE /example_bucket?tagging HTTP/1.1 Host: <object_storage_namespace>.compat.objectstorage.us-phoenix-1.oraclecloud.com Date: Fri, 12 Aug 2016 22:52:33 GMT Authorization: <authorization_string> ' x-related-resource: '#/definitions/Tagging' get: description: 'Gets the list of tags for a bucket. ' operationId: GetBucketTagging parameters: - $ref: '#/components/parameters/BucketPathParam' - $ref: '#/components/parameters/OptionalDateTimeHeader' responses: 200: description: List of tags for a given bucket. headers: opc-request-id: description: 'Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, provide this request ID. ' schema: type: string content: application/xml: schema: $ref: '#/components/schemas/Tagging' 400: $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotAuthorizedOrNotFound' 408: $ref: '#/components/responses/RequestTimeout' 500: $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/Error' summary: GetBucketTagging tags: - s3ObjectStorage x-example: 'GET /example_bucket?tagging HTTP/1.1 Host: <object_storage_namespace>.compat.objectstorage.us-phoenix-1.oraclecloud.com Date: Fri, 12 Aug 2016 22:52:33 GMT Authorization: <authorization_string> ' x-related-resource: '#/definitions/Tagging' put: description: 'Add tags to a bucket. ' operationId: PutBucketTagging parameters: - $ref: '#/components/parameters/BucketPathParam' - $ref: '#/components/parameters/OptionalDateTimeHeader' responses: 204: description: The tags were successfully added to the bucket. headers: opc-request-id: description: 'Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, provide this request ID. ' schema: type: string 400: $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotAuthorizedOrNotFound' 408: $ref: '#/components/responses/RequestTimeout' 409: $ref: '#/components/responses/NotAuthorizedOrInternalConflict' 500: $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/Error' summary: PutBucketTagging tags: - s3ObjectStorage x-example: 'PUT /example_bucket?tagging HTTP/1.1 Host: <object_storage_namespace>.compat.objectstorage.us-phoenix-1.oraclecloud.com Content-Length: 1660 x-amz-date: Thu, 12 Apr 2012 20:04:21 GMT Authorization: <authorization_string> ' x-example-literal: "\n \n \n Project\n ProjectX\n \n \n User\n jdoe\n \n \n\n" x-related-resource: '#/definitions/Tagging' requestBody: content: application/xml: schema: $ref: '#/components/schemas/Tagging' description: Adds tags to the given bucket. required: true components: responses: NotAuthorizedOrInternalConflict: description: Conflict headers: opc-request-id: description: Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, please provide the request ID. schema: type: string content: application/xml: schema: $ref: '#/components/schemas/Error' Forbidden: description: Forbidden headers: opc-request-id: description: Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, please provide the request ID. schema: type: string content: application/xml: schema: $ref: '#/components/schemas/Error' RequestTimeout: description: Request Timeout headers: opc-request-id: description: Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, please provide the request ID. schema: type: string content: application/xml: schema: $ref: '#/components/schemas/Error' InternalServerError: description: Internal Server Error headers: opc-request-id: description: Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, please provide the request ID. schema: type: string content: application/xml: schema: $ref: '#/components/schemas/Error' NotAuthenticated: description: Unauthorized headers: opc-request-id: description: Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, please provide the request ID. schema: type: string content: application/xml: schema: $ref: '#/components/schemas/Error' BadRequest: description: Bad Request headers: opc-request-id: description: Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, please provide the request ID. schema: type: string content: application/xml: schema: $ref: '#/components/schemas/Error' NotAuthorizedOrNotFound: description: Not Found headers: opc-request-id: description: Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, please provide the request ID. schema: type: string content: application/xml: schema: $ref: '#/components/schemas/Error' Error: description: A description of an error that occurred. headers: opc-request-id: description: 'Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, provide this request ID. ' schema: type: string content: application/xml: schema: $ref: '#/components/schemas/Error' parameters: BucketPathParam: description: 'The name of the bucket. Avoid entering confidential information. Example: `my-new-bucket1` ' in: path name: bucketName required: true schema: type: string minLength: 1 pattern: '[A-Za-z0-9\\-_\\.]+' ContinuationTokenQueryParam: description: The token at which to start listing the next set of results when the previous response is truncated. in: query name: continuation-token schema: type: string maxLength: 1024 minLength: 1 OptionalDateTimeHeader: description: The current date and time according to the requester. Takes precedence over the Date header. in: header name: x-amz-date schema: type: string format: date-time EncodingTypeQueryParam: description: 'When this parameter is set, the response is encoded with the specified encoding method. This can be used for object keys containing characters that XML 1.0 parsers cannot parse. ' in: query name: encoding-type schema: type: string StartAfterQueryParam: description: Object keys returned by a list query must be after this parameter in lexicographical order. in: query name: start-after schema: type: string MaxKeysQueryParam: description: The maximum number of keys to return in the response body. in: query name: max-keys schema: type: integer maximum: 1000 minimum: 1 DelimiterQueryParam: description: 'When this parameter is set, only objects whose names do not contain the delimiter character (after an optionally specified prefix) are returned. Scanned objects whose names contain the delimiter have part of their name up to the last occurrence of the delimiter (after the optional prefix) returned as a set of prefixes. Note that only ''/'' is a supported delimiter character at this time. ' in: query name: delimiter schema: type: string PrefixQueryParam: description: The string to use for matching against the start of keys in a list query. in: query name: prefix schema: type: string schemas: Error: properties: code: description: A short error code that defines the error, meant for programmatic parsing. type: string message: description: A human-readable error string. type: string required: - code - message Owner: description: Container for information about the bucket owner. properties: displayName: description: Bucket owner's display name. type: string xml: name: DisplayName id: description: Bucket owner's user ID. type: string xml: name: ID required: - id - displayName Tagging: description: Container for one TagSet. items: $ref: '#/components/schemas/TagSet' type: array CommonPrefixes: description: Contains a key (if it exists) between Prefix and the next occurrence of the delimiter. properties: prefix: description: A substring from the beginning to the first occurrence of the specified delimiter after the prefix. type: string xml: name: Prefix required: - prefix ListBucket: description: 'To use any of the API operations, you must be authorized in an IAM policy. If you''re not authorized, talk to an administrator. If you''re an administrator who needs to write policies to give users access, see [Getting Started with Policies](/Content/Identity/Concepts/policygetstarted.htm). ' properties: commonPrefixes: description: Contains all (existing) keys between Prefix and the next occurrence of the delimiter. items: $ref: '#/components/schemas/CommonPrefixes' type: array contents: description: Metadata returned for each object. items: $ref: '#/components/schemas/Contents' type: array continuationToken: description: Included in the response if it was sent with the request. type: string xml: name: ContinuationToken delimiter: description: Included in the response if it was sent with the request. type: string xml: name: Delimiter isTruncated: description: Specifies whether or not all of the results are returned. type: boolean xml: name: IsTruncated keyCount: description: The number of keys included in the response. type: integer xml: name: KeyCount maxKeys: description: The maximum number of keys included in the response body. type: integer xml: name: MaxKeys name: description: Name of the bucket. Avoid entering confidential information. type: string xml: name: Name nextContinuationToken: description: If the response is truncated, this can be used in the next request to retrieve the next set of keys. type: string xml: name: NextContinuationToken prefix: description: The specified prefix that returned keys should start with. type: string xml: name: Prefix startAfter: description: Included in the response if it was sent with the request. type: string xml: name: StartAfter required: - name - keyCount - maxKeys - isTruncated - contents TagSet: description: Container for a list of tags. items: $ref: '#/components/schemas/Tag' type: array ListAllMyBuckets: description: 'To use any of the API operations, you must be authorized in an IAM policy. If you''re not authorized, talk to an administrator. If you''re an administrator who needs to write policies to give users access, see [Getting Started with Policies](/Content/Identity/Concepts/policygetstarted.htm). ' properties: buckets: $ref: '#/components/schemas/Buckets' owner: $ref: '#/components/schemas/Owner' required: - owner - buckets Bucket: description: Container for bucket information. properties: creationDate: description: Date the bucket was created. format: date-time type: string xml: name: CreationDate name: description: The bucket name. Avoid entering confidential information. type: string xml: name: Name required: - name - creationDate Tag: description: Container of key-value pair of a tag. properties: key: description: The key of a tag. type: string xml: name: Key value: description: The value of a tag. type: string xml: name: Value required: - key - value Contents: description: Object metadata returned. properties: eTag: description: The entity tag, an MD5 hash of the object. type: string xml: name: ETag key: description: The object's key. type: string xml: name: Key lastModified: description: Date and time the object was last modified. format: date-time type: string xml: name: LastModified size: description: Size, in bytes, of the object. type: integer xml: name: Size storageClass: description: Storage class of the object. enum: - STANDARD - STANDARD_IA - GLACIER type: string xml: name: StorageClass required: - key - lastModified - eTag - size - storageClass Buckets: description: Container for one or more buckets. items: $ref: '#/components/schemas/Bucket' type: array