diff --git a/playbooks/openapi/static.yaml b/playbooks/openapi/static.yaml new file mode 100644 index 0000000..833195b --- /dev/null +++ b/playbooks/openapi/static.yaml @@ -0,0 +1,56 @@ +--- +- hosts: all + vars: + specs_src: "{{ zuul.project.src_dir }}/static/openapi_specs/{{ openapi_service }}" + tasks: + - name: Ensure local output dirs + delegate_to: localhost + ansible.builtin.file: + path: "{{ zj_output_dir }}" + state: directory + mode: 0755 + with_items: + - "{{ zuul.executor.work_root }}/artifacts" + loop_control: + loop_var: zj_output_dir + + - name: Collect OpenAPI specs + synchronize: + dest: "{{ zj_output.dest }}" + mode: pull + src: "{{ zj_output.src }}" + verify_host: true + owner: false + group: false + loop: + - dest: "{{ zuul.executor.work_root }}/artifacts/openapi_specs" + src: "{{ specs_src }}" + loop_control: + loop_var: zj_output + + - name: Find all generated specs + ansible.builtin.find: + paths: "{{ specs_src }}" + patterns: "*.yaml" + recurse: true + # Search for anything and filter later + file_type: "any" + register: openapi_specs + + - name: Return artifact to Zuul + zuul_return: + data: + zuul: + artifacts: + - name: "{{ openapi_service }} OpenAPI spec {{ zj_item.path | basename | splitext | first }}" + url: "artifacts/openapi_specs/{{ openapi_service }}{{ zj_item.path | regex_replace(specs_src) }}" + metadata: + type: openapi + service_type: "{{ openapi_service }}" + version: "{{ zj_item.path | basename | splitext | first }}" + loop: "{{ openapi_specs.files }}" + loop_control: + loop_var: zj_item + when: + # only interested in files/links + - "not zj_item.isdir" diff --git a/static/openapi_specs/object-store/v1.yaml b/static/openapi_specs/object-store/v1.yaml new file mode 100644 index 0000000..6ec951c --- /dev/null +++ b/static/openapi_specs/object-store/v1.yaml @@ -0,0 +1,1403 @@ +--- +openapi: 3.1.0 +info: + title: Object store API + version: "1.0" +security: + - ApiKeyAuth: [] +tags: + - name: accounts + description: | + Lists containers for an account. Creates, updates, shows, and deletes account metadata. For more information and concepts about accounts see Object Storage API overview. + - name: containers + description: | + Lists objects in a container. Creates, shows details for, and deletes containers. Creates, updates, shows, and deletes container metadata. For more information and concepts about containers see Object Storage API overview. + - name: objects + description: | + Creates, replaces, shows details for, and deletes objects. Copies objects from another object with a new or different name. Updates object metadata. For more information and concepts about objects see Object Storage API overview and Large Objects. +paths: + /v1/{account}: + parameters: + - $ref: '#/components/parameters/account' + get: + summary: Show account details and list containers + description: Shows details for an account and lists containers, sorted by name, in the account. + operationId: account.get + tags: + - accounts + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/marker' + - $ref: '#/components/parameters/end-marker' + - $ref: '#/components/parameters/format' + - $ref: '#/components/parameters/prefix' + - $ref: '#/components/parameters/delimiter' + - $ref: '#/components/parameters/reverse' + - $ref: '#/components/parameters/X-Newest' + - $ref: '#/components/parameters/accept' + responses: + "200": + description: OK + headers: + X-Account-Meta-*: + $ref: '#/components/headers/X-Account-Meta' + X-Account-Meta-Temp-URL-Key: + $ref: '#/components/headers/X-Account-Meta-Temp-Url-Key' + X-Account-Meta-Temp-URL-Key-2: + $ref: '#/components/headers/X-Account-Meta-Temp-Url-Key-2' + X-Timestamp: + $ref: '#/components/headers/X-Timestamp' + X-Account-Bytes-Used: + $ref: '#/components/headers/X-Account-Bytes-Used' + X-Account-Container-Count: + $ref: '#/components/headers/X-Account-Container-Count' + X-Account-Object-Count: + $ref: '#/components/headers/X-Account-Object-Count' + X-Account-Storage-Policy*Bytes-Used: + $ref: '#/components/headers/X-Account-Storage-Policy-Bytes-Used' + X-Account-Storage-Policy*Container-Count: + $ref: '#/components/headers/X-Account-Storage-Policy-Container-Count' + X-Account-Storage-Policy*Object-Count: + $ref: '#/components/headers/X-Account-Storage-Policy-Object-Count' + X-Account-Meta-Quota-Bytes: + $ref: '#/components/headers/X-Account-Meta-Quota-Bytes' + X-Account-Access-Control: + $ref: '#/components/headers/X-Account-Access-Control' + content: + application/json: + schema: + $ref: '#/components/schemas/Containers' + "204": + description: OK, No containers + "401": + description: Error + "416": + description: Error + post: + summary: Create, update, or delete account metadata + description: | + Creates, updates, or deletes account metadata. + To create, update, or delete custom metadata, use the X-Account-Meta-{name} request header, where {name} is the name of the metadata item. + Account metadata operations work differently than how object metadata operations work. Depending on the contents of your POST account metadata request, the Object Storage API updates the metadata as shown in the following table: + TODO: fill the rest + To delete a metadata header, send an empty value for that header, such as for the X-Account-Meta-Book header. If the tool you use to communicate with Object Storage, such as an older version of cURL, does not support empty headers, send the X-Remove-Account- Meta-{name} header with an arbitrary value. For example, X-Remove-Account-Meta-Book: x. The operation ignores the arbitrary value. + operationId: account.post + tags: + - accounts + parameters: + - $ref: '#/components/parameters/X-Account-Meta-Temp-Url-Key' + - $ref: '#/components/parameters/X-Account-Meta-Temp-Url-Key-2' + - $ref: '#/components/parameters/X-Account-Meta' + - $ref: '#/components/parameters/X-Remove-Account-Meta' + - $ref: '#/components/parameters/X-Account-Access-Control' + responses: + "204": + description: OK + head: + summary: Show account metadata + description: | + Shows metadata for an account. + Because the storage system can store large amounts of data, take care when you represent the total bytes response as an integer; when possible, convert it to a 64-bit unsigned integer if your platform supports that primitive type. + Do not include metadata headers in this request. + operationId: account.head + tags: + - accounts + responses: + "204": + description: OK, Metadata + headers: + X-Account-Meta-*: + $ref: '#/components/headers/X-Account-Meta' + X-Account-Meta-Temp-URL-Key: + $ref: '#/components/headers/X-Account-Meta-Temp-Url-Key' + X-Account-Meta-Temp-URL-Key-2: + $ref: '#/components/headers/X-Account-Meta-Temp-Url-Key-2' + X-Timestamp: + $ref: '#/components/headers/X-Timestamp' + X-Account-Bytes-Used: + $ref: '#/components/headers/X-Account-Bytes-Used' + X-Account-Container-Count: + $ref: '#/components/headers/X-Account-Container-Count' + X-Account-Object-Count: + $ref: '#/components/headers/X-Account-Object-Count' + X-Account-Storage-Policy*Bytes-Used: + $ref: '#/components/headers/X-Account-Storage-Policy-Bytes-Used' + X-Account-Storage-Policy*Container-Count: + $ref: '#/components/headers/X-Account-Storage-Policy-Container-Count' + X-Account-Storage-Policy*Object-Count: + $ref: '#/components/headers/X-Account-Storage-Policy-Object-Count' + X-Account-Meta-Quota-Bytes: + $ref: '#/components/headers/X-Account-Meta-Quota-Bytes' + X-Account-Access-Control: + $ref: '#/components/headers/X-Account-Access-Control' + "401": + description: Error + delete: + summary: Delete the specified account + description: | + Deletes the specified account when a reseller admin issues this request. Accounts are only deleted by (1) having a reseller admin level auth token (2) sending a DELETE to a proxy server for the account to be deleted and (3) that proxy server having the allow_account_management” config option set to true. + Note that an issuing a DELETE request simply marks the account for deletion later as outlined in the link: https://docs.openstack.org/swift/latest/overview_reaper.html. + Take care when performing this operation because deleting an account is a one-way operation that is not trivially recoverable. It''s crucial to note that in an OpenStack context, you should delete an account after the project/tenant has been deleted from Keystone. + operationId: account.delete + tags: + - accounts + responses: + "204": + description: OK + /v1/{account}/{container}: + parameters: + - $ref: '#/components/parameters/account' + - $ref: '#/components/parameters/container' + get: + summary: Show container details and list objects + description: | + Shows details for a container and lists objects, sorted by name, in the container. + Specify query parameters in the request to filter the list and return a subset of objects. Omit query parameters to return a list of objects that are stored in the container, up to 10,000 names. The 10,000 maximum value is configurable. To view the value for the cluster, issue a GET /info request. + operationId: container.get + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/marker' + - $ref: '#/components/parameters/end-marker' + - $ref: '#/components/parameters/format' + - $ref: '#/components/parameters/prefix' + - $ref: '#/components/parameters/delimiter' + - $ref: '#/components/parameters/reverse' + - $ref: '#/components/parameters/X-Newest' + - $ref: '#/components/parameters/accept' + tags: + - containers + responses: + "200": + description: OK + headers: + X-Container-Meta-*: + $ref: '#/components/headers/X-Container-Meta' + X-Timestamp: + $ref: '#/components/headers/X-Timestamp' + X-Container-Bytes-Used: + $ref: '#/components/headers/X-Container-Bytes-Used' + X-Container-Object-Count: + $ref: '#/components/headers/X-Container-Object-Count' + Accept-Ranges: + $ref: '#/components/headers/Accept-Ranges' + X-Container-Meta-Temp-URL-Key: + $ref: '#/components/headers/X-Container-Meta-Temp-URL-Key' + X-Container-Meta-Temp-URL-Key-2: + $ref: '#/components/headers/X-Container-Meta-Temp-URL-Key-2' + X-Container-Meta-Quota-Count: + $ref: '#/components/headers/X-Container-Meta-Quota-Count' + X-Container-Meta-Quota-Bytes: + $ref: '#/components/headers/X-Container-Meta-Quota-Bytes' + X-Storage-Policy: + $ref: '#/components/headers/X-Storage-Policy' + X-Container-Read: + $ref: '#/components/headers/X-Container-Read' + X-Container-Write: + $ref: '#/components/headers/X-Container-Write' + X-Container-Sync-Key: + $ref: '#/components/headers/X-Container-Sync-Key' + X-Container-Sync-To: + $ref: '#/components/headers/X-Container-Sync-To' + X-Versions-Location: + $ref: '#/components/headers/X-Versions-Location' + X-History-Location: + $ref: '#/components/headers/X-History-Location' + content: + application/json: + schema: + $ref: '#/components/schemas/Objects' + "404": + description: Not Found + "416": + description: Error + put: + summary: Create container + description: | + Creates a container. + You do not need to check whether a container already exists before issuing a PUT operation because the operation is idempotent: It creates a container or updates an existing container, as appropriate. + operationId: container.put + tags: + - containers + parameters: + - $ref: '#/components/parameters/X-Container-Meta' + - $ref: '#/components/parameters/X-Container-Read' + - $ref: '#/components/parameters/X-Container-Write' + - $ref: '#/components/parameters/X-Container-Sync-To' + - $ref: '#/components/parameters/X-Container-Sync-Key' + - $ref: '#/components/parameters/X-Versions-Location' + - $ref: '#/components/parameters/X-History-Location' + - $ref: '#/components/parameters/X-Container-Meta-Access-Control-Allow-Origin' + - $ref: '#/components/parameters/X-Container-Meta-Access-Control-Max-Age' + - $ref: '#/components/parameters/X-Container-Meta-Access-Control-Expose-Headers' + - $ref: '#/components/parameters/X-Container-Meta-Quota-Bytes' + - $ref: '#/components/parameters/X-Container-Meta-Quota-Count' + - $ref: '#/components/parameters/X-Container-Meta-Temp-Url-Key' + - $ref: '#/components/parameters/X-Container-Meta-Temp-Url-Key-2' + - $ref: '#/components/parameters/X-Trans-Id-Extra' + - $ref: '#/components/parameters/X-Storage-Policy' + responses: + "201": + description: OK + headers: + X-Trans-Id: + $ref: '#/components/headers/X-Trans-Id' + "202": + description: OK + headers: + X-Trans-Id: + $ref: '#/components/headers/X-Trans-Id' + post: + summary: Create, update, or delete container metadata + description: Creates, updates, or deletes custom metadata for a container. + operationId: container.post + tags: + - containers + parameters: + - $ref: '#/components/parameters/X-Container-Meta' + - $ref: '#/components/parameters/X-Remove-Container-Meta' + - $ref: '#/components/parameters/X-Container-Read' + - $ref: '#/components/parameters/X-Container-Write' + - $ref: '#/components/parameters/X-Container-Sync-To' + - $ref: '#/components/parameters/X-Container-Sync-Key' + - $ref: '#/components/parameters/X-Versions-Location' + - $ref: '#/components/parameters/X-History-Location' + - $ref: '#/components/parameters/X-Container-Meta-Access-Control-Allow-Origin' + - $ref: '#/components/parameters/X-Container-Meta-Access-Control-Max-Age' + - $ref: '#/components/parameters/X-Container-Meta-Access-Control-Expose-Headers' + - $ref: '#/components/parameters/X-Container-Meta-Quota-Bytes' + - $ref: '#/components/parameters/X-Container-Meta-Quota-Count' + - $ref: '#/components/parameters/X-Container-Meta-Temp-Url-Key' + - $ref: '#/components/parameters/X-Container-Meta-Temp-Url-Key-2' + - $ref: '#/components/parameters/X-Trans-Id-Extra' + - $ref: '#/components/parameters/X-Storage-Policy' + responses: + "204": + description: OK + headers: + X-Trans-Id: + $ref: '#/components/headers/X-Trans-Id' + "404": + description: Not Found + "409": + description: Error + head: + summary: Show container metadata + description: | + Shows container metadata, including the number of objects and the total bytes of all objects stored in the container. + operationId: container.head + tags: + - containers + responses: + "204": + description: OK + headers: + X-Container-Meta-*: + $ref: '#/components/headers/X-Container-Meta' + X-Timestamp: + $ref: '#/components/headers/X-Timestamp' + X-Container-Bytes-Used: + $ref: '#/components/headers/X-Container-Bytes-Used' + X-Container-Object-Count: + $ref: '#/components/headers/X-Container-Object-Count' + Accept-Ranges: + $ref: '#/components/headers/Accept-Ranges' + X-Container-Meta-Temp-URL-Key: + $ref: '#/components/headers/X-Container-Meta-Temp-URL-Key' + X-Container-Meta-Temp-URL-Key-2: + $ref: '#/components/headers/X-Container-Meta-Temp-URL-Key-2' + X-Container-Meta-Quota-Count: + $ref: '#/components/headers/X-Container-Meta-Quota-Count' + X-Container-Meta-Quota-Bytes: + $ref: '#/components/headers/X-Container-Meta-Quota-Bytes' + X-Storage-Policy: + $ref: '#/components/headers/X-Storage-Policy' + X-Container-Read: + $ref: '#/components/headers/X-Container-Read' + X-Container-Write: + $ref: '#/components/headers/X-Container-Write' + X-Container-Sync-Key: + $ref: '#/components/headers/X-Container-Sync-Key' + X-Container-Sync-To: + $ref: '#/components/headers/X-Container-Sync-To' + X-Versions-Location: + $ref: '#/components/headers/X-Versions-Location' + X-History-Location: + $ref: '#/components/headers/X-History-Location' + "404": + description: Not Found + delete: + summary: Delete container + description: | + Deletes an empty container. + This operation fails unless the container is empty. An empty container has no objects. + operationId: container.delete + tags: + - containers + responses: + "204": + description: OK + "404": + description: Not Found + "409": + description: Conflict + /v1/{account}/{container}/{object}: + parameters: + - $ref: '#/components/parameters/account' + - $ref: '#/components/parameters/container' + - $ref: '#/components/parameters/object' + get: + summary: Get object content and metadata + description: | + Downloads the object content and gets the object metadata. + This operation returns the object metadata in the response headers and the object content in the response body. + operationId: object.get + tags: + - objects + parameters: + - $ref: '#/components/parameters/multipart-manifest' + - $ref: '#/components/parameters/X-Newest' + - $ref: '#/components/parameters/temp_url_sig' + - $ref: '#/components/parameters/temp_url_expires' + - $ref: '#/components/parameters/filename' + - $ref: '#/components/parameters/symlink' + - $ref: '#/components/parameters/range' + responses: + "200": + description: OK + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + Content-Length: + $ref: '#/components/headers/Content-Length' + Content-Disposition: + $ref: '#/components/headers/Content-Disposition' + Content-Encoding: + $ref: '#/components/headers/Content-Encoding' + Accept-Ranges: + $ref: '#/components/headers/Accept-Ranges' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + X-Object-Meta-*: + $ref: '#/components/headers/X-Object-Meta' + X-Delete-At: + $ref: '#/components/headers/X-Delete-At' + X-Object-Manifest: + $ref: '#/components/headers/X-Object-Manifest' + ETag: + $ref: '#/components/headers/ETag' + X-Timestamp: + $ref: '#/components/headers/X-Timestamp' + X-Trans-Id: + $ref: '#/components/headers/X-Trans-Id' + Date: + $ref: '#/components/headers/Date' + X-Static-Large-Object: + $ref: '#/components/headers/X-Static-Large-Object' + X-Symlink-Target: + $ref: '#/components/headers/X-Symlink-Target' + X-Symlink-Target-Account: + $ref: '#/components/headers/X-Symlink-Target-Account' + content: + '*': + schema: + type: string + format: binary + "404": + description: Not Found + "416": + description: Range Not Satisfiable + post: + summary: Create or update object metadata + description: Creates or updates object metadata. + operationId: object.post + tags: + - objects + parameters: + - $ref: '#/components/parameters/multipart-manifest' + - $ref: '#/components/parameters/X-Newest' + - $ref: '#/components/parameters/temp_url_sig' + - $ref: '#/components/parameters/temp_url_expires' + - $ref: '#/components/parameters/filename' + - $ref: '#/components/parameters/symlink' + - $ref: '#/components/parameters/range' + - in: query + name: bulk-delete + description: | + When the bulk-delete query parameter is present in the POST request, multiple objects or containers can be deleted with a single request. See Bulk Delete for how this feature is used. + schema: + type: boolean + - in: query + name: extract-archive + description: | + When the extract-archive query parameter is present in the POST request, an archive (tar file) is uploaded and extracted to create multiple objects. See Extract Archive for how this feature is used. + schema: + type: boolean + - $ref: '#/components/parameters/X-Object-Meta' + - $ref: '#/components/parameters/X-Delete-At' + - $ref: '#/components/parameters/X-Delete-After' + - $ref: '#/components/parameters/Content-Disposition' + - $ref: '#/components/parameters/Content-Encoding' + - $ref: '#/components/parameters/Content-Type' + responses: + "202": + description: OK + headers: + Content-Length: + $ref: '#/components/headers/Content-Length' + X-Timestamp: + $ref: '#/components/headers/X-Timestamp' + X-Trans-Id: + $ref: '#/components/headers/X-Trans-Id' + Date: + $ref: '#/components/headers/Date' + X-Symlink-Target: + $ref: '#/components/headers/X-Symlink-Target' + X-Symlink-Target-Account: + $ref: '#/components/headers/X-Symlink-Target-Account' + content: + '*': + schema: + type: string + format: binary + "404": + description: Not Found + put: + summary: Create or replace object + description: | + Creates an object with data content and metadata, or replaces an existing object with data content and metadata. + The PUT operation always creates an object. If you use this operation on an existing object, you replace the existing object and metadata rather than modifying the object. Consequently, this operation returns the Created (201) response code. + If you use this operation to copy a manifest object, the new object is a normal object and not a copy of the manifest. Instead it is a concatenation of all the segment objects. This means that you cannot copy objects larger than 5 GB. + Note that the provider may have limited the characters which are allowed in an object name. Any name limits are exposed under the name_check key in the /info discoverability response. Regardless of name_check limitations, names must be URL quoted UTF-8. + To create custom metadata, use the X-Object-Meta-name header, where name is the name of the metadata item. + operationId: object.put + tags: + - objects + parameters: + - $ref: '#/components/parameters/multipart-manifest' + - $ref: '#/components/parameters/X-Newest' + - $ref: '#/components/parameters/temp_url_sig' + - $ref: '#/components/parameters/temp_url_expires' + - $ref: '#/components/parameters/filename' + - $ref: '#/components/parameters/symlink' + - $ref: '#/components/parameters/range' + - $ref: '#/components/parameters/X-Object-Meta' + - $ref: '#/components/parameters/X-Object-Manifest' + - $ref: '#/components/parameters/X-Delete-At' + - $ref: '#/components/parameters/X-Delete-After' + - $ref: '#/components/parameters/X-Detect-Content-Type' + - $ref: '#/components/parameters/X-Copy-From' + - $ref: '#/components/parameters/X-Copy-From-Account' + - $ref: '#/components/parameters/ETag' + - $ref: '#/components/parameters/Content-Disposition' + - $ref: '#/components/parameters/Content-Encoding' + - $ref: '#/components/parameters/Content-Type' + - $ref: '#/components/parameters/If-None-Match' + - $ref: '#/components/parameters/X-Trans-Id-Extra' + - $ref: '#/components/parameters/X-Symlink-Target' + - $ref: '#/components/parameters/X-Symlink-Target-Account' + - in: header + name: access-control-allow-origin + description: Alternate CORS header for older environments (like RAX) + schema: + type: string + requestBody: + content: + '*': + schema: + type: string + format: binary + responses: + "201": + description: OK + headers: + Content-Length: + $ref: '#/components/headers/Content-Length' + X-Timestamp: + $ref: '#/components/headers/X-Timestamp' + X-Trans-Id: + $ref: '#/components/headers/X-Trans-Id' + Date: + $ref: '#/components/headers/Date' + X-Symlink-Target: + $ref: '#/components/headers/X-Symlink-Target' + X-Symlink-Target-Account: + $ref: '#/components/headers/X-Symlink-Target-Account' + content: + '*': + schema: + type: string + format: binary + "404": + description: Not Found + "400": + description: Error + "500": + description: Server Error + head: + summary: Show object metadata + description: Shows object metadata. + operationId: object.head + tags: + - objects + parameters: + - $ref: '#/components/parameters/multipart-manifest' + - $ref: '#/components/parameters/X-Newest' + - $ref: '#/components/parameters/temp_url_sig' + - $ref: '#/components/parameters/temp_url_expires' + - $ref: '#/components/parameters/filename' + - $ref: '#/components/parameters/symlink' + - $ref: '#/components/parameters/range' + responses: + "200": + description: OK + headers: + Content-Length: + $ref: '#/components/headers/Content-Length' + Content-Disposition: + $ref: '#/components/headers/Content-Disposition' + Content-Type: + $ref: '#/components/headers/Content-Type' + Content-Encoding: + $ref: '#/components/headers/Content-Encoding' + Accept-Ranges: + $ref: '#/components/headers/Accept-Ranges' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + X-Object-Meta-*: + $ref: '#/components/headers/X-Object-Meta' + X-Delete-At: + $ref: '#/components/headers/X-Delete-At' + X-Object-Manifest: + $ref: '#/components/headers/X-Object-Manifest' + ETag: + $ref: '#/components/headers/ETag' + X-Timestamp: + $ref: '#/components/headers/X-Timestamp' + X-Trans-Id: + $ref: '#/components/headers/X-Trans-Id' + Date: + $ref: '#/components/headers/Date' + X-Static-Large-Object: + $ref: '#/components/headers/X-Static-Large-Object' + X-Symlink-Target: + $ref: '#/components/headers/X-Symlink-Target' + X-Symlink-Target-Account: + $ref: '#/components/headers/X-Symlink-Target-Account' + "404": + description: Not Found + delete: + summary: Delete object + description: | + Permanently deletes an object from the object store. + Object deletion occurs immediately at request time. Any subsequent GET, HEAD, POST, or DELETE operations will return a 404 Not Found error code. + For static large object manifests, you can add the ?multipart- manifest=delete query parameter. This operation deletes the segment objects and, if all deletions succeed, this operation deletes the manifest object. + A DELETE request made to a symlink path will delete the symlink rather than the target object. + An alternative to using the DELETE operation is to use the POST operation with the bulk-delete query parameter. + operationId: object.delete + tags: + - objects + parameters: + - $ref: '#/components/parameters/multipart-manifest' + responses: + "204": + description: OK + headers: + Content-Length: + $ref: '#/components/headers/Content-Length' + X-Timestamp: + $ref: '#/components/headers/X-Timestamp' + X-Trans-Id: + $ref: '#/components/headers/X-Trans-Id' + "404": + description: Not Found +components: + securitySchemes: + ApiKeyAuth: + type: apiKey + in: header + name: X-Auth-Token + headers: + Content-Length: + description: | + The length of the object content in the response body, in bytes. + schema: + type: integer + Content-Type: + description: | + If the operation succeeds, this value is the MIME type of the list response. The MIME type is determined by the listing format specified by the request and will be one of text/plain, application/json, application/xml, or text/xml. If the operation fails, this value is the MIME type of the error text in the response body. + schema: + type: string + Content-Disposition: + description: | + If present, specifies the override behavior for the browser. For example, this header might specify that the browser use a download program to save this file rather than show the file, which is the default. If not set, this header is not returned by this operation. + schema: + type: string + x-openstack: + sdk-name: content_disposition + Content-Encoding: + description: | + If present, the value of the Content-Encoding metadata. If not set, the operation does not return this header. + schema: + type: string + x-openstacksdk-name: content_encoding + Accept-Ranges: + description: The type of ranges that the object accepts + schema: + type: string + Last-Modified: + description: | + The date and time when the object was created or its metadata was changed. The date and time is formatted as shown in this example: Fri, 12 Aug 2016 14:24:16 GMT. The time is always in UTC. + schema: + type: string + format: date + x-openstack: + sdk-name: last_modified_at + X-Trans-Id: + description: | + A unique transaction ID for this request. Your service provider might need this value if you report a problem. + schema: + type: string + X-Timestamp: + description: | + The date and time in UNIX Epoch time stamp format when the account, container, or object was initially created as a current version. For example, 1440619048 is equivalent to Mon, Wed, 26 Aug 2015 19:57:28 GMT. + schema: + type: integer + Date: + description: | + The date and time the system responded to the request, using the preferred format of RFC 7231 as shown in this example Thu, 16 Jun 2016 15:10:38 GMT. The time is always in UTC. + schema: + type: string + format: date + X-Account-Meta: + description: | + The account metadata. The name is the name of metadata item that you want to add, update, or delete. To delete this item, send an empty value in this header. You must specify an X-Account-Meta-name header for each metadata item (for each name) that you want to add, update, or delete. + schema: + type: string + x-openstack: + sdk-name: metadata + style: regex + X-Account-Meta-Temp-Url-Key: + description: | + The secret key value for temporary URLs. If not set, this header is not returned in the response. + schema: + type: string + x-openstack: + sdk-name: meta_temp_url_key + X-Account-Meta-Temp-Url-Key-2: + description: | + The second secret key value for temporary URLs. If not set, this header is not returned in the response. + schema: + type: string + x-openstack: + sdk-name: meta_temp_url_key_2 + X-Account-Bytes-Used: + description: | + The total number of bytes that are stored in Object Storage for the account. + schema: + type: integer + format: int64 + X-Account-Container-Count: + description: The number of containers. + schema: + type: integer + format: int64 + X-Account-Object-Count: + description: The number of objects in the account. + schema: + type: integer + format: int64 + X-Account-Storage-Policy-Bytes-Used: + description: | + The total number of bytes that are stored in in a given storage policy, where name is the name of the storage policy. + schema: + type: integer + X-Account-Storage-Policy-Container-Count: + description: | + The number of containers in the account that use the given storage policy where name is the name of the storage policy. + schema: + type: integer + format: int64 + X-Account-Storage-Policy-Object-Count: + description: | + The number of objects in given storage policy where name is the name of the storage policy. + schema: + type: integer + format: int64 + X-Account-Meta-Quota-Bytes: + description: | + If present, this is the limit on the total size in bytes of objects stored in the account. Typically this value is set by an administrator. + schema: + type: string + format: int64 + X-Account-Access-Control: + description: | + Note: X-Account-Access-Control is not supported by Keystone auth. + The account access control list (ACL) that grants access to containers and objects in the account. If there is no ACL, this header is not returned by this operation. See Account ACLs for more information. + schema: + type: string + X-Container-Meta: + description: | + The custom container metadata item, where name is the name of the metadata item. One X-Container-Meta-name response header appears for each metadata item (for each name). + schema: + type: string + x-openstack: + sdk-name: metadata + style: regex + X-Container-Bytes-Used: + description: | + The total number of bytes that are stored in Object Storage for the container. + schema: + type: integer + format: int64 + X-Container-Object-Count: + description: The number of objects. + schema: + type: integer + format: int64 + acceptRanges: + description: The type of ranges that the object accepts. + schema: + type: string + X-Container-Meta-Temp-URL-Key: + description: | + The secret key value for temporary URLs. If not set, this header is not returned in the response. + schema: + type: string + X-Container-Meta-Temp-URL-Key-2: + description: | + The second secret key value for temporary URLs. If not set, this header is not returned in the response. + schema: + type: string + X-Container-Meta-Quota-Count: + description: | + The maximum object count of the container. If not set, this header is not returned by this operation. + schema: + type: string + X-Container-Meta-Quota-Bytes: + description: | + The maximum size of the container, in bytes. If not set, this header is not returned by this operation. + schema: + type: string + X-Storage-Policy: + description: | + In requests, specifies the name of the storage policy to use for the container. In responses, is the storage policy name. The storage policy of the container cannot be changed. + schema: + type: string + X-Container-Read: + description: | + The ACL that grants read access. If there is no ACL, this header is not returned by this operation. See Container ACLs for more information. + schema: + type: string + x-openstack: + sdk-name: read_ACL + X-Container-Write: + description: | + The ACL that grants write access. If there is no ACL, this header is not returned by this operation. See Container ACLs for more information. + schema: + type: string + x-openstack: + sdk-name: write_ACL + X-Container-Sync-Key: + description: | + The secret key for container synchronization. If not set, this header is not returned by this operation. + schema: + type: string + x-openstack: + sdk-name: sync_key + X-Container-Sync-To: + description: | + The destination for container synchronization. If not set, this header is not returned by this operation. + schema: + type: string + x-openstack: + sdk-name: sync_to + X-Versions-Location: + description: | + If present, this container has versioning enabled and the value is the UTF-8 encoded name of another container. For more information about object versioning, see Object versioning. + schema: + type: string + X-History-Location: + description: | + If present, this container has versioning enabled and the value is the UTF-8 encoded name of another container. For more information about object versioning, see Object versioning. + schema: + type: string + X-Object-Meta: + description: | + If present, the custom object metadata item, where name is the name of the metadata item. One``X-Object-Meta-name`` response header appears for each metadata name item. + schema: + type: string + x-openstack: + sdk-name: metadata + style: regex + X-Object-Manifest: + description: | + If present, this is a dynamic large object manifest object. The value is the container and object name prefix of the segment objects in the form container/prefix. + schema: + type: string + ETag: + description: | + For objects smaller than 5 GB, this value is the MD5 checksum of the object content. The value is not quoted. For manifest objects, this value is the MD5 checksum of the concatenated string of ETag values for each of the segments in the manifest, and not the MD5 checksum of the content that was downloaded. Also the value is enclosed in double-quote characters. You are strongly recommended to compute the MD5 checksum of the response body as it is received and compare this value with the one in the ETag header. If they differ, the content was corrupted, so retry the operation.For objects smaller than 5 GB, this value is the MD5 checksum of the object content. The value is not quoted. For manifest objects, this value is the MD5 checksum of the concatenated string of ETag values for each of the segments in the manifest, and not the MD5 checksum of the content that was downloaded. Also the value is enclosed in double-quote characters. You are strongly recommended to compute the MD5 checksum of the response body as it is received and compare this value with the one in the ETag header. If they differ, the content was corrupted, so retry the operation. + schema: + type: string + x-openstack: + sdk-name: etag + X-Static-Large-Object: + description: | + Set to true if this object is a static large object manifest object. + schema: + type: boolean + x-openstack: + sdk-name: is_static_large_object + X-Symlink-Target: + description: | + If present, this is a symlink object. The value is the relative path of the target object in the format /. + schema: + type: string + X-Symlink-Target-Account: + description: | + If present, and X-Symlink-Target is present, then this is a cross-account symlink to an object in the account specified in the value. + schema: + type: string + X-Delete-At: + description: | + If present, specifies date and time in UNIX Epoch time stamp format when the system removes the object. For example, 1440619048 is equivalent to Mon, Wed, 26 Aug 2015 19:57:28 GMT. + schema: + type: integer + x-openstack: + sdk-name: delete_at + parameters: + account: + in: path + name: account + required: true + description: The unique name for the account. An account is also known as the project or tenant. + schema: + type: string + container: + in: path + name: container + description: | + The unique (within an account) name for the container. The container name must be from 1 to 256 characters long and can start with any character and contain any pattern. Character set must be UTF-8. The container name cannot contain a slash (/) character because this character delimits the container and object name. For example, the path /v1/account/www/pages specifies the www container, not the www/pages container. + required: true + schema: + type: string + object: + in: path + name: object + description: The unique name for the object. + required: true + schema: + type: string + X-Account-Meta: + in: header + name: X-Account-Meta-* + description: | + The account metadata. The name is the name of metadata item that you want to add, update, or delete. To delete this item, send an empty value in this header. You must specify an X-Account-Meta-name header for each metadata item (for each name) that you want to add, update, or delete. + schema: + type: string + x-openstack: + style: regex + sdk-name: metadata + X-Remove-Account-Meta: + in: header + name: X-Remove-Account-Meta-* + description: Unset property + schema: + type: + - string + - "null" + x-openstack: + style: regex + sdk-name: remove_metadata + X-Account-Meta-Temp-Url-Key: + in: header + name: X-Account-Meta-Temp-URL-Key + description: The secret key value for temporary URLs. + schema: + type: string + x-openstack: + sdk-name: meta_temp_url_key + X-Account-Meta-Temp-Url-Key-2: + in: header + name: X-Account-Meta-Temp-URL-Key-2 + description: | + A second secret key value for temporary URLs. The second key enables you to rotate keys by having two active keys at the same time. + schema: + type: string + x-openstack: + sdk-name: meta_temp_url_key_2 + X-Account-Access-Control: + in: header + name: X-Account-Access-Control + description: | + Note: X-Account-Access-Control is not supported by Keystone auth. + Sets an account access control list (ACL) that grants access to containers and objects in the account. See Account ACLs for more information. + schema: + type: string + X-Object-Meta: + in: header + name: X-Object-Meta-* + description: | + If present, the custom object metadata item, where name is the name of the metadata item. One``X-Object-Meta-name`` response header appears for each metadata name item. + schema: + type: string + x-openstack: + style: regex + sdk-name: metadata + X-Object-Manifest: + in: header + name: X-Object-Manifest + description: | + Set to specify that this is a dynamic large object manifest object. The value is the container and object name prefix of the segment objects in the form container/prefix. You must UTF-8-encode and then URL-encode the names of the container and prefix before you include them in this header. + schema: + type: string + X-Remove-Object-Meta: + in: header + name: X-Remove-Object-Meta-* + description: Unset property + schema: + type: + - string + - "null" + x-openstack: + style: regex + sdk-name: remove_metadata + X-Container-Meta: + in: header + name: X-Container-Meta-* + description: | + If present, the custom container metadata item, where name is the name of the metadata item. One``X-Container-Meta-name`` response header appears for each metadata name item. + schema: + type: + - string + - "null" + x-openstack: + style: regex + sdk-name: metadata + X-Remove-Container-Meta: + in: header + name: X-Remove-Container-Meta-* + description: Unset property + schema: + type: + - string + - "null" + x-openstack: + style: regex + sdk-name: remove_metadata + X-Container-Read: + in: header + name: X-Container-Read + description: | + Sets a container access control list (ACL) that grants read access. The scope of the access is specific to the container. The ACL grants the ability to perform GET or HEAD operations on objects in the container or to perform a GET or HEAD operation on the container itself. + The format and scope of the ACL is dependent on the authorization system used by the Object Storage service. See Container ACLs for more information. + schema: + type: string + x-openstack: + sdk-name: read_ACL + X-Container-Write: + in: header + name: X-Container-Write + description: | + Sets a container access control list (ACL) that grants write access. The scope of the access is specific to the container. The ACL grants the ability to perform PUT, POST and DELETE operations on objects in the container. It does not grant write access to the container metadata. + The format of the ACL is dependent on the authorization system used by the Object Storage service. See Container ACLs for more information. + schema: + type: string + x-openstack: + sdk-name: write_ACL + X-Container-Sync-To: + in: header + name: X-Container-Sync-To + description: | + Sets the destination for container synchronization. Used with the secret key indicated in the X-Container-Sync-Key header. If you want to stop a container from synchronizing, send a blank value for the X-Container-Sync-Key header. + schema: + type: string + x-openstack: + sdk-name: sync_to + X-Container-Sync-Key: + in: header + name: X-Container-Sync-Key + description: | + Sets the secret key for container synchronization. If you remove the secret key, synchronization is halted. For more information, see Container to Container Synchronization + schema: + type: string + x-openstack: + sdk-name: sync_key + X-Versions-Location: + in: header + name: X-Versions-Location + description: | + The URL-encoded UTF-8 representation of the container that stores previous versions of objects. If neither this nor X-History-Location is set, versioning is disabled for this container. X-Versions-Location and X-History-Location cannot both be set at the same time. For more information about object versioning, see Object versioning. + schema: + type: string + x-openstack: + sdk-name: versions_location + X-History-Location: + in: header + name: X-History-Location + description: | + The URL-encoded UTF-8 representation of the container that stores previous versions of objects. If neither this nor X-Versions-Location is set, versioning is disabled for this container. X-History-Location and X-Versions-Location cannot both be set at the same time. For more information about object versioning, see Object versioning. + schema: + type: string + x-openstack: + sdk-name: history_location + X-Container-Meta-Access-Control-Allow-Origin: + in: header + name: X-Container-Meta-Access-Control-Allow-Origin + description: | + Originating URLs allowed to make cross-origin requests (CORS), separated by spaces. This heading applies to the container only, and all objects within the container with this header applied are CORS-enabled for the allowed origin URLs. A browser (user-agent) typically issues a preflighted request , which is an OPTIONS call that verifies the origin is allowed to make the request. The Object Storage service returns 200 if the originating URL is listed in this header parameter, and issues a 401 if the originating URL is not allowed to make a cross-origin request. Once a 200 is returned, the browser makes a second request to the Object Storage service to retrieve the CORS-enabled object. + schema: + type: string + X-Container-Meta-Access-Control-Max-Age: + in: header + name: X-Container-Meta-Access-Control-Max-Age + description: | + Maximum time for the origin to hold the preflight results. A browser may make an OPTIONS call to verify the origin is allowed to make the request. Set the value to an integer number of seconds after the time that the request was received. + schema: + type: string + X-Container-Meta-Access-Control-Expose-Headers: + in: header + name: X-Container-Meta-Access-Control-Expose-Headers + description: | + Headers the Object Storage service exposes to the browser (technically, through the user-agent setting), in the request response, separated by spaces. By default the Object Storage service returns the following headers: + - All "simple response headers" as listed on + http://www.w3.org/TR/cors/#simple-response-header. + - The headers etag, x-timestamp, x-trans-id, + x-openstack-request-id. + - All metadata headers (X-Container-Meta-* for containers and + X-Object-Meta-* for objects). + - headers listed in + X-Container-Meta-Access-Control-Expose-Headers. + schema: + type: string + X-Container-Meta-Quota-Bytes: + in: header + name: X-Container-Meta-Quota-Bytes + description: | + Sets maximum size of the container, in bytes. Typically these values are set by an administrator. Returns a 413 response (request entity too large) when an object PUT operation exceeds this quota value. This value does not take effect immediately. see Container Quotas for more information. + schema: + type: string + X-Container-Meta-Quota-Count: + in: header + name: X-Container-Meta-Quota-Count + description: | + Sets maximum object count of the container. Typically these values are set by an administrator. Returns a 413 response (request entity too large) when an object PUT operation exceeds this quota value. This value does not take effect immediately. see Container Quotas for more information. + schema: + type: string + X-Container-Meta-Temp-Url-Key: + in: header + name: X-Container-Meta-Temp-URL-Key + description: The secret key value for temporary URLs. + schema: + type: string + x-openstack: + sdk-name: meta_temp_url_key + X-Container-Meta-Temp-Url-Key-2: + in: header + name: X-Container-Meta-Temp-URL-Key-2 + description: | + A second secret key value for temporary URLs. The second key enables you to rotate keys by having two active keys at the same time. + schema: + type: string + x-openstack: + sdk-name: meta_temp_url_key_2 + X-Trans-Id-Extra: + in: header + name: X-Trans-Id-Extra + description: | + Extra transaction information. Use the X-Trans-Id-Extra request header to include extra information to help you debug any errors that might occur with large object upload and other Object Storage transactions. The server appends the first 32 characters of the X-Trans-Id-Extra request header value to the transaction ID value in the generated X-Trans-Id response header. You must UTF-8-encode and then URL-encode the extra transaction information before you include it in the X-Trans-Id-Extra request header. For example, you can include extra transaction information when you upload large objects such as images. When you upload each segment and the manifest, include the same value in the X-Trans-Id-Extra request header. If an error occurs, you can find all requests that are related to the large object upload in the Object Storage logs. You can also use X-Trans-Id-Extra strings to help operators debug requests that fail to receive responses. The operator can search for the extra information in the logs. + schema: + type: string + X-Storage-Policy: + in: header + name: X-Storage-Policy + description: | + In requests, specifies the name of the storage policy to use for the container. In responses, is the storage policy name. The storage policy of the container cannot be changed. + schema: + type: string + x-openstack: + sdk-name: storage_policy + limit: + in: query + name: limit + description: For an integer value n, limits the number of results to n. + schema: + type: integer + marker: + in: query + name: marker + description: | + For a string value, x, constrains the list to items whose names are greater than x. + schema: + type: string + end-marker: + in: query + name: end_marker + description: | + For a string value, x, constrains the list to items whose names are less than x. + schema: + type: string + format: + in: query + name: format + description: | + The response format. Valid values are json, xml, or plain. The default is plain. If you append the format=xml or format=json query parameter to the storage account URL, the response shows extended container information serialized in that format. If you append the format=plain query parameter, the response lists the container names separated by newlines. + schema: + type: string + enum: + - json + - xml + - plain + prefix: + in: query + name: prefix + description: | + Only objects with this prefix will be returned. When combined with a delimiter query, this enables API users to simulate and traverse the objects in a container as if they were in a directory tree. + schema: + type: string + delimiter: + in: query + name: delimiter + description: | + The delimiter is a single character used to split object names to present a pseudo-directory hierarchy of objects. When combined with a prefix query, this enables API users to simulate and traverse the objects in a container as if they were in a directory tree. + schema: + type: string + reverse: + in: query + name: reverse + description: | + By default, listings are returned sorted by name, ascending. If you include the reverse=true query parameter, the listing will be returned sorted by name, descending. + schema: + type: boolean + X-Newest: + in: header + name: X-Newest + description: | + If set to true, Object Storage queries all replicas to return the most recent one. If you omit this header, Object Storage responds faster after it finds one valid replica. Because setting this header to true is more expensive for the back end, use it only when it is absolutely needed. + schema: + type: boolean + accept: + in: header + name: accept + description: | + Instead of using the format query parameter, set this header to application/json, application/xml, or text/xml. + schema: + type: string + enum: + - application/json + - application/xml + - text/xml + multipart-manifest: + in: query + name: multipart-manifest + description: | + If you include the multipart-manifest=get query parameter and the object is a large object, the object contents are not returned. Instead, the manifest is returned in the X-Object-Manifest response header for dynamic large objects or in the response body for static large objects. + schema: + type: string + temp_url_sig: + in: query + name: temp_url_sig + description: | + Used with temporary URLs to sign the request with an HMAC-SHA1 cryptographic signature that defines the allowed HTTP method, expiration date, full path to the object, and the secret key for the temporary URL. For more information about temporary URLs, see Temporary URL middleware. + schema: + type: string + temp_url_expires: + in: query + name: temp_url_expires + description: | + The date and time in UNIX Epoch time stamp format or ISO 8601 UTC timestamp when the signature for temporary URLs expires. For example, 1440619048 or 2015-08-26T19:57:28Z is equivalent to Mon, Wed, 26 Aug 2015 19:57:28 GMT. For more information about temporary URLs, see Temporary URL middleware. + schema: + type: integer + filename: + in: query + name: filename + description: | + Overrides the default file name. Object Storage generates a default file name for GET temporary URLs that is based on the object name. Object Storage returns this value in the Content-Disposition response header. Browsers can interpret this file name value as a file attachment to save. For more information about temporary URLs, see Temporary URL middleware. + schema: + type: string + symlink: + in: query + name: symlink + description: | + If you include the symlink=get query parameter and the object is a symlink, then the response will include data and metadata from the symlink itself rather than from the target. + schema: + type: string + range: + in: header + name: range + description: | + The ranges of content to get. You can use the Range header to get portions of data by using one or more range specifications. To specify many ranges, separate the range specifications with a comma. The types of range specifications are: + + - Byte range specification. + Use FIRST_BYTE_OFFSET to specify the start of the data range, and + LAST_BYTE_OFFSET to specify the end. You can omit the + LAST_BYTE_OFFSET and if you do, the value defaults to the offset of + the last byte of data. + - Suffix byte range specification. + Use LENGTH bytes to specify the length of the data range. + + The following forms of the header specify the following ranges of data: + Range: bytes=-5. The last five bytes. + Range: bytes=10-15. The six bytes of data after a 10-byte offset. + Range: bytes=10-15,-5. A multi-part response that contains the last + five bytes and the six bytes of data after a 10-byte offset. The + Content-Type response header contains multipart/byteranges. + + Range: bytes=4-6. Bytes 4 to 6 inclusive. + Range: bytes=2-2. Byte 2, the third byte of the data. + Range: bytes=6-. Byte 6 and after. + Range: bytes=1-3,2-5. A multi-part response that contains bytes 1 to + 3 inclusive, and bytes 2 to 5 inclusive. The Content-Type + response header contains multipart/byteranges. + schema: + type: string + X-Delete-At: + in: header + name: X-Delete-At + description: | + The date and time in UNIX Epoch time stamp format when the system removes the object. For example, 1440619048 is equivalent to Mon, Wed, 26 Aug 2015 19:57:28 GMT. The value should be a positive integer corresponding to a time in the future. If both X-Delete-After and X-Delete-At are set then X-Delete-After takes precedence. + schema: + type: integer + x-openstack: + sdk-name: delete_at + X-Delete-After: + in: header + name: X-Delete-After + description: | + The number of seconds after which the system removes the object. The value should be a positive integer. Internally, the Object Storage system uses this value to generate an X-Delete-At metadata item. If both X-Delete-After and X-Delete-At are set then X-Delete-After takes precedence. + schema: + type: integer + x-openstack: + sdk-name: delete_after + X-Detect-Content-Type: + in: header + name: X-Detect-Content-Type + description: | + If set to true, Object Storage guesses the content type based on the file extension and ignores the value sent in the Content-Type header, if present. + schema: + type: boolean + x-openstack: + sdk-name: is_content_type_detected + X-Copy-From: + in: header + name: X-Copy-From + description: | + If set, this is the name of an object used to create the new object by copying the X-Copy-From object. The value is in form {container}/{object}. You must UTF-8-encode and then URL-encode the names of the container and object before you include them in the header. Using PUT with X-Copy-From has the same effect as using the COPY operation to copy an object. Using Range header with X-Copy-From will create a new partial copied object with bytes set by Range. + schema: + type: string + X-Copy-From-Account: + in: header + name: X-Copy-From-Account + description: | + Specifies the account name where the object is copied from. If not specified, the object is copied from the account which owns the new object (i.e., the account in the path). + schema: + type: string + Content-Disposition: + in: header + name: Content-Disposition + description: | + If set, specifies the override behavior for the browser. For example, this header might specify that the browser use a download program to save this file rather than show the file, which is the default. + schema: + type: string + x-openstack: + sdk-name: content_disposition + ETag: + in: header + name: ETag + description: | + The MD5 checksum value of the request body. For example, the MD5 checksum value of the object content. For manifest objects, this value is the MD5 checksum of the concatenated string of ETag values for each of the segments in the manifest. You are strongly recommended to compute the MD5 checksum value and include it in the request. This enables the Object Storage API to check the integrity of the upload. The value is not quoted. + schema: + type: string + x-openstack: + sdk-name: etag + If-None-Match: + in: header + name: If-None-Match + description: | + In combination with Expect: 100-Continue, specify an "If-None-Match: *" header to query whether the server already has a copy of the object before any data is sent. + schema: + type: string + X-Symlink-Target: + in: header + name: X-Symlink-Target + description: | + Set to specify that this is a symlink object. The value is the relative path of the target object in the format /. The target object does not need to exist at the time of symlink creation. You must UTF-8-encode and then URL-encode the names of the container and object before you include them in this header. + schema: + type: string + X-Symlink-Target-Account: + in: header + name: X-Symlink-Target-Account + description: | + Set to specify that this is a cross-account symlink to an object in the account specified in the value. The X-Symlink-Target must also be set for this to be effective. You must UTF-8-encode and then URL-encode the account name before you include it in this header. + schema: + type: string + Content-Encoding: + in: header + name: Content-Encoding + description: If set, the value of the Content-Encoding metadata. + schema: + type: string + x-openstack: + sdk-name: content_encoding + Content-Type: + in: header + name: Content-Type + description: Sets the MIME type for the object. + schema: + type: string + x-openstack: + sdk-name: content_type + schemas: + Container: + type: object + properties: + count: + description: The number of objects in the container. + type: integer + format: int64 + bytes: + description: | + The total number of bytes that are stored in Object Storage for the account. + type: integer + format: int64 + name: + description: The name of the container. + type: string + last_modified: + description: Last modification date of the container + type: string + format: date-time + Containers: + type: array + items: + $ref: '#/components/schemas/Container' + Object: + type: object + properties: + name: + description: The name of the container. + type: string + content_type: + description: The content type of the object. + type: string + bytes: + description: | + The total number of bytes that are stored in Object Storage for the container. + type: integer + format: int64 + hash: + description: The MD5 checksum value of the object content. + type: string + last_modified: + description: | + The date and time when the object was last modified. The date and time stamp format is ISO 8601 + type: string + format: date-time + symlink_path: + description: | + This field exists only when the object is symlink. This is the target path of the symlink object. + type: string + Objects: + type: array + items: + $ref: '#/components/schemas/Object' diff --git a/zuul.d/openapi.yaml b/zuul.d/openapi.yaml index 6380c6f..baaf77f 100644 --- a/zuul.d/openapi.yaml +++ b/zuul.d/openapi.yaml @@ -210,6 +210,17 @@ project: "opendev.org/openstack/neutron-lib" path: "/api-ref/build/html/v2/index.html" +- job: + name: codegenerator-openapi-object-store-static + parent: base + description: | + Generate OpenAPI spec for Swift + run: + - playbooks/openapi/static.yaml + vars: + codegenerator_work_dir: "wrk" + openapi_service: object-store + - job: name: codegenerator-openapi-placement-tips parent: codegenerator-openapi-tips-base @@ -286,6 +297,8 @@ soft: true - name: codegenerator-openapi-network-tips-with-api-ref soft: true + - name: codegenerator-openapi-object-store-static + soft: true - name: codegenerator-openapi-placement-tips-with-api-ref soft: true - name: codegenerator-openapi-shared-file-system-tips-with-api-ref diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index b2dea66..4969c90 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -12,6 +12,7 @@ - codegenerator-openapi-image-tips-with-api-ref - codegenerator-openapi-load-balancing-tips-with-api-ref - codegenerator-openapi-network-tips-with-api-ref + - codegenerator-openapi-object-store-static - codegenerator-openapi-placement-tips-with-api-ref - codegenerator-openapi-shared-file-system-tips-with-api-ref - codegenerator-tox-publish-openapi-specs @@ -25,6 +26,7 @@ - codegenerator-openapi-image-tips-with-api-ref - codegenerator-openapi-load-balancing-tips-with-api-ref - codegenerator-openapi-network-tips-with-api-ref + - codegenerator-openapi-object-store-static - codegenerator-openapi-placement-tips-with-api-ref - codegenerator-openapi-shared-file-system-tips-with-api-ref - codegenerator-tox-publish-openapi-specs