openapi: 3.2.0 info: title: v1 Blob API description: The `blob` service supports the upload and retrieval of large volumes of data from the storage of a catalog. contact: {} version: 1.0.8 x-olp-service: name: blob version: v1 servers: - url: https://use.apilookup.for.a.base.url/ security: - Bearer: [] tags: - name: Blob description: Upload and retrieve large volumes of data paths: /layers/{layerId}/data/{dataHandle}: get: tags: - Blob summary: Gets a blob description: Retrieves a blob from storage. operationId: Blob API v1 getBlob parameters: - name: layerId in: path description: The ID of the parent layer for this blob. required: true schema: type: string - name: dataHandle in: path description: The data handle identifies a specific blob so that you can get that blob's contents. The data handle can only contain alphanumeric, '-' and '.' characters, [0-9, a-z, A-Z, -, .]. The maximum length of this field is 600 characters. required: true schema: type: string - name: accessType in: query description: 'Define preferred blob access type, possible values are: `inlineAccess` and `storageLayerAccess`. `inlineAccess` standard way to deliver blob content within the http response. If `storageLayerAccess` is specified then Blob Service can return http redirect to retrieve blob content from an alternative location, it can be either presigned url to AWS S3 or Azure Blob or similar service. On following redirect client should omit Authorization header.' required: false schema: type: string items: type: string enum: - inlineAccess - storageLayerAccess - name: billingTag in: query description: Billing Tag is an optional free-form tag which is used for grouping billing records together. If supplied, it must be between 4 - 16 characters, contain only alpha/numeric ASCII characters [A-Za-z0-9]. Grouping billing records by billing tag will be available in future releases. schema: type: string - name: Range in: header description: 'Use this parameter to resume download of a large response when there is a connection issue between the client and server, or to fetch a specific slice of the blob. To resume download after a connection issue, specify a single byte range offset like this: `Range: bytes=10-`. To fetch a specific slice of the blob, specify a slice like this: `Range: bytes=10-100`. This parameter is compliant with [RFC 7233](https://tools.ietf.org/html/rfc7233), but note that this parameter only supports a single byte range. The `range` parameter can also be specified as a query parameter, i.e. `range=bytes=10-`.' schema: type: string - name: If-None-Match in: header description: 'Entity tags uniquely representing the requested resources. Makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field-value is "*", or having a selected representation with an entity-tag that does not match any of those listed in the field-value. For more information, see [RFC 7232, section 3.2: If-None-Match](https://tools.ietf.org/html/rfc7232#section-3.2).' required: false schema: type: string responses: '200': description: OK - Response includes a blob. content: '*/*': schema: type: string format: binary '204': description: Blob is empty content: '*/*': schema: type: string format: byte example: string '206': description: Partial Content - indicates response to the Range query as per [RFC 7233](https://tools.ietf.org/html/rfc7233). content: '*/*': schema: type: string format: byte example: string '307': description: Temporary redirect to retrieve blob content from an alternative location. content: {} '400': description: Bad Request, for example if the dataHandle is malformed. content: {} '401': description: Unauthorized content: {} '403': description: Forbidden content: {} '404': description: Not Found - no blob is associated with this dataHandle content: {} '416': description: Range Not Satisfiable - indicates errors in the Range parameter as per [RFC 7233](https://tools.ietf.org/html/rfc7233). content: {} x-olp-access-type: resource put: tags: - Blob summary: Publishes a data blob description: Persists the data blob in the underlying storage mechanism (volume). Use this upload mechanism for blobs smaller than 50 MB. The size limit for blobs uploaded this way is 5 GB but we do not recommend uploading blobs this large with this method, so use multipart upload instead. When the operation completes successfully there is no guarantee that the data blob will be immediately available although in most cases it will be. To check if the data blob is available use the HEAD method. operationId: Blob API v1 putBlob parameters: - name: layerId in: path description: The ID of the layer that the data blob belongs to. required: true schema: type: string - name: dataHandle in: path description: The data handle (ID) represents an identifier for the data blob. The data handle can only contain alphanumeric, '-' and '.' characters, [0-9, a-z, A-Z, -, .]. The maximum length of this field is 600 characters. required: true schema: type: string - name: billingTag in: query description: Billing Tag is an optional free-form tag which is used for grouping billing records together. If supplied, it must be between 4 - 16 characters, contain only alpha/numeric ASCII characters [A-Za-z0-9]. Grouping billing records by billing tag will be available in future releases. schema: type: string - name: Content-Length in: header description: 'Size of the entity-body, in bytes. For more information, see [RFC 7230, section 3.3.2: Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2).' required: true schema: type: integer format: int64 example: 325 - name: Content-Encoding in: header description: Specifies what content encodings have been applied to the blob and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. If the 'contentEncoding' field is specified in the catalog layer configuration this value must be equal to it. For more information, see [RFC 7231, section 3.1.2.1](https://datatracker.ietf.org/doc/html/rfc7231#section-3.1.2.1).' required: false schema: type: string example: gzip - name: Content-Type in: header description: 'A standard MIME type describing the format of the blob data. For more information, see [RFC 2616, section 14.17: Content-Type](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17). The value of this header must match the content type specified in the ''contentType'' field when the multipart upload was initialized, and this content type must also match the content type specified in the layer''s configuration.' required: true schema: type: string example: application/json - $ref: '#/components/parameters/digestHeader' requestBody: description: body content: '*/*': schema: type: string format: binary required: true responses: '200': description: OK - Blob was uploaded content: {} '401': description: Unauthorized content: {} '403': description: Forbidden content: {} '404': description: Not Found content: {} '409': description: Conflict - indicates blob with this dataHandle already exists content: {} x-olp-access-type: resource x-codegen-request-body-name: body delete: tags: - Blob summary: Deletes a data blob from an index layer description: Deletes a data blob from the underlying storage mechanism (volume). The DELETE method works only for index layers. DELETE requests for blobs stored for other kind of layers will be rejected. The DELETE request is successfully accepted even if the data blob does not exist. operationId: Blob API v1 deleteBlob parameters: - name: layerId in: path description: The ID of the layer that the data blob belongs to. required: true schema: type: string - name: dataHandle in: path description: The data handle of the blob you want to delete. The data handle can only contain alphanumeric, '-' and '.' characters, [0-9, a-z, A-Z, -, .]. The maximum length of this field is 600 characters. required: true schema: type: string - name: billingTag in: query description: Billing Tag is an optional free-form tag which is used for grouping billing records together. If supplied, it must be between 4 - 16 characters, contain only alpha/numeric ASCII characters [A-Za-z0-9]. Grouping billing records by billing tag will be available in future releases. schema: type: string responses: '202': description: Accepted - The deletion request for the data blob was accepted. content: {} '401': description: Unauthorized content: {} '403': description: 'Forbidden - deletion is supported for index layers only. ' content: {} x-olp-access-type: resource head: tags: - Blob summary: Checks if a data handle exists description: Checks if a blob exists for the requested data handle. operationId: Blob API v1 checkBlobExists parameters: - name: layerId in: path description: The ID of the layer that the blob belongs to. required: true schema: type: string - name: dataHandle in: path description: The data handle identifies a specific blob so that you can get that blob's contents. The data handle can only contain alphanumeric, '-' and '.' characters, [0-9, a-z, A-Z, -, .]. The maximum length of this field is 600 characters. required: true schema: type: string - name: billingTag in: query description: Billing Tag is an optional free-form tag which is used for grouping billing records together. If supplied, it must be between 4 - 16 characters, contain only alpha/numeric ASCII characters [A-Za-z0-9]. Grouping billing records by billing tag will be available in future releases. schema: type: string - name: If-None-Match in: header description: 'Entity tags uniquely representing the requested resources. Makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field-value is "*", or having a selected representation with an entity-tag that does not match any of those listed in the field-value. For more information, see [RFC 7232, section 3.2: If-None-Match](https://tools.ietf.org/html/rfc7232#section-3.2).' required: false schema: type: string responses: '200': description: OK - dataHandle exists content: {} '401': description: Unauthorized content: {} '403': description: Forbidden content: {} '404': description: Not Found - dataHandle doesn't exist content: {} x-olp-access-type: resource /layers/{layerId}/data/{dataHandle}/multiparts: post: tags: - Blob summary: Starts a multipart upload of a blob and returns URLs for the next multipart… description: Publishes large data blobs where the data payload needs to be split into multiple parts. The multipart upload start is to be followed by the individual parts upload and completed with a call to complete the upload. The limit of the blob uploaded this way is 50GB. operationId: Blob API v1 startMultipartUpload parameters: - name: layerId in: path description: The ID of the layer that the data blob belongs to. required: true schema: type: string - name: dataHandle in: path description: The data handle (ID) represents an identifier for the data blob which contents will be persisted. The data handle can only contain alphanumeric, '-' and '.' characters, [0-9, a-z, A-Z, -, .]. The maximum length of this field is 600 characters. required: true schema: type: string - name: billingTag in: query description: Billing Tag is an optional free-form tag which is used for grouping billing records together. If supplied, it must be between 4 - 16 characters, contain only alpha/numeric ASCII characters [A-Za-z0-9]. Grouping billing records by billing tag will be available in future releases. schema: type: string requestBody: description: body content: application/json: schema: $ref: '#/components/schemas/MultipartUploadMetadata' required: false responses: '200': description: OK - the new multipart upload was successfully started. content: application/json: schema: $ref: '#/components/schemas/BlobInitResponse' '401': description: Unauthorized content: {} '403': description: Forbidden content: {} '404': description: Not Found - the provided layerId doesn't exist. content: {} '409': description: Conflict - indicates blob with this dataHandle already exists content: {} x-olp-access-type: resource x-codegen-request-body-name: body /layers/{layerId}/data/{dataHandle}/multiparts/{multiPartToken}: get: tags: - Blob summary: Gets the status of a multipart upload description: Gets the status of a multipart upload. The status can be received only when the upload has been completed. Please keep in mind that the actual URL for this operation must be obtained from the response body of start multipart operation that is 'POST /layers/{layerId}/data/{dataHandle}/multiparts' from the 'status' element under the top level 'links' element of the response. operationId: Blob API v1 getMultipartUploadStatus parameters: - name: layerId in: path description: The ID of the layer that the data blob part belongs to. required: true schema: type: string - name: dataHandle in: path description: The data handle (ID) is an identifier for the data blob which the part belongs to. The data handle can only contain alphanumeric, '-' and '.' characters, [0-9, a-z, A-Z, -, .]. The maximum length of this field is 600 characters. required: true schema: type: string - name: multiPartToken in: path description: The identifier of the multipart upload (token). Content of this parameter must refer to a valid token which was provided when the multipart upload was initiated. required: true schema: type: string - name: billingTag in: query description: Billing Tag is an optional free-form tag which is used for grouping billing records together. If supplied, it must be between 4 - 16 characters, contain only alphanumeric ASCII characters [A-Za-z0-9]. Grouping billing records by billing tag will be available in future releases. schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MultipartUploadStatus' '401': description: Unauthorized content: {} '403': description: Forbidden content: {} '404': description: Not Found - multipart upload token doesn't exist. content: {} x-olp-access-type: resource x-fullurl-type: fullUrl put: tags: - Blob summary: Completes a multipart upload description: Call this API when all parts have been uploaded. Please keep in mind that the actual URL for this operation must be obtained from the response body of start multipart operation that is 'POST /layers/{layerId}/data/{dataHandle}/multiparts' from the 'complete' element under the top level 'links' element of the response. operationId: Blob API v1 completeMultipartUpload parameters: - name: layerId in: path description: 'The ID of the layer that the data blob part belongs to. ' required: true schema: type: string - name: dataHandle in: path description: The data handle (ID) represents an identifier for the data blob which the part belongs to. The data handle can only contain alphanumeric, '-' and '.' characters, [0-9, a-z, A-Z, -, .]. The maximum length of this field is 600 characters. required: true schema: type: string - name: multiPartToken in: path description: The identifier of the multi part upload (token). Content of this parameter must refer to a valid and started multipart upload. required: true schema: type: string - name: billingTag in: query description: Billing Tag is an optional free-form tag which is used for grouping billing records together. If supplied, it must be between 4 - 16 characters, contain only alpha/numeric ASCII characters [A-Za-z0-9]. Grouping billing records by billing tag will be available in future releases. schema: type: string requestBody: description: The part ids uploaded in this multipart upload which should be used in the resulting blob. content: application/json: schema: $ref: '#/components/schemas/MultipartCompleteRequest' required: false responses: '204': description: No Content content: {} '401': description: Unauthorized content: {} '403': description: Forbidden content: {} '404': description: Not Found content: {} '409': description: Conflict - indicates blob with this dataHandle already exists content: {} x-olp-access-type: resource x-fullurl-type: fullUrl x-codegen-request-body-name: parts delete: tags: - Blob summary: Cancels a multipart upload description: Cancels an entire multipart upload operation. You can only cancel a multipart upload before it has been completed. Please keep in mind that the actual URL for this operation must be obtained from the response body of start multipart operation that is 'POST /layers/{layerId}/data/{dataHandle}/multiparts' from the 'delete' element under the top level 'links' element of the response. operationId: Blob API v1 cancelMultipartUpload parameters: - name: layerId in: path description: The ID of the layer that the data blob part belongs to. Content of this parameter must refer to a valid layer already configured in the catalog configuration. required: true schema: type: string - name: dataHandle in: path description: The data handle (ID) represents an identifier for the data blob which the part belongs to. The data handle can only contain alphanumeric, '-' and '.' characters, [0-9, a-z, A-Z, -, .]. The maximum length of this field is 600 characters. required: true schema: type: string - name: multiPartToken in: path description: The identifier of the multi part upload (token). Content of this parameter must refer to a valid token retrieved when starting the multipart upload. required: true schema: type: string - name: billingTag in: query description: Billing Tag is an optional free-form tag which is used for grouping billing records together. If supplied, it must be between 4 - 16 characters, contain only alpha/numeric ASCII characters [A-Za-z0-9]. Grouping billing records by billing tag will be available in future releases. schema: type: string responses: '204': description: Deleted - the multi part upload. content: {} '401': description: Unauthorized content: {} '403': description: Forbidden content: {} '404': description: Not Found - multipart upload doesn't exist. content: {} x-olp-access-type: resource x-fullurl-type: fullUrl /layers/{layerId}/data/{dataHandle}/multiparts/{multiPartToken}/parts: post: tags: - Blob summary: Uploads a part description: Upload a single part of a multipart upload for the blob. Every uploaded part except the last one must have a minimum 5 MB of data and maximum of 5 GB, but we do not recommend uploading parts this large. The maximum number of parts is 10,000. Please keep in mind that the actual URL for this operation must be obtained from the response body of start multipart operation that is 'POST /layers/{layerId}/data/{dataHandle}/multiparts' from the 'uploadPart' element under the top level 'links' element of the response. operationId: Blob API v1 uploadPart parameters: - name: layerId in: path description: The ID of the layer that the data blob part belongs to. required: true schema: type: string - name: dataHandle in: path description: The data handle (ID) represents an identifier for the data blob which the part belongs to. The data handle can only contain alphanumeric, '-' and '.' characters, [0-9, a-z, A-Z, -, .]. The maximum length of this field is 600 characters. required: true schema: type: string - name: multiPartToken in: path description: The identifier of the multi part upload (token). Content of this parameter must refer to a valid and started multipart upload. required: true schema: type: string - name: partNumber in: query description: The number of the part for the multi part upload. The numbers of the upload parts must start from 1, be no greater than 10,000 and be consecutive. Parts uploaded with the same `partNumber` are overridden. Do not reuse the same `partnumber` when retrying an upload in an error situation (network problems, 4xx or 5xx responses). Reusing the same `partnumber` in a retry may cause the publication to fail. required: true schema: type: string - name: billingTag in: query description: Billing Tag is an optional free-form tag which is used for grouping billing records together. If supplied, it must be between 4 - 16 characters, contain only alpha/numeric ASCII characters [A-Za-z0-9]. Grouping billing records by billing tag will be available in future releases. schema: type: string - name: Content-Type in: header description: 'A standard MIME type describing the format of the blob data. For more information, see [RFC 2616, section 14.17: Content-Type](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17). The value of this header must match the content type specified in the ''contentType'' field when the multipart upload was initialized, and this content type must also match the content type specified in the layer''s configuration.' required: true schema: type: string example: application/json - name: Content-Length in: header description: 'Size of the entity-body, in bytes. For more information, see [RFC 7230, section 3.3.2: Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2).' required: true schema: type: integer format: int64 example: 325 - $ref: '#/components/parameters/digestHeader' requestBody: description: The data to upload as part of the blob. content: '*/*': schema: type: string format: binary required: true responses: '200': description: Ok - Part was uploaded successfully headers: ETag: description: The etag assigned by the system which should be used when finalizing the multipart upload. Do not use `partNumber` or etag values generated in an error situation (see the description in the `partNumber` parameter). schema: type: string content: {} '401': description: Unauthorized content: {} '403': description: Forbidden content: {} '404': description: Not Found - the provided multipart upload doesn't exist. content: {} x-olp-access-type: resource x-fullurl-type: fullUrl x-codegen-request-body-name: body components: parameters: digestHeader: name: X-HERE-Digest in: header description: "This header can be used as a data integrity check to verify that the data received by the server is the same data that was originally sent by the client. \nThis header specifies the lowercase Hex encoded 32-bit CRC32C checksum of the object or 128-bit MD5 digest or 160-bit SHA1 digest or 256-bit SHA256 digest.\nYou can choose one of the following Secure Hash Algorithms (SHA) or Cyclic Redundancy Check (CRC) checksum algorithms to calculate the digest value:\n - CRC-32C\n - MD5\n - SHA1\n - SHA256\n\nValue of the header is a combination algorithm name and digest in following format: \"Algorithm:Digest\".\nIf the digest values calculated on the client side doesn't match to the digest on the server side, server generates Bad Request error." schema: type: string example: CRC-32C:f23c6e4e schemas: MultipartCompleteRequest: type: object properties: parts: type: array items: $ref: '#/components/schemas/MultipartCompletePart' BlobInitResponseUploadPartLink: type: object properties: href: type: string description: The URL to use to upload part of multipart upload. This link must be used as provided. Do not construct the URL for this operation by parsing the multipart token and concatenating the strings together. example: /blobstore/.../data/e02851bf4/multiparts/7767cf80.../parts method: type: string description: The HTTP method which should be used to execute this operation. example: POST description: Describes a link for the upload part of multipart upload operation. BlobInitResponseCompleteLink: type: object properties: href: type: string description: The URL to use to complete the multipart upload. This link must be used as provided. Do not construct the URL for this operation by parsing the multipart token and concatenating the strings together. example: /blobstore/.../data/e02851bf4/multiparts/7767cf80... method: type: string description: The HTTP method which should be used to execute this operation. example: PUT description: Describes a link for the multipart upload complete operation. BlobInitResponseStatusLink: type: object properties: href: type: string description: The URL to use to retrieve the multipart upload status. This link must be used as provided. Do not construct the URL for this operation by parsing the multipart token and concatenating the strings together. example: /blobstore/.../data/e02851bf4/multiparts/7767cf80... method: type: string description: HTTP method which should be used to execute this operation. example: GET description: Describes a link for multipart upload status operation. BlobInitResponse: type: object properties: links: $ref: '#/components/schemas/BlobInitResponseLinks' description: Describes a set of links for the multipart upload operations. BlobInitResponseLinks: type: object properties: complete: $ref: '#/components/schemas/BlobInitResponseCompleteLink' delete: $ref: '#/components/schemas/BlobInitResponseCancelLink' status: $ref: '#/components/schemas/BlobInitResponseStatusLink' uploadPart: $ref: '#/components/schemas/BlobInitResponseUploadPartLink' description: Describes a set of link for checking the uploading parts, getting status, finalizing, etc. of the multipart upload. MultipartCompletePart: required: - etag - number type: object properties: etag: type: string description: The etag assigned by the system to identify the uploaded part to include in the final publication. The etag is returned by the 'POST /layers/{layerId}/data/{dataHandle}/multiparts/{multiPartToken}/parts' operation, in its response `ETag` header after successfully uploading a part. example: 1h2h3k4j5h6ZCI6ImVyaWtzSGFuZGxlQadjiwo234ADF2323k34H5heoH543Hr number: type: integer description: The number of the part of the multipart upload. This is the same number used in the `partNumber` parameter in the 'POST /layers/{layerId}/data/{dataHandle}/multiparts/{multiPartToken}/parts' operation, corresponding to the `etag` returned by this operation. If an error occurs during upload, do not reuse the `partNumber` when retrying the upload. format: int32 example: 1 BlobInitResponseCancelLink: type: object properties: href: type: string description: The URL to use to cancel the multipart upload. This link must be used as provided. Do not construct the URL for this operation by parsing the multipart token and concatenating the strings together. example: /blobstore/.../data/e02851bf4/multiparts/7767cf80... method: type: string description: The HTTP method which should be used to execute this operation. example: DELETE description: Describes a link for multipart upload cancel operation. MultipartUploadMetadata: required: - contentType type: object properties: contentEncoding: type: string description: Specifies what content encodings have been applied to the blob and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. If the 'contentEncoding' field is specified in the catalog layer configuration this value must be equal to it. default: identity enum: - gzip - identity contentType: type: string description: 'A standard MIME type describing the format of the blob data. For more information, see [RFC 2616, section 14.17: Content-Type](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17). The value of this field must be equal to the one specified in the ''contentType'' field in the catalog layer configuration.' example: application/json MultipartUploadStatus: type: object properties: status: type: string description: The status of the multipart upload. example: completed enum: - failed - processing - completed description: Describes a status of the multipart upload. securitySchemes: Bearer: type: http scheme: bearer bearerFormat: JWT description: "A token obtained from a separate endpoint using client credentials and an OAuth 1.0a HMAC-SHA256 signed request.\n\n For more information on how to get a bearer token, see the [Identity & Access Management Guide](https://www.here.com/docs/bundle/identity-and-access-management-developer-guide/page/README.html).\n" externalDocs: description: The developer guide and related API references are available here. url: https://www.here.com/docs/category/data-api