openapi: 3.2.0 info: title: v2 Stream API description: The `stream` service provides the ability to consume data from a stream layer. With this service you can subscribe to a stream layer and consume messages. version: 2.1.2 x-olp-service: name: stream version: v2 servers: - url: https://use.apilookup.for.a.base.url/stream/v2 security: - Bearer: [] tags: - name: Stream description: Consume data from stream layers paths: /layers/{layerId}/subscribe: post: tags: - Stream summary: Enable message consumption from a specific stream layer description: 'Enables message consumption from a specific stream layer (topic). Use the base path returned from the API Lookup service. Note: For **mode = parallel**, one unit of parallelism currently equals 1 MBps inbound or 2 MBps outbound, whichever is greater, rounded up to the nearest integer. The number of subscriptions within the same group cannot exceed the parallelism allowed. For more details see Get Data from a Stream Layer.' operationId: Stream API v2 subscribe parameters: - $ref: '#/components/parameters/layerId' - $ref: '#/components/parameters/subscribeModeForSubscribeAPI' - name: subscriptionId in: query description: Include this parameter if you want to look up the `nodeBaseURL` for a given subscriptionId. required: false schema: type: string x-example: serial = -1920183912, parallel = -1920183912.123e4567-e89b-12d3-a456-556642440000 - name: consumerId in: query description: The ID to use to identify this consumer. It must be unique within the consumer group. If you do not provide one, the system will generate one. required: false schema: type: string x-example: 123e4567-e89b-12d3-a456-556642440000 requestBody: content: application/json: schema: $ref: '#/components/schemas/SubscriptionProperties' responses: '201': description: OK headers: X-Correlation-ID: $ref: '#/components/headers/X-Correlation-ID' content: application/json: schema: $ref: '#/components/schemas/ConsumerSubscribeResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: title: Subscription mode not supported status: 400 code: E213002 cause: Subscription mode 'singleton' not supported action: Retry with valid subscription mode 'serial' or 'parallel' correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: title: Stream layer not found status: 404 code: E213027 cause: Stream layer XYZ not found action: Verify stream layer name and existence, and retry correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '412': description: Pre-condition failed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: title: Max number of subscriptions reached status: 412 code: E213011 cause: 'Number of subscriptions cannot exceed number of partitions. Number of partitions: 32' action: Reduce the number of existing subscriptions correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: title: Internal Server Error status: 500 code: E213032 cause: Internal error occurred correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '503': description: Service Unavailable error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: title: Unable to create subscription status: 503 code: E213031 cause: Internal error occurred action: Retry after the provided 'Retry-After' seconds in header correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 x-olp-access-type: resource delete: tags: - Stream summary: Delete subscription to a layer description: Deletes a subscription to a layer (topic). This operation removes the subscription from the service. The base path to use is the value of 'nodeBaseURL' returned from /subscribe POST request. operationId: Stream API v2 deleteSubscription parameters: - $ref: '#/components/parameters/layerId' - $ref: '#/components/parameters/nonSubscribeAPIsSubscriptionId' - $ref: '#/components/parameters/subscribeModeForNonSubscribeAPIs' - $ref: '#/components/parameters/xRequestId' responses: '200': description: OK - Subscription was deleted successfully '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: title: SubscriptionId not provided status: 400 code: E213013 cause: SubscriptionId is mandatory for 'parallel' mode action: Retry with valid subscriptionId correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: title: Subscription not found status: 404 code: E213003 cause: SubscriptionId -1920183912.123e4567-e89b-12d3-a456-556642440000 not found action: Subscribe again correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Internal Server Error status: 500 code: E213032 cause: Internal error occurred correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 x-olp-access-type: resource x-baseurl-type: baseUrl /layers/{layerId}/partitions: get: tags: - Stream summary: Consumes data from a layer description: Consumes data from a layer. Returns messages from a stream layer formatted similar to a Partition object. If the data size is less than 1 MB, the `data` field will be populated. If the data size is greater than 1 MB, a data handle will be returned pointing to the object stored in the Blob store. The base path to be used is the value of 'nodeBaseURL' returned from /subscribe POST request. operationId: Stream API v2 consumeData parameters: - $ref: '#/components/parameters/layerId' - $ref: '#/components/parameters/nonSubscribeAPIsSubscriptionId' - $ref: '#/components/parameters/subscribeModeForNonSubscribeAPIs' responses: '200': description: OK headers: X-Correlation-ID: $ref: '#/components/headers/X-Correlation-ID' content: application/json: schema: $ref: '#/components/schemas/ConsumeDataResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Invalid subscriptionId status: 400 code: E213014 cause: Invalid subscriptionId action: Retry with valid subscriptionId correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Subscription not found status: 404 code: E213003 cause: SubscriptionId -1920183912.123e4567-e89b-12d3-a456-556642440000 not found action: Subscribe again correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Internal Server Error status: 500 code: E213032 cause: Internal error occurred correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '503': description: Service Unavailable error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Unable to create subscription status: 503 code: E213019 cause: Internal error occurred action: Retry after the provided 'Retry-After' seconds in header correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 x-olp-access-type: resource x-baseurl-type: baseUrl /layers/{layerId}/endpoint: get: tags: - Stream summary: Expose the endpoint to consume the data of the layer directly description: Returns a list of Kafka Broker URL's, client ID (required to enforce quotas), and Group ID prefix. Type is set to a consumer. operationId: Stream API v2 endpoint parameters: - $ref: '#/components/parameters/layerId' - $ref: '#/components/parameters/internalEndpointsBooleanForEndpointAPIs' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StreamLayerEndpointResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error1: value: title: Realm not found status: 400 code: E213017 cause: App / user is not associated with a realm action: Update access token and retry correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 error2: value: title: Invalid LayerID status: 400 code: E213033 cause: LayerId Validation Failed action: Retry with valid layerId correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Stream layer not found status: 404 code: E213016 cause: Stream layer XYZ not found action: Verify stream layer name and existence, and retry correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Internal Server Error status: 500 code: E213021 cause: Internal error occurred action: None correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 x-olp-access-type: resource x-baseurl-type: baseUrl /layers/{layerId}/{type}/endpoint: get: tags: - Stream summary: Exposes the endpoint to use to produce and consume the data of the layer… description: Exposes the endpoint to use to produce and consume the data of the layer directly, per type of user - consumer or producer. It returns a list of Kafka Broker URL's, client ID (required to enforce quotas), and Group ID prefix. operationId: Stream API v2 endpointByConsumer parameters: - $ref: '#/components/parameters/layerId' - name: type in: path description: Identifies whether the properties returned in the response are for a producer or consumer. required: true schema: type: string enum: - producer - consumer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StreamLayerEndpointResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error1: value: title: Client type not supported status: 400 code: E213004 cause: Client type 'reader' not supported action: Retry with valid client type 'producer' or 'consumer' correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 error2: value: title: Invalid LayerID status: 400 code: E213033 cause: LayerId Validation Failed action: Retry with valid layerId correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Stream layer not found status: 404 code: E213016 cause: Stream layer XYZ not found action: Verify stream layer name and existence, and retry correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Internal Server Error status: 500 code: E213021 cause: Internal error occurred action: None correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 x-olp-access-type: resource x-baseurl-type: baseUrl /layers/{layerId}/offsets: put: tags: - Stream summary: Commits offsets of the last message read description: After reading data, you should commit the offset of the last message read from each partition so that your application can resume reading new messages from the correct partition in the event that there is a disruption to the subscription, such as an application crash. An offset can also be useful if you delete a subscription then recreate a subscription for the same layer, because the new subscription can start reading data from the offset. To read messages already committed, use the /seek endpoint, then use /partitions. The base path to use is the value of 'nodeBaseURL' returned from /subscribe POST request. operationId: Stream API v2 commitOffsets parameters: - $ref: '#/components/parameters/layerId' - $ref: '#/components/parameters/nonSubscribeAPIsSubscriptionId' - $ref: '#/components/parameters/subscribeModeForNonSubscribeAPIs' requestBody: description: The offsets to commit. It should be same as the offset of the message you wish to commit. Do not pass offset + 1 as mentioned in Kafka Consumer documentation. The service adds one to the offset you specify. required: true content: application/json: schema: $ref: '#/components/schemas/CommitOffsetsRequest' responses: '200': description: OK, offsets committed headers: X-Correlation-ID: $ref: '#/components/headers/X-Correlation-ID' '202': description: OK, offsets committed. This status indicates that your multi-region catalog had a failover or failback event, and you have committed offsets from previous region. No actions are needed from you. headers: X-Correlation-ID: $ref: '#/components/headers/X-Correlation-ID' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: SubscriptionId not provided status: 400 code: E213013 cause: SubscriptionId is mandatory for 'parallel' mode action: Retry with valid subscriptionId correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Subscription not found status: 404 code: E213003 cause: SubscriptionId -1920183912.123e4567-e89b-12d3-a456-556642440000 not found action: Subscribe again correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Unable to commit offset status: 409 code: E213028 cause: Unable to commit offset action: Commit cannot be completed. Continue with reading and committing new messages correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '412': description: Pre-condition failed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Token refresh not permitted status: 412 code: E213010 cause: Token change is not permitted in /offsets but allowed in /partitions action: Perform token refresh on /partitions and call /offsets later correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Internal Server Error status: 500 code: E213021 cause: Internal error occurred action: None correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 x-olp-access-type: resource x-baseurl-type: baseUrl /layers/{layerId}/seek: put: tags: - Stream summary: Seek to predefined offset description: Enables you to start reading data from a specified offset. You can move the message pointer to any offset in the layer (topic). Message consumption will start from that offset. Once you seek to an offset, there is no returning to the initial offset, unless the initial offset is saved. The base path to use is the value of 'nodeBaseURL' returned from /subscribe POST request. operationId: Stream API v2 seekToOffset parameters: - $ref: '#/components/parameters/layerId' - $ref: '#/components/parameters/nonSubscribeAPIsSubscriptionId' - $ref: '#/components/parameters/subscribeModeForNonSubscribeAPIs' requestBody: description: List of offsets and offset partitions required: true content: application/json: schema: $ref: '#/components/schemas/SeekOffsetsRequest' responses: '200': description: OK, seek successful headers: X-Correlation-ID: $ref: '#/components/headers/X-Correlation-ID' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Realm not found status: 400 code: E213017 cause: App / user is not associated with a realm action: Update access token and retry correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Subscription not found status: 404 code: E213003 cause: SubscriptionId -1920183912.123e4567-e89b-12d3-a456-556642440000 not found action: Subscribe again correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: application/json: title: Internal Server Error status: 500 code: E213021 cause: Internal error occurred action: None correlationId: 4199533b-6290-41db-8d79-edf4f4019a74 x-olp-access-type: resource x-baseurl-type: baseUrl components: headers: X-Correlation-ID: description: 'Auto-generated ID, which uniquely identifies the request, available in the response. When contacting the support with an inquiry regarding a specific request, provide the value of this header; This will help troubleshooting the issue. ' schema: type: string example: 4199533b-6290-41db-8d79-edf4f4019a74 schemas: Metadata: type: object required: - partition properties: partition: type: string example: '314010583' description: A key that specifies which [Partition](https://www.here.com/docs/bundle/data-api-developer-guide/page/README.html) the content is related to. This is provided by the user while producing to the stream layer. The maximum length of the partition key is 500 characters. checksum: type: string format: '[0-9a-fA-F]+' example: ff7494d6f17da702862e550c907c0a91 description: The checksum of the content. The algorithm used to calculate the checksum is user specific. Algorithms that can be used are, for example, MD5 or SHA1. This is not a secure hash, it's used only to detect changes in content. compressedDataSize: type: integer format: int64 example: 152417 description: 'The compressed size of the content in bytes. Applicable also when `Content-Encoding` is set to gzip when uploading and downloading data. Note: This will be present only if ‘_dataHandle_’ field is present.' dataSize: type: integer format: int64 example: 250110 description: 'The nominal size in bytes of the content. When compression is enabled, this is the size of the uncompressed content. Note: This will be present only if the ‘dataHandle’ field is present.' data: type: string format: byte example: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAABhQTFRFvb29AACEAP8AhIKEPb5x2m9E5413aFQirhRuvAMqCw+6kE2BVsa8miQaYSKyshxFvhqdzKx8UsPYk9gDEcY1ghZXcPbENtax8g5T+3zHYufF1Lf9HdIZBfNEiKAAAAAElFTkSuQmCC description: 'The content published directly in the metadata and encoded in base64. The size of the content is limited. Either `data` or `dataHandle` must be present. Data Handle Example: 1b2ca68f-d4a0-4379-8120-cd025640510c. Note: This will be present only if the message size is less than or equal to 1 MB.' dataHandle: type: string example: '' description: 'The handle created when uploading the content. It is used to retrieve the content at a later stage. Either `data` or `dataHandle` must be present. Note: This will be present only if the message size is greater than 1 MB.' timestamp: type: integer format: int64 example: 1648139982000 description: The timestamp of the content, in milliseconds since the Unix epoch. This can be provided by the user while producing to the stream layer. Refer to [NewPartition Object](https://www.here.com/docs/category/data-sdk-for-java-and-scala-api-reference). If not provided by the user, this is the timestamp when the message was produced to the stream layer SubscribeModeEnum: type: string enum: - serial - parallel default: serial SubscriptionProperties: type: object properties: kafkaConsumerProperties: $ref: '#/components/schemas/KafkaConsumerProperties' title: SubscriptionProperties ConsumerSubscribeResponse: type: object properties: nodeBaseURL: type: string description: 'A subscription/Kafka Consumer is created in a specific server instance. This base URL represents the specific server node on which this subscription/Kafka Consumer was created. This base URL should be used instead of the base URL returned by the `lookup` service when making requests to these endpoints: /partitions, /offsets, /seek and /subscribe (DELETE).' example: https://web-2.streaming.data.api.platform.in.here.com/stream/v2/catalogs/webservice-catalog9fc50b27-4f4b-49e6-beb0-f974eb95863b subscriptionId: type: string example: -1920183912.123e4567-e89b-12d3-a456-556642440000 ConsumeDataResponse: type: object required: - messages properties: messages: type: array items: $ref: '#/components/schemas/Message' CommitOffsetsRequest: type: object properties: offsets: type: array items: $ref: '#/components/schemas/StreamOffset' ErrorResponse: type: object properties: title: type: string status: type: integer format: int32 code: type: string cause: type: string action: type: string correlationId: type: string StreamLayerEndpointResponse: type: object description: Information to use to connect to the stream layer. required: - kafkaProtocolVersion - topic - topics - clientId - consumerGroupPrefix - bootstrapServers properties: kafkaProtocolVersion: type: array items: type: string enum: - '0.10' topic: type: string example: mycatalogname.mylayername description: This field will be deprecated in next API version. Use topics field instead. topics: type: array items: type: string example: - mycatalogname.mylayername - mycatalogname.mylayername-_-replicated clientId: type: string example: my_realm.mycatalogname.mylayername consumerGroupPrefix: type: string description: If present, this should be used as the prefix of `group.id` [Kafka Consumer properties](https://kafka.apache.org/11/documentation.html#newconsumerconfigs). example: umkrdWxRx74iKsSBcwiN bootstrapServers: type: array items: $ref: '#/components/schemas/BootstrapServer' bootstrapServersInternal: type: array items: $ref: '#/components/schemas/BootstrapServer' BootstrapServer: type: object required: - hostname - port properties: hostname: type: string format: uri example: kafka-0a-sit.streaming.data.api.platform.in.here.com port: type: integer example: 9093 Message: type: object required: - metaData - offset properties: metaData: $ref: '#/components/schemas/Metadata' offset: $ref: '#/components/schemas/StreamOffset' SeekOffsetsRequest: type: object properties: offsets: type: array items: $ref: '#/components/schemas/StreamOffset' StreamOffset: type: object description: An offset in a specific partition of the stream layer. required: - partition - offset properties: partition: type: integer format: int32 example: 7 description: The partition of the stream layer for which this offset applies. It is not the same as [Partitions object](https://heremaps.github.io/here-workspace-examples-java-scala/scala/com/here/platform/data/client/scaladsl/Partition.html). offset: type: integer format: int64 example: 38562 description: The offset in the partition of the stream layer. KafkaConsumerProperties: type: object description: This is the same as [Kafka Consumer properties](https://kafka.apache.org/11/documentation.html#newconsumerconfigs) with some default values changed. properties: auto.commit.interval.ms: description: Refer to [Kafka Consumer properties](https://kafka.apache.org/11/documentation.html#newconsumerconfigs) type: integer format: int32 default: 5000 example: 5000 auto.offset.reset: description: Refer to [Kafka Consumer properties](https://kafka.apache.org/11/documentation.html#newconsumerconfigs) type: string enum: - latest - earliest - none default: earliest example: earliest enable.auto.commit: description: Refer to [Kafka Consumer properties](https://kafka.apache.org/11/documentation.html#newconsumerconfigs) type: boolean default: false example: false fetch.max.bytes: description: Refer to [Kafka Consumer properties](https://kafka.apache.org/11/documentation.html#newconsumerconfigs) type: integer format: int32 default: 52428800 example: 52428800 fetch.max.wait.ms: description: Refer to [Kafka Consumer properties](https://kafka.apache.org/11/documentation.html#newconsumerconfigs) type: integer format: int32 default: 500 example: 500 fetch.min.bytes: description: Refer to [Kafka Consumer properties](https://kafka.apache.org/11/documentation.html#newconsumerconfigs) type: integer format: int32 default: 1 example: 1 group.id: description: For applications intending to read in parallel mode belonging to same 'group.id' the values for 'catalogId, layerId, aid' should also be same type: string max.partition.fetch.bytes: description: Refer to [Kafka Consumer properties](https://kafka.apache.org/11/documentation.html#newconsumerconfigs) type: integer format: int32 default: 1048576 example: 1048576 max.poll.records: description: Refer to [Kafka Consumer properties](https://kafka.apache.org/11/documentation.html#newconsumerconfigs) type: integer format: int32 default: 500 example: 500 title: KafkaConsumerProperties parameters: internalEndpointsBooleanForEndpointAPIs: name: internal description: Specifies whether internal bootstrap servers will be returned in the response. in: query schema: type: boolean enum: - 'true' - 'false' default: 'false' layerId: name: layerId in: path description: The ID of the stream layers. required: true schema: type: string subscribeModeForSubscribeAPI: name: mode description: Specifies whether to use serial or parallel subscription mode. For more details see [Get Data from a Stream Layer](https://www.here.com/docs/bundle/data-api-developer-guide/page/rest/getting-data-stream.html). in: query schema: $ref: '#/components/schemas/SubscribeModeEnum' subscribeModeForNonSubscribeAPIs: name: mode description: The subscription mode of this subscriptionId (as provided in /subscribe POST API). in: query schema: $ref: '#/components/schemas/SubscribeModeEnum' xRequestId: name: X-Request-ID in: header description: User-provided token that can be used to trace a request or a group of requests sent to the service. schema: type: string nonSubscribeAPIsSubscriptionId: name: subscriptionId in: query description: The subscriptionId received in the response of the /subscribe request (required if mode=parallel). example: serial = -1920183912, parallel = -1920183912.123e4567-e89b-12d3-a456-556642440000 schema: type: string responses: Forbidden: description: 403 Forbidden content: '*/*': schema: type: object properties: error: type: string example: Forbidden error_description: type: string example: These credentials do not authorize access. Please contact your customer representative or submit a request here https://developer.here.com/contact-us to upgrade your account. You can also get valid credentials by registering for a free trial license on https://developer.here.com. Unauthorized: description: 401 Unauthorized content: '*/*': schema: type: object properties: error: type: string example: Unauthorized error_description: type: string example: Token Validation Failure - invalid time in token 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. 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). ' externalDocs: description: The developer guide and related API references are available here. url: https://www.here.com/docs/category/data-api