HERE Stream API v2

HERE Stream API v2 — 7 operation(s) across 6 path(s), OpenAPI 3.0.1 version 2.1.2, harvested verbatim from the HERE developer documentation. 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. Base URL is not fixed: the spec directs clients to resolve it at runtime through the HERE API Lookup Service (https://api-lookup.data.api.platform.here.com/lookup/v1).

Operations 7

POST /layers/{layerId}/subscribe Enable message consumption from a specific stream layer. #
DELETE /layers/{layerId}/subscribe Delete subscription to a layer #
GET /layers/{layerId}/partitions Consumes data from a layer #
GET /layers/{layerId}/endpoint Expose the endpoint to consume the data of the layer directly #
GET /layers/{layerId}/{type}/endpoint Exposes the endpoint to use to produce and consume the data of the layer directly #
PUT /layers/{layerId}/offsets Commits offsets of the last message read #
PUT /layers/{layerId}/seek Seek to predefined offset. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/here-data-stream-v2"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

here-data-stream-v2-openapi.yml Raw ↑
{"openapi":"3.0.1","info":{"title":"Stream API v2","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"}},"externalDocs":{"description":"The developer guide and related API references are available here.","url":"https://www.here.com/docs/category/data-api"},"tags":[{"name":"stream","description":"Consume data from stream layers"}],"servers":[{"url":"https://use.apilookup.for.a.base.url/stream/v2"}],"security":[{"Bearer":[]}],"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.\nNote: 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](doc:getting-data-stream).","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](https://heremaps.github.io/here-workspace-examples-java-scala/scala/com/here/platform/data/client/scaladsl/Partition.html). 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 directly","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":{"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\nFor 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"}},"parameters":{"layerId":{"name":"layerId","in":"path","description":"The ID of the stream layers.","required":true,"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"}},"subscribeModeForNonSubscribeAPIs":{"name":"mode","description":"The subscription mode of this subscriptionId (as provided in /subscribe POST API).","in":"query","schema":{"$ref":"#/components/schemas/SubscribeModeEnum"}},"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"}},"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"}},"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"}}},"responses":{"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"}}}}}},"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."}}}}}}},"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.\n","schema":{"type":"string"},"example":"4199533b-6290-41db-8d79-edf4f4019a74"},"X-Request-ID":{"description":"User-provided token that can be used to trace a request or a group of requests sent to the service.\n","schema":{"type":"string"}}},"schemas":{"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"}}},"SubscriptionProperties":{"type":"object","properties":{"kafkaConsumerProperties":{"$ref":"#/components/schemas/KafkaConsumerProperties"}},"title":"SubscriptionProperties"},"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"},"CommitOffsetsRequest":{"type":"object","properties":{"offsets":{"type":"array","items":{"$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."}}},"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}}},"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"}}},"Message":{"type":"object","required":["metaData","offset"],"properties":{"metaData":{"$ref":"#/components/schemas/Metadata"},"offset":{"$ref":"#/components/schemas/StreamOffset"}}},"ConsumeDataResponse":{"type":"object","required":["messages"],"properties":{"messages":{"type":"array","items":{"$ref":"#/components/schemas/Message"}}}},"ErrorResponse":{"type":"object","properties":{"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"code":{"type":"string"},"cause":{"type":"string"},"action":{"type":"string"},"correlationId":{"type":"string"}}},"SubscribeModeEnum":{"type":"string","enum":["serial","parallel"],"default":"serial"},"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"}}}},"SubscriptionNotFoundErrorForAPIsOtherThanUnSubscribe":{"description":"Not found error - subscription does not exist. Subscribe again using a /subscribe (POST) request.","type":"object","properties":{"scheme":{"$ref":"#/components/schemas/ErrorResponse"}}},"SubscriptionNotFoundErrorForUnSubscribe":{"description":"Not found error - subscription does not exist","type":"object","properties":{"scheme":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}