Amazon S3 · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Amazon S3 REST Multipart Upload API

5 actions 5 updates phrasing extends openapi/amazon-s3-multipart-upload-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Amazon S3's API. It is a proposal applied on top of the contract, not a document Amazon S3 publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 5

$.info
$.paths['/{Bucket}/{Key+}?uploads'].post
$.paths['/{Bucket}/{Key+}?partNumber={partNumber}&uploadId={uploadId}'].put
$.paths['/{Bucket}/{Key+}?uploadId={uploadId}'].post
$.paths['/{Bucket}/{Key+}?uploadId={uploadId}'].delete

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Amazon S3 REST Multipart Upload API
  version: 1.0.0
extends: openapi/amazon-s3-multipart-upload-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-10-01'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 4
- target: $.paths['/{Bucket}/{Key+}?uploads'].post
  update:
    x-apievangelist-phrasing:
      intent: Start a multipart upload
      effect: write
      questions:
      - How do I begin uploading a very large file in parts?
      - Where do I get the upload ID that ties the parts together?
      instructions:
      - text: Start a multipart upload for {key} in bucket {bucket}.
        slots:
          key: path.Key+
          bucket: path.Bucket
      - text: Initiate a multipart upload of {key} to {bucket} with storage class {storage_class}.
        slots:
          key: path.Key+
          bucket: path.Bucket
          storage_class: header.x-amz-storage-class
      method: generated
      generated: '2026-10-01'
- target: $.paths['/{Bucket}/{Key+}?partNumber={partNumber}&uploadId={uploadId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Upload one part of a multipart upload
      effect: write
      questions:
      - What size does each part of a multipart upload need to be?
      - How many parts can a single multipart upload have?
      instructions:
      - text: Upload part {part} of upload {upload_id} for {key} in {bucket}.
        slots:
          part: query.partNumber
          upload_id: query.uploadId
          key: path.Key+
          bucket: path.Bucket
      - text: Send the next chunk as part {part} of multipart upload {upload_id}.
        slots:
          part: query.partNumber
          upload_id: query.uploadId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/{Bucket}/{Key+}?uploadId={uploadId}'].post
  update:
    x-apievangelist-phrasing:
      intent: Finish a multipart upload
      effect: write
      questions:
      - How do I assemble my uploaded parts into the final object?
      - What do I need to send to finish a multipart upload, part numbers and ETags?
      instructions:
      - text: Complete multipart upload {upload_id} for {key} in {bucket}.
        slots:
          upload_id: query.uploadId
          key: path.Key+
          bucket: path.Bucket
      - text: Assemble parts {parts} into the final object for upload {upload_id}.
        slots:
          parts: requestBody.Part
          upload_id: query.uploadId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/{Bucket}/{Key+}?uploadId={uploadId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Abort a multipart upload
      effect: destructive
      questions:
      - How do I cancel an unfinished multipart upload and free the storage its parts use?
      - Can I still upload parts after aborting an upload?
      instructions:
      - text: Abort multipart upload {upload_id} for {key} in {bucket}.
        slots:
          upload_id: query.uploadId
          key: path.Key+
          bucket: path.Bucket
      - text: Cancel the incomplete upload {upload_id} and discard its parts.
        slots:
          upload_id: query.uploadId
      method: generated
      generated: '2026-10-01'