HERE · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Blob API v2 By Key API
11 actions
11 updates
phrasing
extends
openapi/here-by-key-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for HERE's API. It is a proposal applied on top of the contract, not a document HERE publishes.
What the actions change
x-apievangelist-phrasing
Targets 11
$.info
$.paths['/layers/{layerId}/keys/{key}'].get
$.paths['/layers/{layerId}/keys/{key}'].put
$.paths['/layers/{layerId}/keys/{key}'].post
$.paths['/layers/{layerId}/keys/{key}'].delete
$.paths['/layers/{layerId}/keys/{key}'].head
$.paths['/layers/{layerId}/keysMultipart/{multipartToken}'].get
$.paths['/layers/{layerId}/keysMultipart/{multipartToken}'].put
$.paths['/layers/{layerId}/keysMultipart/{multipartToken}'].delete
$.paths['/layers/{layerId}/keysMultipart/{multipartToken}/parts'].post
$.paths['/layers/{layerId}/keys'].get
OpenAPI Overlay
# 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'