# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Blob API v2 By Key API version: 1.0.0 extends: openapi/here-by-key-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-09-26' generator: build-phrasing.py label: Generated by API Evangelist operations: 10 - target: $.paths['/layers/{layerId}/keys/{key}'].get update: x-apievangelist-phrasing: intent: Download a blob by key effect: read questions: - How do I download the object stored under a key in an object store layer? - Can I resume a large blob download partway through using a byte range? instructions: - text: Download the blob at key {key} in layer {layerId}. slots: key: path.key layerId: path.layerId - text: Resume downloading key {key} from layer {layerId} at byte range {Range}. slots: key: path.key layerId: path.layerId Range: header.Range method: generated generated: '2026-09-26' - target: $.paths['/layers/{layerId}/keys/{key}'].put update: x-apievangelist-phrasing: intent: Upload or copy a blob under a key effect: write questions: - How do I upload a file of up to 192 MB under a key in one request? - Can I copy an existing object to a new key instead of re-uploading it? instructions: - text: Upload a blob to key {key} in layer {layerId}. slots: key: path.key layerId: path.layerId - text: Copy object {source} to key {key} in layer {layerId}. slots: source: query.source key: path.key layerId: path.layerId method: generated generated: '2026-09-26' - target: $.paths['/layers/{layerId}/keys/{key}'].post update: x-apievangelist-phrasing: intent: Start a multipart upload for a key effect: write questions: - How do I upload a blob that is too big for a single request to a key? - What do I need to start a multipart upload in an object store layer? instructions: - text: Start a multipart upload for key {key} in layer {layerId} with content type {contentType}. slots: key: path.key layerId: path.layerId contentType: requestBody.contentType - text: Begin a multipart upload to {key} on layer {layerId}. slots: key: path.key layerId: path.layerId method: generated generated: '2026-09-26' - target: $.paths['/layers/{layerId}/keys/{key}'].delete update: x-apievangelist-phrasing: intent: Delete a blob by key effect: destructive questions: - How do I delete the object stored under a key? - Can I remove a single key from an object store layer? instructions: - text: Delete key {key} from layer {layerId}. slots: key: path.key layerId: path.layerId - text: Remove the blob stored at {key} in object store layer {layerId}. slots: key: path.key layerId: path.layerId method: generated generated: '2026-09-26' - target: $.paths['/layers/{layerId}/keys/{key}'].head update: x-apievangelist-phrasing: intent: Check that a key exists and read its metadata effect: read questions: - How can I tell whether a key exists in an object store layer without downloading it? - Can I get an object's metadata like size and type without its content? instructions: - text: Check whether key {key} exists in layer {layerId}. slots: key: path.key layerId: path.layerId - text: Fetch the metadata only for key {key} on layer {layerId}. slots: key: path.key layerId: path.layerId method: generated generated: '2026-09-26' - target: $.paths['/layers/{layerId}/keysMultipart/{multipartToken}'].get update: x-apievangelist-phrasing: intent: Check a key-based multipart upload's status effect: read questions: - Did my multipart upload to an object store key finish? - When can I read the status of a key-based multipart upload? instructions: - text: Get the status of multipart upload {multipartToken} in layer {layerId}. slots: multipartToken: path.multipartToken layerId: path.layerId - text: Tell me if keyed upload {multipartToken} on {layerId} has completed. slots: multipartToken: path.multipartToken layerId: path.layerId method: generated generated: '2026-09-26' - target: $.paths['/layers/{layerId}/keysMultipart/{multipartToken}'].put update: x-apievangelist-phrasing: intent: Finish a key-based multipart upload effect: write questions: - What call finalizes a multipart upload once every part of a keyed object is in? - How do I tell the object store that all my parts are uploaded? instructions: - text: Complete multipart upload {multipartToken} in layer {layerId}. slots: multipartToken: path.multipartToken layerId: path.layerId - text: Finalize keyed upload {multipartToken} on {layerId} with parts {parts}. slots: multipartToken: path.multipartToken layerId: path.layerId parts: requestBody.parts method: generated generated: '2026-09-26' - target: $.paths['/layers/{layerId}/keysMultipart/{multipartToken}'].delete update: x-apievangelist-phrasing: intent: Cancel a key-based multipart upload effect: destructive questions: - How do I abort a multipart upload to an object store key I started? - Can I cancel a keyed multipart upload after it has completed? instructions: - text: Cancel multipart upload {multipartToken} in layer {layerId}. slots: multipartToken: path.multipartToken layerId: path.layerId - text: Abort the unfinished keyed upload {multipartToken} on {layerId}. slots: multipartToken: path.multipartToken layerId: path.layerId method: generated generated: '2026-09-26' - target: $.paths['/layers/{layerId}/keysMultipart/{multipartToken}/parts'].post update: x-apievangelist-phrasing: intent: Upload or copy one part of a keyed upload effect: write questions: - What size must each part be in an object store multipart upload? - Can a part be copied from a byte range of an existing object instead of uploaded? instructions: - text: Upload part {partNumber} for keyed upload {multipartToken} in layer {layerId}. slots: partNumber: query.partNumber multipartToken: path.multipartToken layerId: path.layerId - text: Copy part {partNumber} of upload {multipartToken} on {layerId} from object {source}. slots: partNumber: query.partNumber multipartToken: path.multipartToken layerId: path.layerId source: query.source method: generated generated: '2026-09-26' - target: $.paths['/layers/{layerId}/keys'].get update: x-apievangelist-phrasing: intent: List keys in an object store layer effect: read questions: - What keys are stored in my object store layer? - Can I list keys like folders under a common prefix, or recursively? instructions: - text: List the keys in layer {layerId}. slots: layerId: path.layerId - text: List keys under prefix {parent} in layer {layerId}. slots: parent: query.parent layerId: path.layerId - text: Recursively list every key in {layerId} with deep set to {deep}. slots: layerId: path.layerId deep: query.deep method: generated generated: '2026-09-26'