{"openapi":"3.0.0","servers":[{"url":"https://tracking.hereapi.com/"},{"url":"https://tracking.api.here.com/"}],"info":{"version":"2.6.11","title":"HERE Tracking","description":"HERE Tracking is a cloud product designed to address location tracking problems for a wide range of Location IoT industry verticals.\n\nHERE Tracking also includes end-user mobile and web applications that can be used to demonstrate the product.","license":{"name":"HERE Documentation License","url":"https://legal.here.com/en-gb/terms/documentation-license"}},"externalDocs":{"description":"The Developer guide and Release notes are available here.","url":"https://www.here.com/docs/bundle/tracking-api-developer-guide"},"tags":[{"description":"The ingestion service provides an interface for devices to do data ingestion to HERE Tracking.\nThe ingested data is a device telemetry, which may include, for example, a GPS position, sensor readings,\nWLAN or Bluetooth scans.\nOnly a provisioned and a claimed device data is accepted.\n\nDevices should use uniquely this interface to send data to HERE Tracking.\n","name":"Ingestion"},{"description":"The Largedata service is used for storing large data blobs from devices to\nHERE Tracking and retrieving the resulting assembled data from HERE Tracking by the users.\n\nThe data upload from a device follows the multipart data upload pattern:\n\n* Create a new data upload.\n* Check that the upload status is no longer ***preparing***.\n* For each part:\n** Upload the part.\n* Complete the upload after all parts have been uploaded.\n\nA data upload state can be one of the following:\n* ***preparing***: The storage for the data is being prepared.\n* ***pending***: Data upload has been succesfully created but no parts have been uploaded yet.\n* ***ongoing***: Data upload is ongoing.\n* ***completed***: Data upload has been successfully completed.\n* ***failed***: Data upload has failed.\n\nData parts can be uploaded only if the upload state is one of the following: ***pending***, ***ongoing***, ***failed***.\nNote that the state will be changed to ***failed*** if uploading a part fails,\nbut if the part is uploaded again successfully, the upload state is changed back to ***ongoing***.\n\nThe data can be downloaded only if the upload state is ***completed***.\n","name":"Largedata"},{"description":"The Registry service is used for provisioning and claiming devices.\n","name":"Registry"},{"description":"\nAn alias is an arbitrary `type` - `externalId` pair, which can be associated with a `trackingId`.\n\nThe `externalId` can be, for example, an external management system asset ID or a human-readable name.\nAn alias is uniquely identified by an `externalId` and a `type` pair within a tracking project.\n\n> **IMPORTANT**\n> Aliases v2 API is deprecated.\n","name":"Aliases"},{"description":"An association is a link between a device and a geofence, a sensor rule or a rule.\nDevice events get generated for existing associations only.\n","name":"Associations"},{"description":"The Events service manages device and shipment events.\n\nAn event is created every time an associated rule or geofence is triggered by a device ingestion.\n\nA geofence event is created every time a device enters or exits an associated geofence.\nA sensor event is created when sensor data reported by a device triggers a sensor rule.\nA rule event (such as dwelling, detention, utilization, stock and online rule) is created when\na device behaviour triggers a rule.\n","name":"Events"},{"description":"The Geofences service creates and manages geofences.\n\nA geofence is an area boundary that users can define and associate with their devices.\nThe area that the geofence encloses can be defined using geographic coordinates or radio measurements.\n\nGeographic geofences can be `circular` or `polygonal`.\nA circular geofence is defined by geographic coordinates of its center and a radius,\nwhile polygonal geofences are defined as a set of geographic coordinates.\n\n`POI geofence` (Point Of Interest) is a geofence, which is defined using radio measurements.\nPOI geofences need to be trained separately using a telemetry that a device has recorded while\nbeing at the desired point of interest.\n\nOnce created, a geofence can be associated to a device.\nEvery time a position or a radio measurement update is received from a device,\nHERE Tracking would evaluate whether the device has transitioned across the boundary of\nan associated geofence.\nIf such a transition has happened, a transition event will be recorded.\nFor the geographic geofences, the evaluation is based on the coordinates of the trace.\nFor POI geofences, the device is considered to be inside a trained POI geofence when the radio\nmeasurements of the device-ingested telemetry and the training data match.\n\nIndoor geofences can be created by adding the floor properties to the geofence definition.\nCircular and polygonal geofences can be both outdoors and indoors.\nPOI geofences should only be used indoors.\nFor indoor geofences a device transition is recorded only if the position of the device is indoors\nand the floor details of the position match the geofence floor definition.\n\nNOTE: A geofence can also be referred to as a geozone, and these two terms are interchangeable.\n","name":"Geofences"},{"description":"The Labels service creates and manages labels.\n\nA label is a key-value pair that can be associated to the following resources:\n\n* device\n* geofence\n* sensor\n* rule\n* location\n* shipment\n\nOne can list labels for a specific resource or resource type, and filter\nlabels by keys or key-value pairs.\n\n> **IMPORTANT**\n> Labels v4 API is deprecated.\n","name":"Labels"},{"description":"The Locations service creates and manages locations.\n\nLocations are geographical points of interest users may store in HERE Tracking. Locations are\nused as building blocks for shipments.\n","name":"Locations"},{"description":"The Metadata service creates and manages metadata.\n\nMetadata is a descriptive information added to a device, a shipment, a geofence or a sensor rule.\n\n> **IMPORTANT**\n> Metadata v2 API is deprecated.\n","name":"Metadata"},{"description":"The Rules service creates and manages rules.\n\nRules generate events and notifications when get triggered by a device behaviour.\nThe following rule types are supported:\n* dwelling\n* detention\n* utilization\n* stock\n* online\n* shipmentEtaChange\n* shipmentSchedule\n\nAfter a rule has been created, it needs to be associated to a device to get activated.\n\nThis association means that every time a telemetry is received from the device,\nit will be evaluated against the rule condition.\nAs soon as the evaluation changes (for example, from true to false), an event will be recorded.\n","name":"Rules"},{"description":"The Sensors service creates and manages sensor rules.\n\nThe sensor rules generate events and notifications when get triggered by a\nreported device sensor reading.\n\nThe following sensor rule types are supported:\n* battery\n* humidity\n* pressure\n* temperature\n* acceleration\n* attach\n* tamper\n\nAfter a sensor rule has been created, it needs to be associated to a device to get activated.\n\nThis association means that every time a sensor update is received from the device as a part\nof its ingestion telemetry, it will be evaluated against the sensor rule condition.\nAs soon as the evaluation changes (for example, from true to false), an event will be recorded.\n","name":"Sensors"},{"description":"The Shadows service provides an effective way to manage configurations\nfor devices that are only intermittently online.\n\nThe device shadow contains `reported` and `desired` state objects of a device,\nreferred to as `reported` and `desired` shadows.\n\nThe `desired` shadow contains configuration settings that the device should use and possibly also\nsome optional custom settings.\nThe device receives the `desired` shadow from HERE Tracking as a response to the ingestion request.\n\nThe `reported` shadow contains the most recent position, sensor readings and settings that the\ndevice has sent. The reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry. Such properties are stored in the `system.computed`\nproperty.\n\nIn case the most recent telemetry did not contain all the possible\nfields, the last known information will remain in the shadow. This means that one can\nsee, for example, the last reported temperature or tracker firmware information in the reported shadow,\neven if the device did not send that information in the latest telemetry.\n\n> **IMPORTANT**\n> Devices should not communicate directly with this service, but should instead send the telemetry to\n> the ingestion endpoint, which updates the `reported` shadow and returns the `desired` shadow.\n> Applications should only write to the `desired` shadow and only read from the\n> `reported` shadow.\n","name":"Shadows"},{"description":"The Shipments service manages shipments.\n\nA shipment describes a structure of a multimodal logistics journey. Shipments are useful when\nthe lifetime of an asset one is tracking spans across multiple devices.\n\nA shipment consists of segments that span from a location to another. The segments and their\norigins and destinations must form a continuous chain of locations, that is the origin of a segment\nmust match the destination of a previous segment. Each segment of the shipment may be assigned a\n`trackingId` that can vary between segments. Devices assigned to a shipment generate traces\nand events for the entire shipment.\n\nThe `shipmentId` of a shipment can be used in similar fashion as a `trackingId` in selected\nAPIs. For example, one can query for shipment ***traces*** and ***events*** and associate ***aliases*** and\n***metadata*** to a shipment.\n\nEach shipment has one of the following statuses:\n* ***pending***: The shipment has not yet started.\n* ***ongoing***: The shipment has started and it has one segment ongoing.\n* ***completed***: The shipment has ended and all of its segments are completed.\n* ***cancelled***: The shipment has ended and it has one or more cancelled segments.\n\nHERE Tracking progresses the shipment automatically if each segment has been assigned a\n`trackingId` and the origin and destination locations contain a `geofenceId`. Each segment is\nstarted upon exiting the origin location of the segment and completed upon entering the\ndestination location of the segment. If the origin and the destination of a segment share the\nsame location (that is, dwelling in a single location), the segment will automatically be\nstarted after the previous segment was completed. To automatically start a segment which\nfollows a dwelling segment, both the dwelling and following segment has to have the same\n`trackingId` assigned to them. If a segment does not have a device assigned, the user must\nstart and complete the segment manually.\n\nA new shipment should be instantiated for each separate logistical journey.\n\nShipments that are still ongoing after two weeks are automatically cancelled.\nThis time limit can be altered via `registry/v2/features` endpoint by changing\n`data.shipments.ongoingRetentionPeriod` configuration option.\n\nShipments older than six months are automatically removed.\n\nAutomatic shipment startup can be constrained to trigger only at time of shipment's `providedEtd`\nby defining an auto-start limit window via configuration options of\n`data.shipments.autoStartLimitBefore` and `data.shipments.autoStartLimitAfter` through\n`registry/v2/features` endpoint.\n\nWith the auto-start limit window configured, pending shipments that have `providedEtd` set that\nare not started within the limit window are automatically cancelled.\n","name":"Shipments"},{"description":"The Traces service allows users querying device traces based on time ranges.\n\nA device trace is a device-ingested telemetry along with the ingestion timestamp\nand the device current position.\n\n> **NOTE**:\n> Devices should not communicate directly with this service, but should instead send telemetry to\n> the ingestion endpoint. Each data ingestion results in an update to the `reported` device shadow\n> and a new device trace creation.\n","name":"Traces"},{"description":"The Users service provides HERE Tracking user authentication and authorization.\n","name":"Users"}],"paths":{"/v2/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Ingestion"]}},"/v2/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Ingestion"]}},"/v2/timestamp":{"get":{"summary":"Gets the current timestamp","tags":["Ingestion"],"description":"Returns the current server time in seconds since the UNIX epoch.\nThe server time is used to check the validity of the OAuth 1.0 header of a device data ingestion request.\nDevices must synchronise with the server time to avoid a clock skew.\n\n> Note that in the data ingestion request the timestamp is specified in milliseconds.\n","parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"responses":{"200":{"description":"OK\n\nThe server timestamp was successfully returned\n","content":{"application/json":{"schema":{"type":"object","properties":{"timestamp":{"type":"integer","description":"Seconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Too Many Requests","code":429,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"Too Many Requests"}}},"description":"Too Many Requests\n\nUser has sent too many requests in a given amount of time.\n"}}}},"/v2/token":{"post":{"summary":"Requests a token for a registered device","security":[{"signedRequest":[]}],"description":"Authenticates a device to HERE Tracking and requests a device access token.\n\nA device must provide a valid device access token when it sends telemetry to HERE Tracking.\nTokens can be obtained upon a successful device authentication.\n\nThe device token requests must be signed. The signature method uses the OAuth 1.0 standard.\nFor more information on this standard, see the [OAuth Core 1.0](https://oauth.net/core/1.0/) specification.\n\nTokens can be requested only by claimed devices.\nA claimed device license, that is ```deviceId``` and ```deviceSecret``` credential pair, is used for creating a signed token request.\n\n> See the Authentication section for details on how to generate a signed token request.\n> A new signature must be created for each device access token request.\n> Signatures can only be used once.\n","parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"authorization","description":"Signed OAuth 1.0 header","in":"header","required":true,"example":"OAuth oauth_consumer_key='{deviceId}',oauth_signature_method='HMAC_SHA256',oauth_timestamp='{nowS}',oauth_nonce='{nonce}',oauth_signature='{signature}'","schema":{"type":"string"}}],"tags":["Ingestion"],"responses":{"200":{"description":"Successful","content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string"},"expiresIn":{"type":"integer"}},"example":{"accessToken":"h1.ySDEpBjW2fXM0Nk1IyBohA.6YOv1MfQUd1K7MCg9elZrrVTT5fKfqYECYUrD7Y77d-p9KqIZrVfjpIrkMqVC9MmfUILOm7xk7VuhCH59o0oLJCl6M8Q8cGHTKVrPcpqiEzUQKs7pSZXxVbIui0O5caUgJ3GHrS1X4aZQuB1KSsngvWMcIz0M0a4g4x8bICUHNRbISbQOWNTc7CcxRIJegIlj24dUawrhtnuQh50JUUY2pHYpSh_t8R0AVkm8JO-WEtWW3SZiLa30IR0gz2121vlRjdNolnJYsuJzHoaEKEkrMj9ffybtcBVWo9dkY1qmDQ-DRg_loVenJK45kjHJijkQ902r_vhH8jtoXTrZ1RBFHuZtwLW8xXBw70BCWPu4OYGgthjaq61mpE8iP1s7MG7gbAiW_S249aaoWMUxQN6djw8cNoTP6YPM-ivSieRMxwPl56mhRQ5GRjQa8AYkuOvoCFg-LCMIxTYhrDZM4HFWQ.duHFPjvWUQbdArCL5CU7bTowK5fD07ro83r6CRWjuB_1TK2VyO1lvfNFZIZePWLyTlN0y9uqD7Uro6t87h_a0zfpeU8_529KrB9vgpcBARF5LGBo8Rh7y2islYxCGJ2pAxHADtxkfiZ8TCoEatg0F3jkeggOl8YUFkeaI2g7WtnhZwrXBwW9QizQH3EM_Djnu66-kv_aM-uddpzZJJ7CmrJiwhucaEJeYRDSpuzzZWT6_NwBg6_xLjyseCv5AGs8EmsuStCFP0Ey7UDIqo9V2RA9uDP64Q0mvEw3EUTHmJGHF_8E2s4iIpjKJCvUGsGYAy8XrjeW10EBAMkfrn6cwA","expiresIn":86399}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"headers":{},"description":"*Timestamp wrong*\n\nWhen the request timestamp is skewed by more than 10 second from the\nserver time, the `x-here-timestamp` header with the current server\ntimestamp is added to the response.\n\n*Incorrect Signature*\n\nIf the OAuth signature is incorrect, the response code will be 401,\nand *no* `x-here-timestamp` header will be added.\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]}}}},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"description":"Invalid license","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]},"examples":{"response":{"value":{"code":404,"error":"No license found for the given deviceId.","id":"e69ce7d3-82f2-43cd-95b4-4402f98c9a61"}}}}}},"412":{"description":"Unclaimed Device\n\nIf the device ID is valid but the device has not yet been claimed by an owner, an error response will be returned.\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]},"examples":{"response":{"value":{"code":412,"error":"Device has not been claimed.","id":"e69ce7d3-82f2-43cd-95b4-4402f98c9a61"}}}}}},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Too Many Requests","code":429,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"Too Many Requests"}}},"description":"Too Many Requests\n\nUser has sent too many requests in a given amount of time.\n"}}}},"/v2/":{"post":{"summary":"Ingests data and receives a shadow","description":"Devices can use this end point to ingest data into HERE Tracking,\nin the same way as via the `/v3` endpoint.\n\nA device uses its access token obtained via the the `/v2/token` endpoint\nto send telemetry – GPS position, sensor readings, WLAN or Bluetooth scans - to HERE Tracking.\n\nBy default the request is synchronous and the response will be\nthe device `desired` shadow. If the request is set\nto be asynchronous, the response will be empty.\n\nThe device position gets resolved based on the `position` and `scan` objects\nprovided in the request body (see the objects definitions for details).\nIf only `position` is provided, it will be used as the device position.\nIf only `scan` is provided, the position will be resolved asynchronously\nvia the HERE Positioning API after returning a response.\nIf both are provided, `scan` is resolved to a position via the HERE Positioning API,\nand the better of the two positions (provided vs. resolved) will be selected.\nIf neither `position` nor `scan` is provided, or if the HERE Positioning API is not able to\nresolve the position, the device position will be left empty.\n\nThe `reported` shadow will be updated with the device latest position information,\nsensor readings and settings ingested by the device.\nThe reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in the `system.computed` property of the shadow.\nThe device shadow can be queried via the `shadows/v2/{trackingId}` endpoint.\n\nThe data ingested by the device will be available as a device trace via the `traces/v2/{trackingId}` endpoint.\n","security":[{"DeviceToken":[]}],"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"authorization","in":"header","required":true,"example":"Bearer h1.yxPIksZ0ViLq77f1Nh-9cg.NVgGBZVlCU8G7kjV_...","schema":{"type":"string"}},{"name":"async","in":"query","description":"If set to `true`, ingests the device data and responds immediately with an empty response body.","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"description":"A device telemetry data.\n\nThe timestamp specifies the time in milliseconds at which the device telemetry measurements were taken.\nThis must be within 10 seconds of the timestamp returned by the `/v2/timestamp` endpoint.\n\nExample of a GSM telemetry\n---\n\n```\n[{\n \"scan\": {\n \"gsm\": [{\n \"mcc\": 262,\n \"mnc\": 1,\n \"lac\": 5126,\n \"cid\": 16504,\n \"nmr\": [\n { \"bsic\": 6, \"bcch\": 82 },\n { \"bsic\": 7, \"bcch\": 85 },\n { \"bsic\": 12, \"bcch\": 93 },\n { \"bsic\": 13, \"bcch\": 88 },\n { \"bsic\": 19, \"bcch\": 88 }\n ]\n }]\n },\n \"payload\": {\n \"sensor\": \"data\"\n },\n \"timestamp\": 1515169948976\n}]\n```\n\nExample of a WLAN telemetry\n---\n\n```\n[{\n \"scan\": {\n \"wlan\": [\n { \"mac\": \"1c:1d:86:07:01:0f\", \"powrx\": -45 },\n { \"mac\": \"e4:f4:c6:d9:85:59\", \"powrx\": -39 },\n { \"mac\": \"1c:1d:86:07:01:0d\", \"powrx\": -43 },\n { \"mac\": \"1c:1d:86:07:01:0b\", \"powrx\": -44 },\n { \"mac\": \"1c:1d:86:07:01:04\", \"powrx\": -58 },\n { \"mac\": \"1c:1d:86:07:01:03\", \"powrx\": -59 }\n ]\n },\n \"payload\": {\n \"sensor\": \"data\"\n },\n \"timestamp\": 1515169948976\n}]\n```\n","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nSpecifies the time the device telemetry measurements were taken.\n","type":"integer","minimum":2,"maximum":4102448400000},"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"description":"Timestamp of the position","type":"integer","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"scan":{"type":"object","description":"Radio measurements used for positioning or radio map contribution.\n","properties":{"bt":{"description":"Bluetooth access points","type":"array","maxItems":128,"items":{"description":"Bluetooth measurement. In addition to rss, one of mac, eddystoneId, or iBeaconId is required.","type":"object","required":["rss"],"properties":{"timestamp":{"description":"Time of the measurement (UTC)","type":"string","format":"date-time"},"rss":{"description":"Received signal strength (dBm) at the terminal","type":"integer","minimum":-128,"maximum":0},"mac":{"description":"The MAC address of the Bluetooth access point. MAC-48 address with colon (:) or hyphen (-) separators, upper or lower case hex digits. For privacy reasons positioning based on a single Bluetooth AP is not possible. There must be at least one other matching WLAN or Bluetooth access point. Either MAC, EddystoneId, or iBeaconId is required.","type":"string","pattern":"^(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})|(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2})$"},"eddystoneId":{"description":"Full Identifier as Base64 string. A combination of 10-byte Namespace component and a 6-byte Instance component","type":"string","minLength":24,"maxLength":24},"iBeaconId":{"description":"Full Identifier as Base64 string. A combination of 16-byte UUID + 2-byte major + 2-byte minor","type":"string","minLength":28,"maxLength":28}}}},"country":{"description":"Indicates in which country the WLAN APs are located (in case cell data is not present in radio_observations)","type":"object","required":["mcc"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999}}},"gsm":{"description":"GSM cells (GERAN)","type":"array","maxItems":16,"items":{"description":"GSM measurement","type":"object","required":["mcc","mnc","lac","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"Cell Identifier, 16 bits. Mcc+mnc+lac+cid uniquely identifies the GSM cell.","type":"integer","minimum":0,"maximum":65535},"ta":{"description":"Timing advance (Optional). Expressed in the units of GSM bits equaling to 48/13 μs ~ 1107 meters.","type":"integer","minimum":0,"maximum":63},"rxlevel":{"description":"Received Signal power (dBm) (Optional). Power less than -110dBm should be mapped to -110. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-110,"maximum":-25},"bsic":{"description":"Base Station Identity Code (for instance, color code) (Optional, you must specify a value for this item when you specify a value for bcch).","type":"integer","minimum":0,"maximum":63},"bcch":{"description":"Broadcast Control Channel (Synonymous to ARFCN = Absolute Radio Frequency Channel) (Optional, you must specify a value for this item when you specify a value for bsic).","type":"integer","minimum":0,"maximum":1023},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":16,"items":{"description":"GSM Network measurement","type":"object","required":["bsic","bcch"],"properties":{"bsic":{"description":"Base Station Identity Code (for instance, color code)","type":"integer","minimum":0,"maximum":63},"bcch":{"description":"Broadcast Control Channel (Synonymous to ARFCN = Absolute Radio Frequency Channel)","type":"integer","minimum":0,"maximum":1023},"rxlevel":{"description":"Received Signal power (dBm) (Optional). Power less than -110dBm should be mapped to -110. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-110,"maximum":-25},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":65535}}}}}}},"wcdma":{"description":"WCDMA cells (UTRA-FDD, 3G UMTS)","type":"array","maxItems":16,"items":{"description":"WCDMA measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"UTRAN Cell Identifier, 28 bits (12 bits RNC and 16 bits Cell id). Mcc+mnc+cid uniquely identifies the WCDMA cell, lac is optional.","type":"integer","minimum":0,"maximum":268435455},"uarfcndl":{"description":"Downlink frequency of a UTRA-FDD Serving Cell (Optional, you must specify a value for this item when you specify a value for psc).","type":"integer","minimum":0,"maximum":16383},"psc":{"description":"Primary Scrambling Code (Primary CPICH, Primary Control Pilot Channel) (Optional, you must specify a value for this item when you specify a value for uarfcndl).","type":"integer","minimum":0,"maximum":511},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional).","type":"integer","minimum":46,"maximum":158},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional). Maximum of 8 uarfcndl times maximum of 32 psc.","type":"array","maxItems":256,"items":{"description":"WCDMA Network measurement","type":"object","required":["uarfcndl","psc"],"properties":{"uarfcndl":{"description":"Downlink frequency of a UTRA-FDD Serving Cell","type":"integer","minimum":0,"maximum":16383},"psc":{"description":"Primary Scrambling Code (Primary CPICH, Primary Control Pilot Channel)","type":"integer","minimum":0,"maximum":511},"cid":{"description":"UTRAN Cell Identifier (uc-id) (Optional)","type":"integer","minimum":0,"maximum":268435455},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional).","type":"integer","minimum":46,"maximum":158}}}}}}},"tdscdma":{"description":"TD-SCDMA cell (UTRA-TDD, 3G UMTS TDD)","type":"array","maxItems":16,"items":{"description":"TD-SCDMA measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"UTRAN Cell Identifier, 28 bits (12 bits RNC and 16 bits Cell id). Mcc+mnc+cid uniquely identifies the TDSCDMA cell, lac is optional.","type":"integer","minimum":0,"maximum":268435455},"ta":{"description":"Timing advance (Optional). Round-Trip distance presented in the units of 4*c/7.68e6 ~156 meters. That is, the scaling factor is 4 times the chip length at chip rate of 7.68 Mchips/s. Note that at chip rates 1.28 Mchips/s and 3.84 Mchips/s you need to scale according to chip length of 7.68 Mchips/s, that is, multiply by 6 or 2 if needed.","type":"integer","minimum":0,"maximum":1530},"uarfcn":{"description":"Carrier frequency of a UTRA-TDD Serving Cell (Optional, you must specify a value for this item when you specify a value for cellparams).","type":"integer","minimum":0,"maximum":16383},"cellparams":{"description":"Cell Parameters ID (CDMA Spreading Code ID) (Optional, you must specify a value for this item when you specify a value for uarfcn).","type":"integer","minimum":0,"maximum":127},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional, you must specify a value for this item when you specify a value for pathloss). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional, you must specify a value for this item when you specify a value for rscp).","type":"integer","minimum":46,"maximum":158},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"type":"array","description":"Network measurements (Optional). Maximum of 8 uarfcndl times maximum of 32 psc.","maxItems":256,"items":{"description":"TD-SCDMA Network measurement","type":"object","required":["uarfcn","cellparams"],"properties":{"uarfcn":{"description":"Carrier frequency of a UTRA-TDD Serving Cell","type":"integer","minimum":0,"maximum":16383},"cellparams":{"description":"Cell Parameters ID (CDMA Spreading Code ID)","type":"integer","minimum":0,"maximum":127},"cid":{"description":"Cell Identifier (uc-id) (Optional)","type":"integer","minimum":0,"maximum":268435455},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional, you must specify a value for this item when you specify a value for pathloss). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional, you must specify a value for this item when you specify a value for rscp).","type":"integer","minimum":46,"maximum":158}}}}}}},"lte":{"description":"LTE cells (E-UTRA, 4G)","type":"array","maxItems":16,"items":{"description":"LTE measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":16,"items":{"description":"LTE Network measurement","type":"object","required":["pci","earfcn"],"properties":{"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3}}}}}}},"lteCatM":{"description":"LTE Cat-M cells","type":"array","maxItems":16,"items":{"description":"LTE Cat-M measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"NB-IoT network measurement","type":"object","required":["pci","earfcn"],"properties":{"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3}}}},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"nbIot":{"description":"NB-IoT cells","type":"array","maxItems":16,"items":{"description":"NB-IoT measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"nmr":{"description":"NB-IoT Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"LTE Cat-M network measurement","type":"object","required":["pci","earfcn"],"properties":{"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"nrsrp":{"description":"Narrowband Reference Signal Received Power = NRSRP (dBm) (Optional). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"nrsrq":{"description":"Narrowband Reference Signal Received Quality = NRSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 2.5dB should be mapped to 2.5.","type":"number","minimum":-34,"maximum":2.5}}}},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"nrsrp":{"description":"Narrowband Reference Signal Received Power = NRSRP (dBm) (Optional). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"nrsrq":{"description":"Narrowband Reference Signal Received Quality = NRSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 2.5dB should be mapped to 2.5.","type":"number","minimum":-34,"maximum":2.5},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"cdma":{"description":"CDMA cells","type":"array","maxItems":16,"items":{"description":"CDMA measurement","type":"object","required":["sid","nid","bsid"],"properties":{"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535},"rz":{"description":"Registration zone (Optional)","type":"integer","minimum":0,"maximum":4095},"bsid":{"description":"Base Station ID, BID","type":"integer","minimum":0,"maximum":65535},"pnoffset":{"description":"Pseudonoise offset (Optional, you must specify a value for this item when you specify a value for channel)","type":"integer","minimum":0,"maximum":511},"channel":{"description":"CDMA channel frequency (Optional, you must specify a value for this item when you specify a value for pnoffset)","type":"integer","minimum":0,"maximum":2047},"pilotpower":{"description":"Pilot Power (dBm) (Optional). If Pilot Power is not available directly, it needs to be calculated from Total Power in the band and Pilot Strength with respect to the Total Power. Pilot power less than -142dBm should be mapped to -142. Pilot power greater than -49dBm should be mapped to -49.","type":"integer","minimum":-142,"maximum":-49},"baselat":{"description":"Base station latitude (Optional)","type":"number","minimum":-90,"maximum":90},"baselng":{"description":"Base station longitude (Optional)","type":"number","minimum":-180,"maximum":180},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"CDMA Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"CDMA Network measurement","type":"object","required":["pnoffset","channel"],"properties":{"pnoffset":{"description":"Pseudonoise offset","type":"integer","minimum":0,"maximum":511},"channel":{"description":"CDMA channel frequency","type":"integer","minimum":0,"maximum":2047},"frequency":{"description":"Deprecated. Use 'channel' instead.","type":"integer","minimum":0,"maximum":2047},"bsid":{"description":"Base Station ID (Optional)","type":"integer","minimum":0,"maximum":65535},"pilotpower":{"description":"Pilot Power (dBm) (Optional). If Pilot Power is not available directly, it needs to be calculated from Total Power in the band and Pilot Strength with respect to the Total Power. Pilot power less than -142dBm should be mapped to -142. Pilot power greater than -49dBm should be mapped to -49.","type":"integer","minimum":-142,"maximum":-49}}}}}}},"wlan":{"description":"WLAN access points","type":"array","maxItems":128,"items":{"description":"WLAN measurement","type":"object","required":["mac"],"properties":{"mac":{"description":"The MAC address of the WLAN access point. MAC-48 address with colon (:) or hyphen (-) separators, upper or lower case hex digits. Note that if the SSID contains postfix '_nomap', the AP should not be used for positioning. For privacy reasons positioning based on a single WLAN AP is not possible; there has to be at least one other matching wlan or cell.","type":"string","pattern":"^(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})|(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2})$"},"powrx":{"description":"Received signal level (dBm) at the terminal (Optional)","type":"integer","minimum":-128,"maximum":0},"band":{"description":"Frequency range (GHz). Allowed values are 2.4, 3.65, and 5. (Possible future values include 4.9, 5.9, 60, and 900.)","type":"number","enum":[2.4,3.65,5]},"timestamp":{"description":"Time of the wlan measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"gps":{"description":"Optionally supply this to improve HERE Tracking's positioning service by\ncontributing the scan data along with a GPS position.\n","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]}}}},"required":["timestamp"]}},"example":[{"scan":{"gsm":[{"mcc":262,"mnc":1,"lac":5126,"cid":16504,"nmr":[{"bsic":6,"bcch":82},{"bsic":7,"bcch":85},{"bsic":12,"bcch":93},{"bsic":13,"bcch":88},{"bsic":19,"bcch":88}]}]},"timestamp":1515169948976}]}}},"tags":["Ingestion"],"responses":{"200":{"description":"Successful\n\nThe device data was ingested and processed successfully and the `desired` shadow\nwas returned.\n\nThis response is returned if the `async` query parameter was not set to `true`.\n","content":{"application/json":{"schema":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","maximum":4102448400000,"minimum":0,"type":"integer"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to the desired shadow.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}}}}},"204":{"description":"Successful (no content).\n\nThe device data was ingested successfully and the response is empty.\nThis response is returned if the `async` query parameter was set to `true`.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"413":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Payload Too Large","code":413,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request size exceeds the maximum size limit for payloads.","details":{"hereErrorCode":413306}}}},"description":"Payload Too Large\n\nThe request size exceeds the maximum size limit for payloads.\n"},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Too Many Requests","code":429,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"Too Many Requests"}}},"description":"Too Many Requests\n\nUser has sent too many requests in a given amount of time.\n"}}}},"/v3/":{"post":{"summary":"Ingests data for a device and receives a shadow","description":"Devices can use this end point to ingest data into HERE Tracking.\n\nA device uses its access token obtained via the the `/v2/token` endpoint\nto send telemetry – GPS position, sensor readings, WLAN or Bluetooth scans - to HERE Tracking.\n\nAlso device owners use this end point to ingest data on behalf of a device.\n\nThe device can be either a real or a virtual device.\nA real device is identified by a `trackingId` assigned to it when the device was claimed.\nA virtual device is identified by an external device ID and the owner's project `appId`.\n\nIn case the ingestion is done by a device owner, the owner should first authenticate himself with\nHERE Tracking and obtain a user access token via the `/users/v2/login` endpoint.\nThe user access token will then be used in this API call.\n\nBy default the request is synchronous and the response will be\nthe device `desired` shadow. If the request is set\nto be asynchronous, the response will be empty.\n\nThe device position gets resolved based on the `position` and `scan` objects\nprovided in the request body (see the objects definitions for details).\nIf only `position` is provided, it will be used as the device position.\nIf only `scan` is provided, the position will be resolved asynchronously\nvia the HERE Positioning API after returning a response.\nIf both are provided, `scan` is resolved to a position via the HERE Positioning API,\nand the better of the two positions (provided vs. resolved) will be selected.\nIf neither `position` nor `scan` is provided, or if the HERE Positioning API is not able to\nresolve the position, the device position will be left empty.\n\nThe `reported` shadow will be updated with the device latest position information,\nsensor readings and settings ingested by the device.\nThe reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in the `system.computed` property of the shadow.\nThe device shadow can be queried via the `shadows/v2/{trackingId}` endpoint.\n\nThe data ingested by the device will be available as a device trace via the `traces/v2/{trackingId}` endpoint.\n","security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"authorization","in":"header","required":true,"example":"Bearer h1.yxPIksZ0ViLq77f1Nh-9cg.NVgGBZVlCU8G7kjV_...","schema":{"type":"string"}},{"name":"async","in":"query","description":"If set to `true`, ingests the device data and responds immediately with an empty response body.","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"description":"A device telemetry data.\n\nThe timestamp specifies the time in milliseconds at which the device telemetry measurements were taken.\nThis must be within 10 seconds of the timestamp returned by the `/v2/timestamp` endpoint.\n\nExample of a GSM telemetry\n---\n\n```\n[{\n \"scan\": {\n \"gsm\": [{\n \"mcc\": 262,\n \"mnc\": 1,\n \"lac\": 5126,\n \"cid\": 16504,\n \"nmr\": [\n { \"bsic\": 6, \"bcch\": 82 },\n { \"bsic\": 7, \"bcch\": 85 },\n { \"bsic\": 12, \"bcch\": 93 },\n { \"bsic\": 13, \"bcch\": 88 },\n { \"bsic\": 19, \"bcch\": 88 }\n ]\n }]\n },\n \"payload\": {\n \"sensor\": \"data\"\n },\n \"timestamp\": 1515169948976\n}]\n```\n\nExample of a WLAN telemetry\n---\n\n```\n[{\n \"scan\": {\n \"wlan\": [\n { \"mac\": \"1c:1d:86:07:01:0f\", \"powrx\": -45 },\n { \"mac\": \"e4:f4:c6:d9:85:59\", \"powrx\": -39 },\n { \"mac\": \"1c:1d:86:07:01:0d\", \"powrx\": -43 },\n { \"mac\": \"1c:1d:86:07:01:0b\", \"powrx\": -44 },\n { \"mac\": \"1c:1d:86:07:01:04\", \"powrx\": -58 },\n { \"mac\": \"1c:1d:86:07:01:03\", \"powrx\": -59 }\n ]\n },\n \"payload\": {\n \"sensor\": \"data\"\n },\n \"timestamp\": 1515169948976\n}]\n```\n","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"appId":{"description":"The user's project appId. Used together with an external ID to identify the virtual device.","type":"string"},"id":{"description":"Tracking ID or application specific external ID, needed only if ingesting on behalf of another device.","type":"string","minLength":1,"maxLength":50},"data":{"type":"array","items":{"type":"object","properties":{"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nSpecifies the time the device telemetry measurements were taken.\n","type":"integer","minimum":2,"maximum":4102448400000},"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"description":"Timestamp of the position","type":"integer","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"scan":{"type":"object","description":"Radio measurements used for positioning or radio map contribution.\n","properties":{"bt":{"description":"Bluetooth access points","type":"array","maxItems":128,"items":{"description":"Bluetooth measurement. In addition to rss, one of mac, eddystoneId, or iBeaconId is required.","type":"object","required":["rss"],"properties":{"timestamp":{"description":"Time of the measurement (UTC)","type":"string","format":"date-time"},"rss":{"description":"Received signal strength (dBm) at the terminal","type":"integer","minimum":-128,"maximum":0},"mac":{"description":"The MAC address of the Bluetooth access point. MAC-48 address with colon (:) or hyphen (-) separators, upper or lower case hex digits. For privacy reasons positioning based on a single Bluetooth AP is not possible. There must be at least one other matching WLAN or Bluetooth access point. Either MAC, EddystoneId, or iBeaconId is required.","type":"string","pattern":"^(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})|(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2})$"},"eddystoneId":{"description":"Full Identifier as Base64 string. A combination of 10-byte Namespace component and a 6-byte Instance component","type":"string","minLength":24,"maxLength":24},"iBeaconId":{"description":"Full Identifier as Base64 string. A combination of 16-byte UUID + 2-byte major + 2-byte minor","type":"string","minLength":28,"maxLength":28}}}},"country":{"description":"Indicates in which country the WLAN APs are located (in case cell data is not present in radio_observations)","type":"object","required":["mcc"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999}}},"gsm":{"description":"GSM cells (GERAN)","type":"array","maxItems":16,"items":{"description":"GSM measurement","type":"object","required":["mcc","mnc","lac","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"Cell Identifier, 16 bits. Mcc+mnc+lac+cid uniquely identifies the GSM cell.","type":"integer","minimum":0,"maximum":65535},"ta":{"description":"Timing advance (Optional). Expressed in the units of GSM bits equaling to 48/13 μs ~ 1107 meters.","type":"integer","minimum":0,"maximum":63},"rxlevel":{"description":"Received Signal power (dBm) (Optional). Power less than -110dBm should be mapped to -110. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-110,"maximum":-25},"bsic":{"description":"Base Station Identity Code (for instance, color code) (Optional, you must specify a value for this item when you specify a value for bcch).","type":"integer","minimum":0,"maximum":63},"bcch":{"description":"Broadcast Control Channel (Synonymous to ARFCN = Absolute Radio Frequency Channel) (Optional, you must specify a value for this item when you specify a value for bsic).","type":"integer","minimum":0,"maximum":1023},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":16,"items":{"description":"GSM Network measurement","type":"object","required":["bsic","bcch"],"properties":{"bsic":{"description":"Base Station Identity Code (for instance, color code)","type":"integer","minimum":0,"maximum":63},"bcch":{"description":"Broadcast Control Channel (Synonymous to ARFCN = Absolute Radio Frequency Channel)","type":"integer","minimum":0,"maximum":1023},"rxlevel":{"description":"Received Signal power (dBm) (Optional). Power less than -110dBm should be mapped to -110. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-110,"maximum":-25},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":65535}}}}}}},"wcdma":{"description":"WCDMA cells (UTRA-FDD, 3G UMTS)","type":"array","maxItems":16,"items":{"description":"WCDMA measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"UTRAN Cell Identifier, 28 bits (12 bits RNC and 16 bits Cell id). Mcc+mnc+cid uniquely identifies the WCDMA cell, lac is optional.","type":"integer","minimum":0,"maximum":268435455},"uarfcndl":{"description":"Downlink frequency of a UTRA-FDD Serving Cell (Optional, you must specify a value for this item when you specify a value for psc).","type":"integer","minimum":0,"maximum":16383},"psc":{"description":"Primary Scrambling Code (Primary CPICH, Primary Control Pilot Channel) (Optional, you must specify a value for this item when you specify a value for uarfcndl).","type":"integer","minimum":0,"maximum":511},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional).","type":"integer","minimum":46,"maximum":158},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional). Maximum of 8 uarfcndl times maximum of 32 psc.","type":"array","maxItems":256,"items":{"description":"WCDMA Network measurement","type":"object","required":["uarfcndl","psc"],"properties":{"uarfcndl":{"description":"Downlink frequency of a UTRA-FDD Serving Cell","type":"integer","minimum":0,"maximum":16383},"psc":{"description":"Primary Scrambling Code (Primary CPICH, Primary Control Pilot Channel)","type":"integer","minimum":0,"maximum":511},"cid":{"description":"UTRAN Cell Identifier (uc-id) (Optional)","type":"integer","minimum":0,"maximum":268435455},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional).","type":"integer","minimum":46,"maximum":158}}}}}}},"tdscdma":{"description":"TD-SCDMA cell (UTRA-TDD, 3G UMTS TDD)","type":"array","maxItems":16,"items":{"description":"TD-SCDMA measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"UTRAN Cell Identifier, 28 bits (12 bits RNC and 16 bits Cell id). Mcc+mnc+cid uniquely identifies the TDSCDMA cell, lac is optional.","type":"integer","minimum":0,"maximum":268435455},"ta":{"description":"Timing advance (Optional). Round-Trip distance presented in the units of 4*c/7.68e6 ~156 meters. That is, the scaling factor is 4 times the chip length at chip rate of 7.68 Mchips/s. Note that at chip rates 1.28 Mchips/s and 3.84 Mchips/s you need to scale according to chip length of 7.68 Mchips/s, that is, multiply by 6 or 2 if needed.","type":"integer","minimum":0,"maximum":1530},"uarfcn":{"description":"Carrier frequency of a UTRA-TDD Serving Cell (Optional, you must specify a value for this item when you specify a value for cellparams).","type":"integer","minimum":0,"maximum":16383},"cellparams":{"description":"Cell Parameters ID (CDMA Spreading Code ID) (Optional, you must specify a value for this item when you specify a value for uarfcn).","type":"integer","minimum":0,"maximum":127},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional, you must specify a value for this item when you specify a value for pathloss). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional, you must specify a value for this item when you specify a value for rscp).","type":"integer","minimum":46,"maximum":158},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"type":"array","description":"Network measurements (Optional). Maximum of 8 uarfcndl times maximum of 32 psc.","maxItems":256,"items":{"description":"TD-SCDMA Network measurement","type":"object","required":["uarfcn","cellparams"],"properties":{"uarfcn":{"description":"Carrier frequency of a UTRA-TDD Serving Cell","type":"integer","minimum":0,"maximum":16383},"cellparams":{"description":"Cell Parameters ID (CDMA Spreading Code ID)","type":"integer","minimum":0,"maximum":127},"cid":{"description":"Cell Identifier (uc-id) (Optional)","type":"integer","minimum":0,"maximum":268435455},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional, you must specify a value for this item when you specify a value for pathloss). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional, you must specify a value for this item when you specify a value for rscp).","type":"integer","minimum":46,"maximum":158}}}}}}},"lte":{"description":"LTE cells (E-UTRA, 4G)","type":"array","maxItems":16,"items":{"description":"LTE measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":16,"items":{"description":"LTE Network measurement","type":"object","required":["pci","earfcn"],"properties":{"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3}}}}}}},"lteCatM":{"description":"LTE Cat-M cells","type":"array","maxItems":16,"items":{"description":"LTE Cat-M measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"NB-IoT network measurement","type":"object","required":["pci","earfcn"],"properties":{"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3}}}},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"nbIot":{"description":"NB-IoT cells","type":"array","maxItems":16,"items":{"description":"NB-IoT measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"nmr":{"description":"NB-IoT Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"LTE Cat-M network measurement","type":"object","required":["pci","earfcn"],"properties":{"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"nrsrp":{"description":"Narrowband Reference Signal Received Power = NRSRP (dBm) (Optional). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"nrsrq":{"description":"Narrowband Reference Signal Received Quality = NRSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 2.5dB should be mapped to 2.5.","type":"number","minimum":-34,"maximum":2.5}}}},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"nrsrp":{"description":"Narrowband Reference Signal Received Power = NRSRP (dBm) (Optional). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"nrsrq":{"description":"Narrowband Reference Signal Received Quality = NRSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 2.5dB should be mapped to 2.5.","type":"number","minimum":-34,"maximum":2.5},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"cdma":{"description":"CDMA cells","type":"array","maxItems":16,"items":{"description":"CDMA measurement","type":"object","required":["sid","nid","bsid"],"properties":{"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535},"rz":{"description":"Registration zone (Optional)","type":"integer","minimum":0,"maximum":4095},"bsid":{"description":"Base Station ID, BID","type":"integer","minimum":0,"maximum":65535},"pnoffset":{"description":"Pseudonoise offset (Optional, you must specify a value for this item when you specify a value for channel)","type":"integer","minimum":0,"maximum":511},"channel":{"description":"CDMA channel frequency (Optional, you must specify a value for this item when you specify a value for pnoffset)","type":"integer","minimum":0,"maximum":2047},"pilotpower":{"description":"Pilot Power (dBm) (Optional). If Pilot Power is not available directly, it needs to be calculated from Total Power in the band and Pilot Strength with respect to the Total Power. Pilot power less than -142dBm should be mapped to -142. Pilot power greater than -49dBm should be mapped to -49.","type":"integer","minimum":-142,"maximum":-49},"baselat":{"description":"Base station latitude (Optional)","type":"number","minimum":-90,"maximum":90},"baselng":{"description":"Base station longitude (Optional)","type":"number","minimum":-180,"maximum":180},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"CDMA Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"CDMA Network measurement","type":"object","required":["pnoffset","channel"],"properties":{"pnoffset":{"description":"Pseudonoise offset","type":"integer","minimum":0,"maximum":511},"channel":{"description":"CDMA channel frequency","type":"integer","minimum":0,"maximum":2047},"frequency":{"description":"Deprecated. Use 'channel' instead.","type":"integer","minimum":0,"maximum":2047},"bsid":{"description":"Base Station ID (Optional)","type":"integer","minimum":0,"maximum":65535},"pilotpower":{"description":"Pilot Power (dBm) (Optional). If Pilot Power is not available directly, it needs to be calculated from Total Power in the band and Pilot Strength with respect to the Total Power. Pilot power less than -142dBm should be mapped to -142. Pilot power greater than -49dBm should be mapped to -49.","type":"integer","minimum":-142,"maximum":-49}}}}}}},"wlan":{"description":"WLAN access points","type":"array","maxItems":128,"items":{"description":"WLAN measurement","type":"object","required":["mac"],"properties":{"mac":{"description":"The MAC address of the WLAN access point. MAC-48 address with colon (:) or hyphen (-) separators, upper or lower case hex digits. Note that if the SSID contains postfix '_nomap', the AP should not be used for positioning. For privacy reasons positioning based on a single WLAN AP is not possible; there has to be at least one other matching wlan or cell.","type":"string","pattern":"^(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})|(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2})$"},"powrx":{"description":"Received signal level (dBm) at the terminal (Optional)","type":"integer","minimum":-128,"maximum":0},"band":{"description":"Frequency range (GHz). Allowed values are 2.4, 3.65, and 5. (Possible future values include 4.9, 5.9, 60, and 900.)","type":"number","enum":[2.4,3.65,5]},"timestamp":{"description":"Time of the wlan measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"gps":{"description":"Optionally supply this to improve HERE Tracking's positioning service by\ncontributing the scan data along with a GPS position.\n","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]}}}},"required":["timestamp"]}}},"example":{"appId":"MyAppId123","id":"MyDevice1","data":[{"scan":{"gsm":[{"mcc":262,"mnc":1,"lac":5126,"cid":16504,"nmr":[{"bsic":6,"bcch":82},{"bsic":7,"bcch":85},{"bsic":12,"bcch":93},{"bsic":13,"bcch":88},{"bsic":19,"bcch":88}]}]},"timestamp":1515169948976}]}}}}},"tags":["Ingestion"],"responses":{"200":{"description":"Successful\n\nThe device data was ingested and processed successfully and the `desired` shadow\nwas returned.\n\nThis response is returned if the `async` query parameter was not set to `true`.\n","content":{"application/json":{"schema":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","maximum":4102448400000,"minimum":0,"type":"integer"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to the desired shadow.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}}}}},"204":{"description":"Successful (no content).\n\nThe device data was ingested successfully and the response is empty.\nThis response is returned if the `async` query parameter was set to `true`.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"413":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Payload Too Large","code":413,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request size exceeds the maximum size limit for payloads.","details":{"hereErrorCode":413306}}}},"description":"Payload Too Large\n\nThe request size exceeds the maximum size limit for payloads.\n"},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Too Many Requests","code":429,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"Too Many Requests"}}},"description":"Too Many Requests\n\nUser has sent too many requests in a given amount of time.\n"}}}},"/v3/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Ingestion"]}},"/v3/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Ingestion"]}},"/v3/batch":{"post":{"summary":"Ingests data for multiple devices","description":"Device owner use this endpoint to ingest data to HERE Tracking on behalf of multiple devices.\n\nA single request can contain data for multiple devices.\nThe devices can be either real or virtual.\nA real device is identified by a `trackingId` assigned to it when the device was claimed.\nA virtual device is identified by an external device ID and the owner's project `appId`.\n\nPrior to making the request, the device owner should first authenticate himself with\nHERE Tracking and obtain a user access token.\nThe user access token will then be used in this API call.\n\nFor more information on the device position resolution, and the device shadow and trace updates,\nsee the `/v3` endpoint description.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"authorization","in":"header","required":true,"example":"Bearer h1.yxPIksZ0ViLq77f1Nh-9cg.NVgGBZVlCU8G7kjV_...","schema":{"type":"string"}}],"requestBody":{"description":"See GSM and WLAN telemetry examples in the `/v3` endpoint description.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"appId":{"description":"The user's project appId. Used together with an external ID to identify the virtual devices.","type":"string"},"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nSpecifies the time the device telemetry measurements were taken.\n","type":"integer","minimum":2,"maximum":4102448400000},"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"description":"Timestamp of the position","type":"integer","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"scan":{"type":"object","description":"Radio measurements used for positioning or radio map contribution.\n","properties":{"bt":{"description":"Bluetooth access points","type":"array","maxItems":128,"items":{"description":"Bluetooth measurement. In addition to rss, one of mac, eddystoneId, or iBeaconId is required.","type":"object","required":["rss"],"properties":{"timestamp":{"description":"Time of the measurement (UTC)","type":"string","format":"date-time"},"rss":{"description":"Received signal strength (dBm) at the terminal","type":"integer","minimum":-128,"maximum":0},"mac":{"description":"The MAC address of the Bluetooth access point. MAC-48 address with colon (:) or hyphen (-) separators, upper or lower case hex digits. For privacy reasons positioning based on a single Bluetooth AP is not possible. There must be at least one other matching WLAN or Bluetooth access point. Either MAC, EddystoneId, or iBeaconId is required.","type":"string","pattern":"^(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})|(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2})$"},"eddystoneId":{"description":"Full Identifier as Base64 string. A combination of 10-byte Namespace component and a 6-byte Instance component","type":"string","minLength":24,"maxLength":24},"iBeaconId":{"description":"Full Identifier as Base64 string. A combination of 16-byte UUID + 2-byte major + 2-byte minor","type":"string","minLength":28,"maxLength":28}}}},"country":{"description":"Indicates in which country the WLAN APs are located (in case cell data is not present in radio_observations)","type":"object","required":["mcc"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999}}},"gsm":{"description":"GSM cells (GERAN)","type":"array","maxItems":16,"items":{"description":"GSM measurement","type":"object","required":["mcc","mnc","lac","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"Cell Identifier, 16 bits. Mcc+mnc+lac+cid uniquely identifies the GSM cell.","type":"integer","minimum":0,"maximum":65535},"ta":{"description":"Timing advance (Optional). Expressed in the units of GSM bits equaling to 48/13 μs ~ 1107 meters.","type":"integer","minimum":0,"maximum":63},"rxlevel":{"description":"Received Signal power (dBm) (Optional). Power less than -110dBm should be mapped to -110. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-110,"maximum":-25},"bsic":{"description":"Base Station Identity Code (for instance, color code) (Optional, you must specify a value for this item when you specify a value for bcch).","type":"integer","minimum":0,"maximum":63},"bcch":{"description":"Broadcast Control Channel (Synonymous to ARFCN = Absolute Radio Frequency Channel) (Optional, you must specify a value for this item when you specify a value for bsic).","type":"integer","minimum":0,"maximum":1023},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":16,"items":{"description":"GSM Network measurement","type":"object","required":["bsic","bcch"],"properties":{"bsic":{"description":"Base Station Identity Code (for instance, color code)","type":"integer","minimum":0,"maximum":63},"bcch":{"description":"Broadcast Control Channel (Synonymous to ARFCN = Absolute Radio Frequency Channel)","type":"integer","minimum":0,"maximum":1023},"rxlevel":{"description":"Received Signal power (dBm) (Optional). Power less than -110dBm should be mapped to -110. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-110,"maximum":-25},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":65535}}}}}}},"wcdma":{"description":"WCDMA cells (UTRA-FDD, 3G UMTS)","type":"array","maxItems":16,"items":{"description":"WCDMA measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"UTRAN Cell Identifier, 28 bits (12 bits RNC and 16 bits Cell id). Mcc+mnc+cid uniquely identifies the WCDMA cell, lac is optional.","type":"integer","minimum":0,"maximum":268435455},"uarfcndl":{"description":"Downlink frequency of a UTRA-FDD Serving Cell (Optional, you must specify a value for this item when you specify a value for psc).","type":"integer","minimum":0,"maximum":16383},"psc":{"description":"Primary Scrambling Code (Primary CPICH, Primary Control Pilot Channel) (Optional, you must specify a value for this item when you specify a value for uarfcndl).","type":"integer","minimum":0,"maximum":511},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional).","type":"integer","minimum":46,"maximum":158},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional). Maximum of 8 uarfcndl times maximum of 32 psc.","type":"array","maxItems":256,"items":{"description":"WCDMA Network measurement","type":"object","required":["uarfcndl","psc"],"properties":{"uarfcndl":{"description":"Downlink frequency of a UTRA-FDD Serving Cell","type":"integer","minimum":0,"maximum":16383},"psc":{"description":"Primary Scrambling Code (Primary CPICH, Primary Control Pilot Channel)","type":"integer","minimum":0,"maximum":511},"cid":{"description":"UTRAN Cell Identifier (uc-id) (Optional)","type":"integer","minimum":0,"maximum":268435455},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional).","type":"integer","minimum":46,"maximum":158}}}}}}},"tdscdma":{"description":"TD-SCDMA cell (UTRA-TDD, 3G UMTS TDD)","type":"array","maxItems":16,"items":{"description":"TD-SCDMA measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"UTRAN Cell Identifier, 28 bits (12 bits RNC and 16 bits Cell id). Mcc+mnc+cid uniquely identifies the TDSCDMA cell, lac is optional.","type":"integer","minimum":0,"maximum":268435455},"ta":{"description":"Timing advance (Optional). Round-Trip distance presented in the units of 4*c/7.68e6 ~156 meters. That is, the scaling factor is 4 times the chip length at chip rate of 7.68 Mchips/s. Note that at chip rates 1.28 Mchips/s and 3.84 Mchips/s you need to scale according to chip length of 7.68 Mchips/s, that is, multiply by 6 or 2 if needed.","type":"integer","minimum":0,"maximum":1530},"uarfcn":{"description":"Carrier frequency of a UTRA-TDD Serving Cell (Optional, you must specify a value for this item when you specify a value for cellparams).","type":"integer","minimum":0,"maximum":16383},"cellparams":{"description":"Cell Parameters ID (CDMA Spreading Code ID) (Optional, you must specify a value for this item when you specify a value for uarfcn).","type":"integer","minimum":0,"maximum":127},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional, you must specify a value for this item when you specify a value for pathloss). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional, you must specify a value for this item when you specify a value for rscp).","type":"integer","minimum":46,"maximum":158},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"type":"array","description":"Network measurements (Optional). Maximum of 8 uarfcndl times maximum of 32 psc.","maxItems":256,"items":{"description":"TD-SCDMA Network measurement","type":"object","required":["uarfcn","cellparams"],"properties":{"uarfcn":{"description":"Carrier frequency of a UTRA-TDD Serving Cell","type":"integer","minimum":0,"maximum":16383},"cellparams":{"description":"Cell Parameters ID (CDMA Spreading Code ID)","type":"integer","minimum":0,"maximum":127},"cid":{"description":"Cell Identifier (uc-id) (Optional)","type":"integer","minimum":0,"maximum":268435455},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional, you must specify a value for this item when you specify a value for pathloss). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional, you must specify a value for this item when you specify a value for rscp).","type":"integer","minimum":46,"maximum":158}}}}}}},"lte":{"description":"LTE cells (E-UTRA, 4G)","type":"array","maxItems":16,"items":{"description":"LTE measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":16,"items":{"description":"LTE Network measurement","type":"object","required":["pci","earfcn"],"properties":{"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3}}}}}}},"lteCatM":{"description":"LTE Cat-M cells","type":"array","maxItems":16,"items":{"description":"LTE Cat-M measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"NB-IoT network measurement","type":"object","required":["pci","earfcn"],"properties":{"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3}}}},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"nbIot":{"description":"NB-IoT cells","type":"array","maxItems":16,"items":{"description":"NB-IoT measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"nmr":{"description":"NB-IoT Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"LTE Cat-M network measurement","type":"object","required":["pci","earfcn"],"properties":{"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"nrsrp":{"description":"Narrowband Reference Signal Received Power = NRSRP (dBm) (Optional). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"nrsrq":{"description":"Narrowband Reference Signal Received Quality = NRSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 2.5dB should be mapped to 2.5.","type":"number","minimum":-34,"maximum":2.5}}}},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"nrsrp":{"description":"Narrowband Reference Signal Received Power = NRSRP (dBm) (Optional). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"nrsrq":{"description":"Narrowband Reference Signal Received Quality = NRSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 2.5dB should be mapped to 2.5.","type":"number","minimum":-34,"maximum":2.5},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"cdma":{"description":"CDMA cells","type":"array","maxItems":16,"items":{"description":"CDMA measurement","type":"object","required":["sid","nid","bsid"],"properties":{"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535},"rz":{"description":"Registration zone (Optional)","type":"integer","minimum":0,"maximum":4095},"bsid":{"description":"Base Station ID, BID","type":"integer","minimum":0,"maximum":65535},"pnoffset":{"description":"Pseudonoise offset (Optional, you must specify a value for this item when you specify a value for channel)","type":"integer","minimum":0,"maximum":511},"channel":{"description":"CDMA channel frequency (Optional, you must specify a value for this item when you specify a value for pnoffset)","type":"integer","minimum":0,"maximum":2047},"pilotpower":{"description":"Pilot Power (dBm) (Optional). If Pilot Power is not available directly, it needs to be calculated from Total Power in the band and Pilot Strength with respect to the Total Power. Pilot power less than -142dBm should be mapped to -142. Pilot power greater than -49dBm should be mapped to -49.","type":"integer","minimum":-142,"maximum":-49},"baselat":{"description":"Base station latitude (Optional)","type":"number","minimum":-90,"maximum":90},"baselng":{"description":"Base station longitude (Optional)","type":"number","minimum":-180,"maximum":180},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"CDMA Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"CDMA Network measurement","type":"object","required":["pnoffset","channel"],"properties":{"pnoffset":{"description":"Pseudonoise offset","type":"integer","minimum":0,"maximum":511},"channel":{"description":"CDMA channel frequency","type":"integer","minimum":0,"maximum":2047},"frequency":{"description":"Deprecated. Use 'channel' instead.","type":"integer","minimum":0,"maximum":2047},"bsid":{"description":"Base Station ID (Optional)","type":"integer","minimum":0,"maximum":65535},"pilotpower":{"description":"Pilot Power (dBm) (Optional). If Pilot Power is not available directly, it needs to be calculated from Total Power in the band and Pilot Strength with respect to the Total Power. Pilot power less than -142dBm should be mapped to -142. Pilot power greater than -49dBm should be mapped to -49.","type":"integer","minimum":-142,"maximum":-49}}}}}}},"wlan":{"description":"WLAN access points","type":"array","maxItems":128,"items":{"description":"WLAN measurement","type":"object","required":["mac"],"properties":{"mac":{"description":"The MAC address of the WLAN access point. MAC-48 address with colon (:) or hyphen (-) separators, upper or lower case hex digits. Note that if the SSID contains postfix '_nomap', the AP should not be used for positioning. For privacy reasons positioning based on a single WLAN AP is not possible; there has to be at least one other matching wlan or cell.","type":"string","pattern":"^(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})|(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2})$"},"powrx":{"description":"Received signal level (dBm) at the terminal (Optional)","type":"integer","minimum":-128,"maximum":0},"band":{"description":"Frequency range (GHz). Allowed values are 2.4, 3.65, and 5. (Possible future values include 4.9, 5.9, 60, and 900.)","type":"number","enum":[2.4,3.65,5]},"timestamp":{"description":"Time of the wlan measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"gps":{"description":"Optionally supply this to improve HERE Tracking's positioning service by\ncontributing the scan data along with a GPS position.\n","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]}}}},"required":["timestamp"]},{"type":"object","properties":{"id":{"type":"string","description":"Tracking ID or application specific external ID.","minLength":1,"maxLength":50}}}]}}},"example":{"appId":"MyAppId123","data":[{"id":"MyDevice1","scan":{"gsm":[{"mcc":262,"mnc":1,"lac":5126,"cid":16504,"nmr":[{"bsic":6,"bcch":82},{"bsic":7,"bcch":85},{"bsic":12,"bcch":93},{"bsic":13,"bcch":88},{"bsic":19,"bcch":88}]}]},"timestamp":1515169948976},{"id":"MyDevice2","scan":{"wlan":[{"mac":"1c:1d:86:07:01:0f","powrx":-45},{"mac":"e4:f4:c6:d9:85:59","powrx":-39},{"mac":"1c:1d:86:07:01:0d","powrx":-43},{"mac":"1c:1d:86:07:01:0b","powrx":-44},{"mac":"1c:1d:86:07:01:04","powrx":-58},{"mac":"1c:1d:86:07:01:03","powrx":-59}]},"payload":{"sensor":"data"},"timestamp":1515169948976}]}}}}},"tags":["Ingestion"],"responses":{"204":{"description":"Successful (no content)\n\nThe device data was ingested successfully.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"413":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Payload Too Large","code":413,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request size exceeds the maximum size limit for payloads.","details":{"hereErrorCode":413306}}}},"description":"Payload Too Large\n\nThe request size exceeds the maximum size limit for payloads.\n"},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Too Many Requests","code":429,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"Too Many Requests"}}},"description":"Too Many Requests\n\nUser has sent too many requests in a given amount of time.\n"}}}},"/largedata/v4/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Largedata"]}},"/largedata/v4/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Largedata"]}},"/largedata/v4":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"post":{"summary":"Creates a new data upload","description":"Creates a new multipart large data upload. Response contains `dataId`, which is the created large data object identifier.\n","security":[{"DeviceToken":[]}],"tags":["Largedata"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Large data object name","minLength":1,"maxLength":50},"description":{"type":"string","description":"Large data object description","minLength":1,"maxLength":1000}},"description":"Data upload creation request","example":{"name":"My large data","description":"Description for my large data"}}}}},"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"type":"object","properties":{"dataId":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},"required":["dataId"],"description":"Response to data upload creation request","example":{"dataId":"DATA-08343421-e2d6-4abe-8e9a-adeb5361e991"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/largedata/v4/{dataId}/parts/{partNumber}":{"parameters":[{"name":"dataId","in":"path","schema":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"required":true},{"name":"partNumber","in":"path","schema":{"type":"integer","description":"Part number for a large data object","minimum":1,"maximum":10000},"required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"put":{"summary":"Uploads a part of a large data","description":"Uploads a part of large data. The part is identified with `dataId` and a part number.\n\nPart upload has the following limits:\n* The part numbers must start from 1, be no greater than 10000 and be consecutive.\n* The size of one uploaded data part must be between 1 byte and 1 MB.\n* Parts re-uploaded with the same `partNumber` are overridden.\n* Only `application/octet-stream` Content-Type is supported.\n\nParts can be uploaded in any order, the `partNumber` determines their\nposition in the total data.\n\nThe optional `md5` query parameter can be used to provide the MD5\ndigest for the uploaded data part. If it is specified and does not match\nto the received data, HERE Tracking returns HTTP status 400.\n\nIf the data upload is still in ***preparing*** state, HERE Tracking\nreturns HTTP status 409.\n","security":[{"DeviceToken":[]}],"parameters":[{"name":"md5","in":"query","schema":{"type":"string","description":"MD5 digest of the data (hexadecimal representation)","minLength":32,"maxLength":32}}],"tags":["Largedata"],"requestBody":{"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Conflict","code":409,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource already exists.","details":{"hereErrorCode":404306}}}},"description":"Conflict\n\nThe specified resource already exists\n"}}}},"/largedata/v4/{dataId}":{"parameters":[{"name":"dataId","in":"path","schema":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"post":{"summary":"Completes data upload","description":"After all parts have been uploaded, this operation completes the upload.\n\nWhen the upload has been completed, it is no longer possible to upload\nnew parts to it but the uploaded data can be downloaded.\n\nThis request has an optional `abort` query\nparameter (the default value is `false`) for aborting the upload instead\nof successfully completing it. If the upload is aborted, all of its\nparts and data are removed from HERE Tracking.\n","security":[{"DeviceToken":[]}],"parameters":[{"name":"abort","in":"query","schema":{"type":"boolean","description":"Flag telling if the data upload should be aborted","default":false}}],"tags":["Largedata"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"delete":{"summary":"Deletes large data","description":"Deletes large data object.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Largedata"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/largedata/v4/{dataId}/data":{"parameters":[{"name":"dataId","in":"path","schema":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"get":{"summary":"Gets large data object","description":"Downloads a part of large data.\n\nThe data to be downloaded is identified with `dataId`.\n`offset` query paremeter specifies the first byte of the data,\nand `count` indicates how many bytes of the data is to be downloaded\nstarting from and including the `offset`. The default value for `offset`\nis zero and the for `count` it is the total size of the data.\n\nThe size of one downloaded data part must be between 1 byte and 10 MB.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"offset","in":"query","schema":{"type":"integer","description":"Byte offset to the data to be downloaded (inclusive, starts at zero)","minimum":0}},{"name":"count","in":"query","schema":{"type":"integer","description":"Number of bytes of the data to download","minimum":1,"maximum":10485760}}],"tags":["Largedata"],"responses":{"200":{"description":"Success\n","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/largedata/v4/{dataId}/metadata":{"parameters":[{"name":"dataId","in":"path","schema":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"get":{"summary":"Gets metadata for a large data object","description":"Gets metadata for a large data object.\n","security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"tags":["Largedata"],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"type":"object","properties":{"dataId":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"trackingId":{"description":"ID of the device that produced this data","type":"string","minLength":1,"maxLength":50},"name":{"type":"string","description":"Large data object name","minLength":1,"maxLength":50},"description":{"type":"string","description":"Large data object description","minLength":1,"maxLength":1000},"numberOfParts":{"type":"integer","description":"Number of parts","minLength":1,"maxLength":10000},"size":{"type":"integer","description":"Total size of the data in bytes","minimum":0},"status":{"type":"string","description":"State of the data upload","enum":["preparing","pending","ongoing","completed","failed"]},"createdAt":{"description":"Time when data upload was created","type":"string","format":"date-time"},"completedAt":{"description":"Time when data upload was completed","type":"string","format":"date-time"}},"required":["dataId","trackingId","numberOfParts","status","createdAt"],"description":"Metadata for a large data object","example":{"dataId":"DATA-08343421-e2d6-4abe-8e9a-adeb5361e991","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","name":"My large data","description":"Description for my large data","size":10000,"numberOfParts":5,"status":"completed","createdAt":"2021-05-28T11:40:00Z","completedAt":"2021-05-28T12:10:00Z"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/largedata/v4/{dataId}/parts":{"parameters":[{"name":"dataId","in":"path","schema":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"get":{"summary":"Gets parts information listing for a large data object","description":"Gets information about uploaded parts for a large data object.\n","security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"limit","description":"The number of items to return per page","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false}],"tags":["Largedata"],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"partNumber":{"type":"integer","description":"Part number for a large data object","minimum":1,"maximum":10000},"size":{"type":"integer","description":"Part size in bytes","minimum":0},"md5":{"type":"string","description":"MD5 digest of the data (hexadecimal representation)","minLength":32,"maxLength":32},"status":{"type":"string","description":"State of the data part upload","enum":["pending","ongoing","completed","failed"]}},"description":"Information about uploaded part","example":{"partNumber":1,"size":1,"md5":"b026324c6904b2a9cb4b88d6d61c81d1","status":"completed"}}}},"required":["limit","count","items"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/largedata/v4/devices/{trackingId}/metadata":{"parameters":[{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"get":{"summary":"Gets metadata listing for all large data for a device","description":"Gets metadata listing for all large data objects for a given device.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"limit","description":"The number of items to return per page","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false}],"tags":["Largedata"],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"dataId":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"trackingId":{"description":"ID of the device that produced this data","type":"string","minLength":1,"maxLength":50},"name":{"type":"string","description":"Large data object name","minLength":1,"maxLength":50},"description":{"type":"string","description":"Large data object description","minLength":1,"maxLength":1000},"numberOfParts":{"type":"integer","description":"Number of parts","minLength":1,"maxLength":10000},"size":{"type":"integer","description":"Total size of the data in bytes","minimum":0},"status":{"type":"string","description":"State of the data upload","enum":["preparing","pending","ongoing","completed","failed"]},"createdAt":{"description":"Time when data upload was created","type":"string","format":"date-time"},"completedAt":{"description":"Time when data upload was completed","type":"string","format":"date-time"}},"required":["dataId","trackingId","numberOfParts","status","createdAt"],"description":"Metadata for a large data object","example":{"dataId":"DATA-08343421-e2d6-4abe-8e9a-adeb5361e991","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","name":"My large data","description":"Description for my large data","size":10000,"numberOfParts":5,"status":"completed","createdAt":"2021-05-28T11:40:00Z","completedAt":"2021-05-28T12:10:00Z"}}}},"required":["limit","count","items"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/registry/v2/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Registry"]}},"/registry/v2/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Registry"]}},"/registry/v2/{appId}/devices":{"get":{"summary":"Lists all the devices provisioned by a user","description":"Lists all the devices provisioned by a user project identified by the `appId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"description":"ID for an application from the user's project","name":"appId","in":"path","required":true,"schema":{"type":"string","minLength":8}},{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"tags":["Registry"],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"deviceId":{"type":"string","description":"The provisioned device ID"},"timestamp":{"type":"integer","description":"Provisioning time in milliseconds elapsed since 1 January 1970 00:00:00 UTC."},"externalId":{"type":"string","description":"Virtual device external ID, only present when the device is virtual"},"appId":{"type":"string","description":"Virtual device application ID, only present when the device is virtual"}},"additionalProperties":false,"required":["deviceId","timestamp"]}}},"required":["data"]}],"example":{"data":[{"deviceId":"d34d8c7f-6bd5-496a-adef-7bf2395aa456","timestamp":1548143359339},{"deviceId":"VRDE-40e87f34-59b9-4bd9-827f-f8ff5a8210e8","externalId":"my-device-1","appId":"jJHUjhytyGJHJFtftgHG","timestamp":1548143359340}],"count":2,"pageToken":"027ffffea253d79fc"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}},"post":{"summary":"Creates licenses for multiple devices","description":"Starts a batch job to create licenses for either physical devices or\nvirtual devices.\n\nA physical device license is a `deviceId` and `deviceSecret` credential pair. The batch\njob creates a number of physical device licenses specified by the `count`\nparameter in the request body.\nThe response contains an array of `deviceId` and `deviceSecret` pairs.\n\nVirtual devices are identified with an external device ID and the requestor's\nproject `appId`. The virtual device external ID is application-specific\nand the user is free to allocate it as user finds suitable.\nThe external IDs for the virtual devices to be created are specified\nin the `devices` array in request body. For virtual devices\nthe response contains only an array of `deviceId`s, but no `deviceSecret`s.\n\nThe `autoclaim` parameter can only be used when creating virtual devices.\nIf `autoclaim`=`true`, the created virtual devices are immediately claimed\nby the requesting user account. In this case the response contains also\ntracking IDs for the claimed devices.\n\nNOTE: Physical devices are deprecated and they should no longer be created.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"description":"ID for an application from the user's project","name":"appId","in":"path","required":true,"schema":{"type":"string","minLength":8}},{"in":"query","name":"autoclaim","description":"If set to `true`, the licenses are created and devices are immediately claimed by the same user. Supported only with `deviceId` array in body, and not with the `count` parameter.","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"count":{"type":"integer","description":"Number of device credentials requested","minimum":1,"maximum":1000}},"required":["count"],"example":{"count":10}},{"type":"object","properties":{"devices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":50,"description":"The external ID for the device"}}},"minItems":1,"maxItems":100}},"required":["devices"],"example":{"devices":[{"id":"my-first-device"},{"id":"my-second-device"}]}}]}}}},"tags":["Registry"],"responses":{"202":{"description":"Accepted\n\nThe batch job started successfully. Use the `/registry/v2/{jobId}/status` endpoint to\ncheck the job progess. After the job completes, use the `/registry/v2/{jobId}/results`\nendpoint to get the device licenses.\n","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","format":"uuid","description":"The batch job ID, needed for subsequent requests. Valid for 24 hours."}},"required":["jobId"],"additionalProperties":false,"example":{"jobId":"344a17a4-1b19-4420-bb6f-8400b87071fd"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"description":"No app ID found.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]}}}}}}},"/registry/v2/{appId}/one-device":{"post":{"summary":"Creates a license for a single physical device","description":"Device license is a `deviceId` and `deviceSecret` credential pair.\nThe created credentials will be returned in the response body.\n\nIf `autoclaim` query parameter is set to `true`, the created device will also be claimed by the same user account.\n\nNOTE: Physical devices are deprecated and they should no longer be created.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"description":"ID for an application from the user's project","name":"appId","in":"path","required":true,"schema":{"type":"string","minLength":8}},{"in":"query","name":"autoclaim","description":"If set to `true`, the device license is created and the device is immediately claimed by the same user.","required":false,"schema":{"type":"boolean","default":false}}],"tags":["Registry"],"responses":{"201":{"description":"Successful","content":{"application/json":{"schema":{"type":"object","description":"A JSON object containing the newly created device credentials","properties":{"deviceId":{"type":"string","description":"A newly created device ID."},"deviceSecret":{"type":"string","description":"A newly created device secret. A physical device license is a `deviceId` and `deviceSecret` credential pair."},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."}},"required":["deviceId"],"additionalProperties":false,"example":{"deviceId":"4cdafa38-fdf9-474c-8eb3-72ea276a163a","deviceSecret":"AGIhZGmU1jJS-H1ZfAZuh5U9cswyqquWVrbOKGwKN9s","trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"description":"No app ID found.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]}}}}}}},"/registry/v2/{appId}/licenseCount":{"get":{"summary":"Gets a number of device licenses provisioned by a user","description":"Gets a number of provisioned device licenses for a user project identified by the `appId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"description":"ID for an application from the user's project","name":"appId","in":"path","required":true,"schema":{"type":"string","minLength":8}}],"tags":["Registry"],"responses":{"200":{"description":"Successful","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"The number of created device licenses for given `appId`","minimum":0},"updatedAt":{"type":"string","description":"Timestamp of the last `count` update"}},"example":{"count":1337,"updatedAt":"2018-04-03 12:08:56.501+00"},"additionalProperties":false,"required":["count","updatedAt"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"description":"No app ID found.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]}}}}}}},"/registry/v2/{jobId}/status":{"get":{"summary":"Gets the multiple device license request job status","description":"Checks the progress of a previously created multiple device license request batch job.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"description":"An asynchronous job ID. UUID v.4.0.","name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"tags":["Registry"],"responses":{"200":{"description":"Successful","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","description":"The status of the batch job. When the job status is `complete`, use the `/registry/v2/{jobId}/results` endpoint to get the device licenses","enum":["started","complete"]},"percent":{"type":"number","description":"The percentage of the job that was completed at the time of the request.","minimum":0,"maximum":100}},"example":{"status":"started","percent":10},"additionalProperties":false,"required":["status","percent"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"description":"No job ID found.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]}}}}}}},"/registry/v2/{jobId}/results":{"get":{"summary":"Gets the multiple device license request job results","description":"Gets results of a previously created multiple device license request batch job upon its successful completion.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"description":"An asynchronous job ID. UUID v.4.0.","name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false}],"tags":["Registry"],"responses":{"200":{"description":"Successful.\nThe response body contains an array of newly created device licenses.\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"A JSON object containing the newly created device credentials","properties":{"deviceId":{"type":"string","description":"A newly created device ID. A physical device license is a `deviceId` and `deviceSecret` credential pair."},"deviceSecret":{"type":"string","description":"A newly created device secret. A physical device license is a `deviceId` and `deviceSecret` credential pair."},"externalId":{"type":"string","description":"Virtual device external ID, only present when provisioning virtual devices."},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."}},"required":["deviceId"],"additionalProperties":false,"example":{"deviceId":"4cdafa38-fdf9-474c-8eb3-72ea276a163a","deviceSecret":"AGIhZGmU1jJS-H1ZfAZuh5U9cswyqquWVrbOKGwKN9s","trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"}}},"errors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID for the device to which error occurred"},"error":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]}}}}}}],"example":{"data":[{"deviceId":"d34d8c7f-6bd5-496a-adef-7bf2395aa456","deviceSecret":"qerjpsdujnewppqnqefvli"},{"deviceId":"c6a22c91-c185-474c-9970-5eea445d92ac","deviceSecret":"xvbnm,do0e,md;ffgdsle,d"}],"errors":[{"id":"my-device","error":{"error":"Internal Server Error","code":500,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee"}}],"count":3,"pageToken":"027ffffea253d79fc"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"description":"No job ID found.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]}}}}}}},"/registry/v2/devices/{deviceOrExternalId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"description":"Device ID of a provisioned physical device\nor for virtual devices an application specific external ID\nprovided together with `appId` query parameter.\n\nNOTE that physical devices are deprecated and they should no longer be created.\n","name":"deviceOrExternalId","in":"path","schema":{"description":"Device ID of a provisioned device","type":"string","minLength":1,"maxLength":50},"required":true},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"put":{"summary":"Claims a device","description":"Claims a device, associating a device to a user account.\nThe user who claimed a device is the device owner,\nwhich is different from the device vendor.\n\nUnclaimed devices cannot login or send any data to HERE Tracking.\nA claimed device data is stored in HERE Tracking and is available to the\ndevice owner's project, which the device has been claimed to.\n\nWhen a device is claimed, it gets assigned a `trackingId`.\nThis is a unique ID associated with the device data in HERE Tracking.\n\n`trackingId` is different from the `deviceId`.\nThe `deviceId` is permanently associated with the hardware, while the `trackingId`\nis associated with the device data.\nIf the device is later sold or transferred, the `deviceId` remains the same but the\n`trackingId` changes in case the device is reclaimed.\nThis way the new owner cannot access the old data.\n\nIf the user is a member of multiple projects, the target project ID needs to be\nspecified in the `projectId` query parameter (note that this is different from the `appId`).\n\nOnly users with a valid HERE Tracking license are authorized to claim\nnew devices. Claimed devices are associated with the owner\napplication ID, and the total device count is kept up-to-date for billing purposes.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"tags":["Registry"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"ownerAppId":{"description":"(Deprecated) Application identifier which specifies device owner's application to which the device is associated with.","type":"string","minLength":8}}}}}},"responses":{"200":{"description":"Already claimed by the same user","content":{"application/json":{"schema":{"type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."}},"required":["trackingId"],"additionalProperties":false,"example":{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"}}}}},"201":{"description":"Successfully claimed","content":{"application/json":{"schema":{"type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."}},"required":["trackingId"],"additionalProperties":false,"example":{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Conflict","code":409,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource already exists.","details":{"hereErrorCode":404306}}}},"description":"Conflict\n\nThe specified resource already exists\n"}}},"get":{"summary":"Gets the trackingId for a device","description":"Gets the `trackingId` for a claimed device by its `deviceId`.\n","security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"tags":["Registry"],"responses":{"200":{"description":"Successful","content":{"application/json":{"schema":{"type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."}},"required":["trackingId"],"additionalProperties":false,"example":{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"delete":{"summary":"Deactivates a device.","description":"Deactivates a provisioned device.\nThis operation will deactivate the device license (`deviceId` and `deviceSecret`).\nDeactivated devices cannot be claimed anymore.\n\nNOTE: The device must be unclaimed before it can be deactivated.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Registry"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/registry/v2/{trackingId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"get":{"summary":"Gets the deviceId","description":"Gets the `deviceId` of a claimed device by its `trackingId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Registry"],"responses":{"200":{"description":"Successful","content":{"application/json":{"schema":{"type":"object","properties":{"deviceId":{"description":"Device ID of a provisioned device","type":"string","minLength":1,"maxLength":50}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"delete":{"summary":"Unclaims a device","description":"Unclaims a device removing the ownership association between the user and the device. The device data will no longer be accessible to the user. The device can then be reclaimed by a different or the same user.","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Registry"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/registry/v2/licenses":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"get":{"summary":"Gets a list of projects along with their license information","description":"Gets a list of projects the user is a member of, along with the license information details for each project.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"startIndex","in":"query","schema":{"type":"integer","minimum":0,"default":0,"description":"Start of returned block from a list. Default 0."},"required":false},{"name":"endIndex","in":"query","schema":{"type":"integer","minimum":0,"default":100,"description":"End of returned block from a list. Default 100."},"required":false},{"name":"projectIds","in":"query","schema":{"oneOf":[{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},{"type":"array","description":"Project id list","minItems":1,"maxItems":20,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"}}]},"required":false},{"name":"projectTypes","in":"query","schema":{"oneOf":[{"type":"string","description":"Project type","enum":["tracking"]},{"type":"array","description":"Project types array","minItems":1,"maxItems":4,"uniqueItems":true,"items":{"type":"string","description":"Project type","enum":["tracking"]}}]},"required":false}],"tags":["Registry"],"responses":{"200":{"description":"Successful","content":{"application/json":{"schema":{"type":"object","properties":{"licenses":{"type":"array","description":"Developer plan licenses for HERE Tracking","items":{"type":"object","properties":{"appId":{"type":"string","minLength":8,"description":"A project application id."},"realm":{"type":"string","description":"Platform application realm."},"type":{"type":"string","description":"A license type.","enum":["platformApp","platform"]},"expired":{"type":"boolean","description":"True if a license has expired."},"expiryDate":{"type":"string","description":"A license expiration date."},"quota":{"type":"object","properties":{"provisioning":{"type":"number","description":"The number of devices that can still be provisioned."}}},"features":{"type":"array","description":"Features supported by the license plan.","items":{"type":"string"}},"projectId":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"projectHrn":{"type":"string","pattern":"^hrn:here.*$","description":"Project HRN"},"projectName":{"type":"string","minLength":1,"maxLength":50,"description":"Project name"},"projectDescription":{"type":"string","minLength":1,"maxLength":250,"description":"Project description"}}}},"start":{"type":"integer","minimum":0,"default":0,"description":"Start of returned block from a list. Default 0."},"end":{"type":"integer","minimum":0,"default":100,"description":"End of returned block from a list. Default 100."},"total":{"type":"integer","minimum":0,"default":0,"description":"Total number of elements that can be received with current query."}},"required":["licenses","start","end","total"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Conflict","code":409,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource already exists.","details":{"hereErrorCode":404306}}}},"description":"Conflict\n\nThe specified resource already exists\n"},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Too Many Requests","code":429,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"Too Many Requests"}}},"description":"Too Many Requests\n\nUser has sent too many requests in a given amount of time.\n"}}}},"/registry/v2/features":{"parameters":[{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"get":{"summary":"Gets the project features for a project","description":"Gets features for a project identified by `projectId`.","security":[{"UserToken":[]}],"tags":["Registry"],"responses":{"200":{"description":"Successful.\nThe response contains the features of the project\n","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Object describing project features","properties":{"shipments":{"type":"object","description":"Object describing shipments features","properties":{"autoStartLimitAfter":{"type":"integer","description":"Defines time in minutes after the moment of `providedEtd` when shipment is still allowed to auto-start, use `-1` to disable. Default -1.","minimum":-1},"autoStartLimitBefore":{"type":"integer","description":"Defines time in minutes before the moment of `providedEtd` when shipment is already allowed to auto-start, use `-1` to disable. Default -1.","minimum":-1},"enableStateChangeEvents":{"type":"boolean","description":"If true, the shipment state change events are published to cold storage and output stream for all shipments in the project."},"ongoingRetentionPeriod":{"type":"integer","description":"Defines time in hours after a shipment is auto-cancelled if still ongoing. Default 336 (2 weeks).","minimum":0}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"patch":{"summary":"Updates the project features","description":"Updates features for a project identified by `projectId`.\nWhen configurations are updated, those configuration properties provided in the request will override existing\nproperties while properties not provided in the request are left unchanged.\n\nSupported project features are:\n* `data.shipments.autoStartLimitBefore` and `data.shipments.autoStartLimitAfter`: Defines time range in minutes\nbefore and after of shipment's `providedEtd` when shipment is allowed to be auto-started. With the time range\nnot defined, or both values set to `-1` the time window is disabled and auto-start is allowed at any time.\n* `data.shipments.enableStateChangeEvents`: If set to true, publishing shipment state change events to cold storage and output stream is enabled for all shipments in the project.\n* `data.shipments.ongoingRetentionPeriod`: In case a shipment does not complete within this period of time,\nit will be cancelled automatically. If this setting is not set, a default of 2 weeks is used as a shipment's\nongoing retention period. The retention period is set in hours.\n\nExample:\n\n```\n\"data\": {\n \"shipments\": {\n \"autoStartLimitAfter\": 60,\n \"autoStartLimitBefore\": 60,\n \"ongoingRetentionPeriod\": 168\n },\n}\n```\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Registry"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Object describing project features","properties":{"shipments":{"type":"object","description":"Object describing shipments features","properties":{"autoStartLimitAfter":{"type":"integer","description":"Defines time in minutes after the moment of `providedEtd` when shipment is still allowed to auto-start, use `-1` to disable. Default -1.","minimum":-1},"autoStartLimitBefore":{"type":"integer","description":"Defines time in minutes before the moment of `providedEtd` when shipment is already allowed to auto-start, use `-1` to disable. Default -1.","minimum":-1},"enableStateChangeEvents":{"type":"boolean","description":"If true, the shipment state change events are published to cold storage and output stream for all shipments in the project."},"ongoingRetentionPeriod":{"type":"integer","description":"Defines time in hours after a shipment is auto-cancelled if still ongoing. Default 336 (2 weeks).","minimum":0}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}}}},"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/registry/v4/resources/{resourceType}/find":{"parameters":[{"description":"The resource type, for example \"device\", \"geofence\".","name":"resourceType","in":"path","required":true,"schema":{"type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]}},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"limit","description":"The number of items to return per page","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"post":{"summary":"Gets all resources of a resource type","description":"Gets all resources of the resource type `resourceType`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Registry"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filters":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"key":{"enum":["onlyShipments","onlyShipmentPlans"]}},"required":["key"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"aliasType|labelKey"},"value":{"type":"string","minLength":1,"description":"value with wildcards"},"storage":{"enum":["aliases","labels"]}},"required":["key","value","storage"],"additionalProperties":false}]},"minItems":1,"maxItems":10}},"required":["filters"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful.\nThe resources were successfully retrieved.\n","content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"number of items as specified in request"},"count":{"type":"integer","description":"number of items returned in the response"},"nextPageToken":{"type":"string","description":"token to fetch the next page"},"items":{"type":"array","description":"Array of matching resource ids","items":{"type":"object","description":"matching resource id","properties":{"resourceId":{"type":"string"}},"required":["resourceId"]}},"total":{"type":"integer","description":"total number of items at the moment when the first page was requested"}},"required":["limit","count","items","total"],"additionalProperties":false,"example":{"limit":3,"count":3,"nextPageToken":"skjfgWOF7162712JHAIW8FYBCASK!/EUQHSDkuhedf","items":[{"resourceId":"SHP-ee73df84-0ab1-40fd-aac1-c39deb943de9"},{"resourceId":"SHP-ee73df84-0ab1-40fd-aac1-c39deb943df0"},{"resourceId":"SHP-ee73df84-0ab1-40fd-aac1-c39deb943df1"}],"total":10}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Too Many Requests","code":429,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"Too Many Requests"}}},"description":"Too Many Requests\n\nUser has sent too many requests in a given amount of time.\n"}}}},"/users/v2/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Users"]}},"/users/v2/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Users"]}},"/users/v2/devices":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"get":{"summary":"Gets all devices claimed by a project","description":"Gets all devices claimed by a project.","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Users"],"parameters":[{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false},{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false}],"responses":{"200":{"description":"Success\n\nThe search was performed and the results were returned.\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"shadow":{"description":"The data that Shadows persists for each device.\n","type":"object","properties":{"desired":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","maximum":4102448400000,"minimum":0,"type":"integer"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to the desired shadow.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}},"reported":{"description":"The `reported` shadow contains the most recent position, sensor readings and settings that the\ndevice has sent. The reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in `system.computed` property of the shadow.\n\nIn case the most recent telemetry did not contain all the possible\nfields, the last known information will remain in the shadow. This means that one can\nsee, for example, the last reported temperature or tracker firmware information in the reported shadow,\neven if the device did not send that information in the latest telemetry.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"description":"Timestamp of the position","type":"integer","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"online":{"description":"Online status of the device. Computed based on the device's reporting rate. If the device has not reported within the time frame of the reporting rate plus five minutes, the device is considered to be offline. If the reporting rate is not specified for the device, a default of 15 minutes is used.","type":"boolean"},"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"lastMovedTimestamp":{"description":"Timestamp referring to the trace point when the asset was last detected moving.\nAsset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"integer"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe timestamp of the newest telemetry sent by the device. Note that this is not necessarily\nthe timestamp of all the reported values in the reported shadow since the shadow retains\nvalues from previous ingestions if the latest telemetry did not conatain them.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}}}},"externalId":{"type":"string","minLength":1,"maxLength":50,"description":"Virtual device external ID, only present when the device is virtual"},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"}}}}}}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}}},"/users/v2/login":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"post":{"summary":"Gets a user access token","description":"Authenticates a user with an email and a password and gets a user access token upon the successful authentication.\nThe user email must be registered with a valid [HERE Account](https://account.here.com).\nOptionally user can provide requested realm ID.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","minLength":1,"description":"The email address of the user"},"password":{"type":"string","minLength":1,"description":"The password of the user"},"realm":{"type":"string","minLength":1,"description":"A case-insensitive requested realm ID"}},"required":["email","password"],"description":"An object containing user's email address, password and (optionally) requested realm ID."}}}},"tags":["Users"],"responses":{"200":{"description":"Success\n\nThe authentication was successful and a valid access token was returned.\n","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"The HERE Account ID of a user.","pattern":"^HERE-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"accessToken":{"type":"string"},"expiresIn":{"type":"integer","description":"The lifetime in seconds of the access token.\nFor example 86400 means the token will expire in 24 hours from the time the response was generated.\n"},"refreshToken":{"type":"string"},"tokenType":{"type":"string","description":"The token type is bearer"},"realm":{"type":"string","description":"Current realm ID"}},"example":{"userId":"HERE-12345678-9abc-4def-0123-456789abcdef","accessToken":"h1.2...EyS_b6g3uDcKnpknGWQ","expiresIn":86400,"refreshToken":"5qlkthf8mgl5lsrn8br5vdisco","realm":"here"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"412":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Precondition Failed","code":412,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The server does not meet one of the preconditions that the requester put on the request.","details":{"hereErrorCode":412306}}}},"description":"Precondition Failed\n\nThe server does not meet one of the preconditions that the requester put on the request.\n"},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Too Many Requests","code":429,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"Too Many Requests"}}},"description":"Too Many Requests\n\nUser has sent too many requests in a given amount of time.\n"}}}},"/users/v2/refresh":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"post":{"summary":"Gets a renewed user access token","description":"Gets a new valid user access token for a given previous access token and a refresh token.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string","minLength":1,"description":"The access token obtained in a previous login"},"refreshToken":{"type":"string","minLength":1,"description":"The refresh token obtained in a previous login"}},"description":"An object containing an accessToken and a refreshToken","required":["accessToken","refreshToken"]}}}},"tags":["Users"],"responses":{"200":{"description":"Success\n\nThe authentication was successful and a valid access token was returned.\n","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"The HERE Account ID of a user.","pattern":"^HERE-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"accessToken":{"type":"string"},"expiresIn":{"type":"integer","description":"The lifetime in seconds of the access token.\nFor example 86400 means the token will expire in 24 hours from the time the response was generated.\n"},"refreshToken":{"type":"string"},"tokenType":{"type":"string","description":"The token type is bearer"},"realm":{"type":"string","description":"Current realm ID"}},"example":{"userId":"HERE-12345678-9abc-4def-0123-456789abcdef","accessToken":"h1.2...EyS_b6g3uDcKnpknGWQ","expiresIn":86400,"refreshToken":"5qlkthf8mgl5lsrn8br5vdisco","realm":"here"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"412":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Precondition Failed","code":412,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The server does not meet one of the preconditions that the requester put on the request.","details":{"hereErrorCode":412306}}}},"description":"Precondition Failed\n\nThe server does not meet one of the preconditions that the requester put on the request.\n"},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Too Many Requests","code":429,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"Too Many Requests"}}},"description":"Too Many Requests\n\nUser has sent too many requests in a given amount of time.\n"}}}},"/users/v2/tokenExchange":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"post":{"summary":"Gets a project-scoped user access token","description":"Takes user access token, requested scope and returns project-scoped user access token.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string","minLength":1,"description":"HERE Account user access token, obtained from login endpoint."},"scope":{"type":"string","minLength":1,"description":"Requested scope of the access token. Must be an HRN identifying a project that the identified user has access to."}},"required":["accessToken","scope"],"description":"An object containing user access token and requested scope of the access token.","example":{"accessToken":"h1.2...EyS_b6g3uDcKnpknGWQ","scope":"hrn:here:authorization::myrealm:project/my-project-0000"}}}}},"tags":["Users"],"responses":{"200":{"description":"Success\n\nThe exchange was successful and a valid scoped access token was returned.\n","content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string","description":"Project-scoped access token."},"issuedTokenType":{"type":"string","description":"The type of token issued when grantType is \"urn:ietf:params:oauth:grant-type:token-exchange\"."},"tokenType":{"type":"string","description":"The token type is 'Bearer'."},"scope":{"type":"string","description":"Requested scope of the access token. Must be an HRN identifying a project that the identified user has access to."},"expiresIn":{"type":"integer","description":"The lifetime in seconds of the access token.\nFor example 86400 means the token will expire in 24 hours from the time the response was generated.\n"}},"example":{"accessToken":"h1.2...EyS_b6g3uDcKnpknGWQ","issuedTokenType":"urn:ietf:params:oauth:token-type:access_token","tokenType":"Bearer","scope":"hrn:here:authorization::myrealm:project/my-project-0000","expiresIn":86400}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Conflict","code":409,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource already exists.","details":{"hereErrorCode":404306}}}},"description":"Conflict\n\nThe specified resource already exists\n"},"412":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Precondition Failed","code":412,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The server does not meet one of the preconditions that the requester put on the request.","details":{"hereErrorCode":412306}}}},"description":"Precondition Failed\n\nThe server does not meet one of the preconditions that the requester put on the request.\n"},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Too Many Requests","code":429,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"Too Many Requests"}}},"description":"Too Many Requests\n\nUser has sent too many requests in a given amount of time.\n"}}}},"/aliases/v2/health":{"get":{"deprecated":true,"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Aliases"]}},"/aliases/v2/version":{"get":{"deprecated":true,"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Aliases"]}},"/aliases/v2":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"description":"An alias type","name":"type","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":50}},{"description":"Filter for aliases external IDs","name":"externalId","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":50}}],"get":{"deprecated":true,"summary":"Gets all aliases","description":"Gets all aliases of a project.\n\nIf `type` query parameter is provided, the response will contain\nonly aliases of the given type.\n\nIf `externalId` query parameter is specified, the\nresponse will contain only aliases that match the given\nexternal ID. The following wildcards can be used:\n'*' matches any number of any characters,\n'?' matches a single character.\n\nIf `after` query parameter is provided, the successful response will only\ncontain aliases that were created after the specified timestamp.\nParameters `after` and `pageToken` are mutually exclusive and cannot be provided at the same time.\n\nThe returned results are sorted in ascending order by the alias creation time.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"name":"after","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\nThe accepted range is from 0 to the current time.\n","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"tags":["Aliases"],"responses":{"200":{"description":"Successful\n\nThe aliases were successfully retrieved\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"trackingId":{"type":"string"},"aliases":{"type":"object","description":"A map of key-value pairs where the key is the type of the alias\nand the value is an array of externalIds.\n"}},"required":["trackingId","aliases"]}}}}],"example":{"data":[{"trackingId":"HERE-c47c0d1d-89fd-4961-b341-3eb109f58d19","aliases":{"cargoId":["123-456"],"engines":["de7a0e9a-2e86-11e8-b20f-6c400892e894","dfee3968-2e86-11e8-b4e0-6c400892e894"]}},{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6","aliases":{"engines":["5219bfc6-9779-4901-922a-e53a7c01037e"]}}]}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}}},"/aliases/v2/{trackingId}":{"parameters":[{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"get":{"deprecated":true,"summary":"Gets all aliases of a device","description":"Gets all aliases of a device identified by the `trackingId`.\n\nIf the request is supplied with a `type` query parameter, the response will contain\nonly aliases of the given type.\n","security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"description":"An alias type","name":"type","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":50}}],"tags":["Aliases"],"responses":{"200":{"description":"Successful\n\nThe aliases were successfully retrieved.\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"object","description":"A map of key-value pairs where the key is the type of the alias\nand the value is an array of `externalId`s.\n"}}}],"example":{"data":{"cargoId":["123-456"],"engines":["de7a0e9a-2e86-11e8-b20f-6c400892e894","dfee3968-2e86-11e8-b4e0-6c400892e894"]}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"delete":{"deprecated":true,"summary":"Deletes all aliases of a device","description":"Deletes all aliases of a device identified by the `trackingId`.\n\nNote that one needs to supply an HTTP header `x-confirm` with the value `true` to force the deletion.\nIf the header is not provided, the request will fail.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Aliases"],"parameters":[{"schema":{"type":"string","enum":["true"]},"in":"header","name":"x-confirm","required":true,"description":"A safety measure that prevents one from accidentally deleting data.\n\nTo confirm that all entries should be deleted, set the value to `true`.\n"}],"responses":{"204":{"description":"Successful (no content)\n\nAll aliases were successfully deleted.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/aliases/v2/{trackingId}/{type}":{"parameters":[{"description":"An alias type","name":"type","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"get":{"deprecated":true,"summary":"Gets all aliases of a specified type for a device","description":"Gets all aliases of a specified type for a device identified by the `trackingId`.","security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false}],"tags":["Aliases"],"responses":{"200":{"description":"Successful\n\nThe aliases were successfully retrieved.\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"object","description":"A map of key-value pairs where the key is the type of the alias\nand the value is an array of `externalId`s.\n"}}}],"example":{"data":{"cargoId":["123-456"],"engines":["de7a0e9a-2e86-11e8-b20f-6c400892e894","dfee3968-2e86-11e8-b4e0-6c400892e894"]}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"delete":{"deprecated":true,"summary":"Deletes all aliases of a specified type for a device","description":"Deletes all aliases of a specified type for a device identified by the `trackingId`.\n\nNote that one needs to supply an HTTP header `x-confirm` with the value `true` to force the deletion.\nIf the header is not provided, the request will fail.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Aliases"],"parameters":[{"schema":{"type":"string","enum":["true"]},"in":"header","name":"x-confirm","required":true,"description":"A safety measure that prevents one from accidentally deleting data.\n\nTo confirm that all entries should be deleted, set the value to `true`.\n"}],"responses":{"204":{"description":"Successful (no content)\n\nAll aliases were successfully deleted.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/aliases/v2/trackingId":{"parameters":[{"description":"An alias type","name":"type","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"description":"An external ID. An externalId and type pair uniquely identifies an alias.","name":"externalId","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"get":{"deprecated":true,"summary":"Gets the tracking ID associated with an alias","description":"Gets the `trackingId` associated with an alias.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Aliases"],"responses":{"200":{"description":"Successful\n\nThe `trackingId` was successfully retrieved.\n","content":{"application/json":{"schema":{"type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"externalId":{"type":"string","description":"Virtual device external ID, only present when the device is virtual","minLength":1,"maxLength":50},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"}},"required":["trackingId"],"additionalProperties":false,"example":{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/aliases/v2/{trackingId}/{type}/{externalId}":{"parameters":[{"description":"An alias type","name":"type","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"description":"An external ID. An `externalId` and a `type` pair uniquely identifies an alias.","name":"externalId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"put":{"deprecated":true,"summary":"Creates an alias","description":"Creates an alias for the `trackingId`. An alias must be unique within a project.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Aliases"],"responses":{"201":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Conflict","code":409,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource already exists.","details":{"hereErrorCode":404306}}}},"description":"Conflict\n\nThe specified resource already exists\n"}}},"delete":{"deprecated":true,"summary":"Deletes an alias","description":"Deletes the specified alias.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Aliases"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/aliases/v2/{trackingId}/batch":{"parameters":[{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"put":{"deprecated":true,"summary":"Creates multiple aliases for a device","description":"Creates a set of aliases for a device identified by the `trackingId`.\nAn alias must be unique within a project.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"aliases":{"type":"object","description":"A map of key-value pairs where the key is the type of the\nalias and the value is an array of `externalId`s.\n"}},"required":["aliases"]},"example":{"aliases":{"cargoId":["123-456"],"engines":["engine1","engine22"]}}}}},"tags":["Aliases"],"responses":{"201":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Conflict","code":409,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource already exists.","details":{"hereErrorCode":404306}}}},"description":"Conflict\n\nThe specified resource already exists\n"}}}},"/metadata/v2/health":{"get":{"deprecated":true,"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Metadata"]}},"/metadata/v2/version":{"get":{"deprecated":true,"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Metadata"]}},"/metadata/v2/devices/{trackingId}":{"parameters":[{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"get":{"deprecated":true,"summary":"Gets metadata of a device or a shipment","description":"Gets metadata of a device or a shipment identified by the `trackingId` or the `shipmentId`.","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Metadata"],"responses":{"200":{"description":"Successful\n\nThe metadata was successfully retrieved.\n","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"put":{"deprecated":true,"summary":"Creates or updates metadata of a device or a shipment","description":"Updates the metadata object of the device or a shipment identified by the `trackingId` or the `shipmentId`.\nThe metadata specified in the request body is merged with the existing metadata object\n(or gets created if no metadata object exists);\nnew keys are added, and the values of the existing keys are updated with the new data.\nAdding 'null' value for a key deletes it from the metadata object.\nSuccessful response body contains the updated metadata object.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"},"example":{"priority":"high"}}},"description":"Metadata object associated with the resource. Max size 1k.","required":true},"tags":["Metadata"],"responses":{"200":{"description":"Successful\n\nThe metadata was successfully updated.\n","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"delete":{"deprecated":true,"summary":"Deletes all metadata of a device or a shipment","description":"Deletes all the metadata of the device or a shipment identified by the `trackingId` or the `shipmentId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Metadata"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/metadata/v2/devices/batch":{"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"post":{"deprecated":true,"summary":"Gets a batch of metadata of multiple devices or shipments","description":"Gets a batch of metadata of multiple devices or shipments. The device or shipment IDs are specified in the request body.","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"example":["HERE-d0c29690-5d26-4cf1-a37e-b7816e72cb99","SHP-ff92eda0-3114-4640-b7e6-4ba641ae1124"]}}}},"tags":["Metadata"],"responses":{"200":{"description":"Successful\n\nThe metadata was successfully retrieved.\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false}}},"required":["data"]}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/metadata/v2/geofences/{geofenceId}":{"parameters":[{"description":"Geofence ID","in":"path","schema":{"type":"string","format":"uuid"},"name":"geofenceId","required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"get":{"deprecated":true,"summary":"Gets metadata of a geofence","description":"Gets metadata of the geofence identified by the `geofenceId`.","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Metadata"],"responses":{"200":{"description":"Successful\n\nThe metadata was successfully retrieved.\n","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Geofence ID","type":"string","format":"uuid"},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"put":{"deprecated":true,"summary":"Creates or updates metadata of a geofence","description":"Updates the metadata object of the geofence identified by the `geofenceId`.\nThe metadata specified in the request body is merged with the existing metadata object\n(or gets created if no metadata object exists);\nnew keys are added, and the values of the existing keys are updated with the new data.\nAdding 'null' value for a key deletes it from the metadata object.\nSuccessful response body contains the updated metadata object.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"},"example":{"priority":"high"}}},"description":"Metadata object associated with the resource. Max size 1k.","required":true},"tags":["Metadata"],"responses":{"200":{"description":"Successful\n\nThe metadata was successfully updated.\n","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Geofence ID","type":"string","format":"uuid"},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"delete":{"deprecated":true,"summary":"Deletes all metadata of a geofence","description":"Deletes all the metadata of the geofence identified by the `geofenceId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Metadata"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/metadata/v2/geofences/batch":{"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"post":{"deprecated":true,"summary":"Gets a batch of metadata of multiple geofences","description":"Gets a batch of metadata of multiple geofences. The geofences IDs are specified in the request body.","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"description":"Geofence ID","type":"string","format":"uuid"},"example":["d0c29690-5d26-4cf1-a37e-b7816e72cb99","ff92eda0-3114-4640-b7e6-4ba641ae1124"]}}}},"tags":["Metadata"],"responses":{"200":{"description":"Successful\n\nThe metadata was successfully retrieved.\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Geofence ID","type":"string","format":"uuid"},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false}}},"required":["data"]}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/metadata/v2/sensorRules/{sensorRuleId}":{"parameters":[{"in":"path","schema":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"name":"sensorRuleId","description":"Sensor rule ID","required":true},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"get":{"deprecated":true,"summary":"Gets metadata of a sensor rule","description":"Gets metadata of the sensor rule identified by the `sensorRuleId`.","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Metadata"],"responses":{"200":{"description":"Successful\n\nThe metadata was successfully retrieved.\n","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Sensor rule ID","type":"string","format":"uuid"},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"put":{"deprecated":true,"summary":"Creates or updates metadata of a sensor rule","description":"Updates the metadata object of the sensor rule identified by the `sensorRuleId`.\nThe metadata specified in the request body is merged with the existing metadata object\n(or gets created if no metadata object exists);\nnew keys are added, and the values of the existing keys are updated with the new data.\nAdding 'null' value for a key deletes it from the metadata object.\nSuccessful response body contains the updated metadata object.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"},"example":{"priority":"high"}}},"description":"Metadata object associated with the resource. Max size 1k.","required":true},"tags":["Metadata"],"responses":{"200":{"description":"Successful\n\nThe metadata was successfully updated.\n","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Sensor rule ID","type":"string","format":"uuid"},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"delete":{"deprecated":true,"summary":"Deletes all metadata of a sensor rule","description":"Delete all the metadata of the sensor rule identified by the `sensorRuleId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Metadata"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/metadata/v2/sensorRules/batch":{"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"post":{"deprecated":true,"summary":"Gets a batch of metadata for multiple sensor rules","description":"Gets a batch of metadata of multiple sensor rules. The sensor rules IDs are specified in the request body.","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"description":"Sensor rule ID","type":"string","format":"uuid"},"example":["d0c29690-5d26-4cf1-a37e-b7816e72cb99","ff92eda0-3114-4640-b7e6-4ba641ae1124"]}}}},"tags":["Metadata"],"responses":{"200":{"description":"Successful\n\nThe metadata was successfully retrieved.\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Sensor rule ID","type":"string","format":"uuid"},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false}}},"required":["data"]}],"example":{"data":[{"id":"3b10404d-4e9e-456b-b262-5e98dd39d9c3","data":{"blob":"SEVSRSBUcmFja2luZw=="}},{"id":"3b10404d-4e9e-456b-b262-5e98dd39d9c3","data":{"externalId":"EXT-1234"}}],"count":2,"pageToken":"018ffffea253d64ba"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/labels/v4/health":{"get":{"deprecated":true,"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Labels"]}},"/labels/v4/version":{"get":{"deprecated":true,"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Labels"]}},"/labels/v4/{resourceType}":{"parameters":[{"description":"The resource type, for example \"device\", \"geofence\".","name":"resourceType","in":"path","required":true,"schema":{"type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]}},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"get":{"deprecated":true,"summary":"Gets all labels of a resource type","description":"Gets all labels of the resource type `resourceType` within a project.\n\nThe `fields` parameter specifies which fields should be added to the response body\n(for example, `resourceId`).\n\nThe `labels` query parameter is specified as a label filter, and only the matching\nresults will be returned:\n\n\"?labels[priority]=high&labels[group]=group1&fields=resourceId,labels\"\n\"?labels[group]=*\"\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"description":"A filter containing label key-value pairs.","name":"labels","in":"query","required":false,"schema":{"type":"object"},"style":"deepObject","explode":true,"example":{"priority":"high","group":"group1"}},{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"limit","description":"The number of items to return per page","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"name":"fields","description":"Field names to filter a result object.\n","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false}],"tags":["Labels"],"responses":{"200":{"description":"Response body contains an array of label objects, `count` indicates the number of returned labels,\nand `pageToken` is the next page token if available.\n\nIf no label is found, an object with empty data array is returned.\n","content":{"application/json":{"example":{"items":[{"resourceId":"HERE-c47c0d1d-89fd-4961-b341-3eb109f58d19","resourceType":"device","labels":{"priority":["high"],"group":["group1"]}},{"resourceId":"HERE-a89uo64n-fd45-0956-g452-4g6w908um5r4","resourceType":"device","labels":{"priority":["high"],"group":["group1","group2"]}}],"nextPageToken":"823aabbea253d56fa","count":2,"limit":100},"schema":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"resourceId":{"description":"The resource ID, for example `trackingId`, `externalId`, `geofenceId`, etc.\n","type":"string","minLength":1,"maxLength":50},"resourceType":{"description":"The resource type, for example \"device\", \"geofence\".","type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]},"labels":{"description":"An object containing label key-value pairs.","type":"object"}},"required":["resourceId"]}}},"required":["limit","count","items"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/labels/v4/{resourceType}/keys":{"parameters":[{"description":"The resource type, for example \"device\", \"geofence\".","name":"resourceType","in":"path","required":true,"schema":{"type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]}},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"get":{"deprecated":true,"summary":"Gets all label keys of a resource type","description":"Gets all label keys of the resource type `resourceType`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Labels"],"responses":{"200":{"description":"Successful\n\nThe label keys were successfully retrieved.\n","content":{"application/json":{"example":{"keys":["priority","group","..."]},"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string","minLength":1,"maxLength":50,"description":"The label keys"}}},"required":["keys"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/labels/v4/{resourceType}/keys/{key}/values":{"parameters":[{"description":"The resource type, for example \"device\", \"geofence\".","name":"resourceType","in":"path","required":true,"schema":{"type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]}},{"description":"The label key.","name":"key","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"get":{"deprecated":true,"summary":"Gets all values of a label","description":"Gets all values of the label `key` for the resource type `resourceType`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Labels"],"responses":{"200":{"description":"Successful\n\nThe label values for a specific label key and resource type were successfully retrieved.\n","content":{"application/json":{"example":{"values":["high","group1","..."]},"schema":{"type":"object","properties":{"values":{"type":"array","items":{"type":"string","minLength":1,"maxLength":50,"description":"The label values"}}},"required":["values"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/labels/v4/{resourceType}/{resourceId}":{"parameters":[{"description":"The resource type, for example \"device\", \"geofence\".","name":"resourceType","in":"path","required":true,"schema":{"type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]}},{"description":"The resource ID, for example `trackingId`, `externalId`, `geofenceId`, etc.","name":"resourceId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"get":{"deprecated":true,"summary":"Gets all labels of a resource","description":"Gets all labels of the resource `resourceId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"fields","description":"Field names to filter a result object.\n","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false}],"tags":["Labels"],"responses":{"200":{"description":"Successful\n\nThe labels of a specific resource were successfully retrieved.\n","content":{"application/json":{"example":{"resourceId":"HERE-c47c0d1d-89fd-4961-b341-3eb109f58d19","resourceType":"device","labels":{"priority":["high"],"group":["group1"]}},"schema":{"type":"object","properties":{"resourceId":{"description":"The resource ID, for example `trackingId`, `externalId`, `geofenceId`, etc.\n","type":"string","minLength":1,"maxLength":50},"resourceType":{"description":"The resource type, for example \"device\", \"geofence\".","type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]},"labels":{"description":"An object containing label key-value pairs.","type":"object"}},"required":["resourceId"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"delete":{"deprecated":true,"summary":"Deletes all labels of a resource","description":"Deletes all labels of the resource `resourceId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Labels"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/labels/v4/{resourceType}/{resourceId}/{key}":{"parameters":[{"description":"The resource type, for example \"device\", \"geofence\".","name":"resourceType","in":"path","required":true,"schema":{"type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]}},{"description":"The resource ID, for example `trackingId`, `externalId`, `geofenceId`, etc.","name":"resourceId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"description":"The label key.","name":"key","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"delete":{"deprecated":true,"summary":"Deletes all labels of a resource by a label key","description":"Deletes all the labels that have the key `key` of the resource `resourceId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Labels"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/labels/v4/{resourceType}/{resourceId}/{key}/{value}":{"parameters":[{"description":"The resource type, for example \"device\", \"geofence\".","name":"resourceType","in":"path","required":true,"schema":{"type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]}},{"description":"The resource ID, for example `trackingId`, `externalId`, `geofenceId`, etc.","name":"resourceId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"description":"The label key.","name":"key","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"description":"The label value.","name":"value","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"put":{"deprecated":true,"summary":"Creates a label for a resource","description":"Creates a label for the resource `resourceId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Labels"],"responses":{"201":{"description":"Successful\n\nThe label was successfully created.\n","content":{"application/json":{"schema":{"type":"object","properties":{"resourceId":{"description":"The resource ID, for example `trackingId`, `externalId`, `geofenceId`, etc.\n","type":"string","minLength":1,"maxLength":50},"resourceType":{"description":"The resource type, for example \"device\", \"geofence\".","type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]},"labels":{"description":"An object containing label key-value pairs.","type":"object"}},"required":["resourceId"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Conflict","code":409,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource already exists.","details":{"hereErrorCode":404306}}}},"description":"Conflict\n\nThe specified resource already exists\n"}}},"delete":{"deprecated":true,"summary":"Deletes a label of a resource","description":"Deletes the label `key`-`value` of the resource `resourceId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Labels"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/labels/v4/{resourceType}/{resourceId}/batch":{"parameters":[{"description":"The resource type, for example \"device\", \"geofence\".","name":"resourceType","in":"path","required":true,"schema":{"type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]}},{"description":"The resource ID, for example `trackingId`, `externalId`, `geofenceId`, etc.","name":"resourceId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50}},{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"put":{"deprecated":true,"summary":"Creates a set of labels for a resource","description":"Creates a set of labels for the resource `resourceId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"labels":{"type":"object","description":"A map of key-value pairs where the key is the label key\nand the value is an array of label values.\n"}},"required":["labels"]},"example":{"labels":{"priority":["high"],"group":["group1","group2"]}}}}},"tags":["Labels"],"responses":{"201":{"description":"Successful\n\nThe labels were successfully created.\n","content":{"application/json":{"schema":{"type":"object","properties":{"resourceId":{"description":"The resource ID, for example `trackingId`, `externalId`, `geofenceId`, etc.\n","type":"string","minLength":1,"maxLength":50},"resourceType":{"description":"The resource type, for example \"device\", \"geofence\".","type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]},"labels":{"description":"An object containing label key-value pairs.","type":"object"}},"required":["resourceId"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Conflict","code":409,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource already exists.","details":{"hereErrorCode":404306}}}},"description":"Conflict\n\nThe specified resource already exists\n"}}}},"/associations/v3/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Associations"]}},"/associations/v3/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Associations"]}},"/associations/v3/sensors/{sensorRuleId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"in":"path","schema":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"name":"sensorRuleId","description":"ID of the sensor rule","required":true}],"get":{"deprecated":true,"summary":"Gets all devices associated with a sensor rule","description":"Gets all devices associated with the sensor rule `sensorRuleId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false}],"tags":["Associations"],"responses":{"200":{"description":"Response body contains an array of device objects, count indicating the number of returned devices,\nand pageToken if available.\n\nIf no associations are found, an object with empty data array is returned.\n","content":{"application/json":{"example":{"data":[{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6","externalId":"TestDevice1","appId":"c2639c686251407a9052aaea824a1fb5"},{"trackingId":"HERE-b0146d7b-2e46-4cee-bc71-6da03ba2da85","externalId":"TestDevice2","appId":"c2639c686251407a9052aaea824a1fc9"}],"pageToken":"024ggjjea253d79fc","count":2},"schema":{"type":"object","description":"Response body contains an array of device objects, count indicating the number of returned devices,\nand pageToken if available. If no devices are found, an object with empty data array is returned.\n","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"description":"Response body contains a single device object.\n","type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"externalId":{"type":"string","minLength":1,"maxLength":50,"description":"Virtual device external ID, only present when the device is virtual"},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"}},"required":["trackingId"]}}}}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"The sensor rule ID was not found.","details":{"hereErrorCode":404306}}}},"description":"The sensor rule ID was not found"}}}},"/associations/v3/geofences/{geofenceId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"in":"path","schema":{"type":"string","format":"uuid"},"name":"geofenceId","description":"ID of the geofence","required":true}],"get":{"deprecated":true,"summary":"Gets all devices associated with a geofence","description":"Gets all devices associated with the geofence `geofenceId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false}],"tags":["Associations"],"responses":{"200":{"description":"Response body contains an array of device objects, count indicating the number of returned devices,\nand pageToken if available.\n\nIf no associations are found, an object with empty data array is returned.\n","content":{"application/json":{"example":{"data":[{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6","externalId":"TestDevice1","appId":"c2639c686251407a9052aaea824a1fb5"},{"trackingId":"HERE-b0146d7b-2e46-4cee-bc71-6da03ba2da85","externalId":"TestDevice2","appId":"c2639c686251407a9052aaea824a1fc9"}],"pageToken":"024ggjjea253d79fc","count":2},"schema":{"type":"object","description":"Response body contains an array of device objects, count indicating the number of returned devices,\nand pageToken if available. If no devices are found, an object with empty data array is returned.\n","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"description":"Response body contains a single device object.\n","type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"externalId":{"type":"string","minLength":1,"maxLength":50,"description":"Virtual device external ID, only present when the device is virtual"},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"}},"required":["trackingId"]}}}}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/associations/v3/rules/{ruleId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"in":"path","schema":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"name":"ruleId","description":"ID of the rule","required":true}],"get":{"deprecated":true,"summary":"Gets all devices associated with a rule","description":"Gets all devices associated with the rule `ruleId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false}],"tags":["Associations"],"responses":{"200":{"description":"Response body contains an array of device objects, count indicating the number of returned devices,\nand pageToken if available.\n\nIf no associations are found, an object with empty data array is returned.\n","content":{"application/json":{"example":{"data":[{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6","externalId":"TestDevice1","appId":"c2639c686251407a9052aaea824a1fb5"},{"trackingId":"HERE-b0146d7b-2e46-4cee-bc71-6da03ba2da85","externalId":"TestDevice2","appId":"c2639c686251407a9052aaea824a1fc9"}],"pageToken":"024ggjjea253d79fc","count":2},"schema":{"type":"object","description":"Response body contains an array of device objects, count indicating the number of returned devices,\nand pageToken if available. If no devices are found, an object with empty data array is returned.\n","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"description":"Response body contains a single device object.\n","type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"externalId":{"type":"string","minLength":1,"maxLength":50,"description":"Virtual device external ID, only present when the device is virtual"},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"}},"required":["trackingId"]}}}}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/associations/v3/{trackingId}/sensors/{sensorRuleId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"in":"path","schema":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"name":"sensorRuleId","description":"ID of the sensor rule","required":true},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"put":{"summary":"Associates a device with a sensor rule","description":"Associates the device with `trackingId` to the sensor rule with `sensorRuleId`.\n\nA single device can only have one sensor rule per sensor type associated.\n\nThe associated sensor rule settings will be automatically synchronised to the `system.sensorAlarmConfig` section of the device\n`desired shadow`.\n\nEvery time the associated sensor rule gets triggered by the device ingestion, an event will be generated.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Associations"],"responses":{"200":{"description":"Successful\n\nDevice already associated with the sensor rule\n"},"201":{"description":"Successful\n\nThe device has been associated with the sensor rule\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"delete":{"summary":"Disassociates a device and a sensor rule","description":"Deletes the association between the sensor rule `sensorRuleId` and the device `trackingId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Associations"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/associations/v3/{trackingId}/geofences/{geofenceId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"in":"path","schema":{"type":"string","format":"uuid"},"name":"geofenceId","description":"ID of the geofence","required":true},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"put":{"summary":"Associates a device to a geofence","description":"Associates the device with `trackingId` to the geofence with `geofenceId`.\nWhenever the device enters or exits the associated geofence, an event is generated.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Associations"],"responses":{"200":{"description":"Successful\n\nDevice already associated with the geofence\n"},"201":{"description":"Successful\n\nThe device has been associated with the geofence\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"delete":{"summary":"Disassociates a device and a geofence","description":"Deletes an association between the geofence `geofenceId` and the device `trackingId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Associations"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/associations/v3/{trackingId}/rules/{ruleId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"in":"path","schema":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"name":"ruleId","description":"ID of the rule","required":true},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"put":{"summary":"Associates a device to a rule","description":"Associates the device with `trackingId` to the rule with `ruleId`.\nWhenever the device behaviour triggers the rule, an event is generated.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Associations"],"responses":{"200":{"description":"Successful\n\nDevice already associated with the rule\n"},"201":{"description":"Successful\n\nThe device has been associated with the rule\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"delete":{"summary":"Disassociates a device and a rule","description":"Deletes an association between the rule `ruleId` and the device `trackingId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Associations"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/associations/v3/{trackingId}/sensors":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"get":{"summary":"Gets sensor rules associated with a device","description":"Gets a list of sensor rules associated with the device `trackingId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false}],"tags":["Associations"],"responses":{"200":{"description":"Response body contains an array of sensor rule objects, count indicating the number of returned sensor rules,\nand pageToken if available.\n\nIf no sensor rule is found, an object with empty data array is returned.\n","content":{"application/json":{"example":{"data":[{"id":"f4c26630-5d26-4cd1-a57e-g7834e72cb99","type":"temperature","range":{"begin":-20,"end":30}},{"id":"j7c24430-5f26-4kd1-c58e-g7126e72ab33","type":"pressure","range":{"begin":30,"end":80}}],"pageToken":"024ggjjea253d79fc","count":2},"schema":{"type":"object","description":"Response body contains an array of sensor rule objects, `count` indicates the number of returned sensor rules,\nand `pageToken` is the next page token if available.\n\nIf no sensor rules are found, an object with an empty data array is returned.\n","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"description":"Response body contains a single sensor rule object","type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"type":{"type":"string","description":"The sensor type.","enum":["attach","battery","humidity","pressure","tamper","temperature","acceleration"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"The lower threshold value."},"end":{"type":"number","description":"The upper threshold value."}},"required":["begin","end"]},"threshold":{"type":"object","properties":{"value":{"type":"number","description":"Threshold value"}},"required":["value"]},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","type"]}}}}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/associations/v3/{trackingId}/geofences":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"get":{"summary":"Gets geofences associated with a device","description":"Gets a list of geofences associated with the device `trackingId`.\n","security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"name":"type","description":"Type of a geofence","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["circle","polygon","poi"]}}}],"tags":["Associations"],"responses":{"200":{"description":"Response body contains an array of geofence objects, `count` specifies the number of returned geofences,\nand `pageToken` indicates the next available page in the matching result set.\n\nIf no geofences are found, an object with empty data array is returned.\nResponse content type can be either JSON or protobuf depending on the 'Content-Type' request header.\n","content":{"application/json":{"example":{"data":[{"id":"d0c29690-5d26-4cf1-a37e-b7816e72cb99","geofence":{"definition":{"points":[{"lng":13.38490035,"lat":52.5308398},{"lng":14.38490035,"lat":52.5408398},{"lng":13.39490035,"lat":53.5308398}]},"type":"polygon"}},{"id":"ff92eda0-3114-4640-b7e6-4ba641ae1124","geofence":{"name":"16fbc82c-88d1-4219-bfad-6e5de52688a2","description":"This is a circular geofence","type":"circle","definition":{"center":{"lat":52.5308398,"lng":13.38490035},"radius":100,"floor":{"id":"DM_82228","name":"House 3"}}}}],"pageToken":"027ffffea253d79fc","count":2},"schema":{"type":"object","description":"Response body contains an array of geofence objects. `count` indicates the number of returned geofences, and `pageToken` indicates the next available page in the matching result set. If no geofences are found, an object with empty data array is returned.","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"description":"Single geofence object","type":"object","properties":{"id":{"description":"Geofence ID","type":"string","format":"uuid"},"version":{"description":"Geofence version","type":"integer"},"createdAt":{"description":"Timestamp indicating when the geofence has been created","type":"string","format":"date-time"},"updatedAt":{"description":"Timestamp indicating when the geofence has been updated","type":"string","format":"date-time"},"geofence":{"oneOf":[{"title":"Circle","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["circle"]},"definition":{"type":"object","description":"An object that defines the area of a circular geofence","properties":{"center":{"description":"The coordinates of the center point of the circle.","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"radius":{"type":"number","description":"The radius of the circle in meters.","minimum":0},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}},"required":["center","radius"]},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","definition"]},{"title":"Polygon","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["polygon"]},"definition":{"type":"object","description":"An object that defines the area of a polygonal geofence.","properties":{"points":{"type":"array","description":"An array of points that define the polygon. A minimum of three and a maximum of five hundred points is required.","minItems":3,"maxItems":500,"items":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]}},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}},"required":["points"]},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","definition"]},{"title":"POI","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["poi"]},"definition":{"type":"object","description":"An object that defines the area of a POI geofence.","properties":{"location":{"type":"object","description":"Details of the geofence location","properties":{"room":{"description":"The room ID","type":"string","minLength":1,"maxLength":100},"address":{"description":"Address","type":"string","minLength":1,"maxLength":255},"country":{"description":"Country","type":"string","minLength":1,"maxLength":255},"position":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Coordinates for visualization purposes"}}},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}}},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"trainingStatus":{"type":"object","properties":{"trained":{"description":"True if the POI geofence is trained","type":"boolean"},"metadata":{"type":"object","properties":{"usedWlanApCount":{"description":"The number of WLAN access point used in training","type":"number"},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"timestamp":{"description":"Training data timestamp","type":"integer","minimum":2,"maximum":4102448400000},"coordinate":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Training data position"}},"required":["usedWlanApCount"]}},"required":["trained"]},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","trainingStatus"]}]}},"required":["id","geofence"]}}}}]}},"application/octet-stream":{"example":"34 56 18 93 45 29 54 62 77 28 23 79 22","schema":{"type":"array","items":{},"description":"Response body contains an array of geofence objects, `count` specifies the number of returned geofences,\nand `pageToken` indicates the next available page in the matching result set.\n\nIf no geofences are found, an object with empty data array is returned.\n","example":{"response data as Protobuf binary, format as follows":"message GeofenceMsg {\n message GeofenceCircular {\n //Latitude value\n float lat = 1;\n //Longitude value\n float lng = 2;\n //Center radius value\n uint32 radius = 3;\n //Geofence ID\n string id = 4;\n }\n message GeofencePolygonal {\n //Latitude value array\n repeated float lat = 1;\n //Longitude value array\n repeated float lng = 2;\n //Geofence ID\n string id = 3;\n }\n //Circular geofence array\n repeated GeofenceCircular circulars = 1;\n //Polygonal geofence array\n repeated GeofencePolygonal polygonals = 2;\n //Page token\n string pageToken = 3;\n}\n"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"The trackingId was not found.","details":{"hereErrorCode":404306}}}},"description":"TrackingId not found."}}}},"/associations/v3/{trackingId}/rules":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"get":{"summary":"Gets rules associated with a device","description":"Gets a list of rules associated with the device `trackingId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false}],"tags":["Associations"],"responses":{"200":{"description":"Response body contains an array of rule objects, count indicating the number of returned rules,\nand pageToken if available.\n\nIf no rule is found, an object with empty data array is returned.\n","content":{"application/json":{"example":{"data":[{"ruleId":"f4c26630-5d26-4cd1-a57e-g7834e72cb99","rule":{"type":"dwelling","threshold":{"durationS":3600}}}],"pageToken":"024ggjjea253d79fc","count":1},"schema":{"type":"object","description":"Response body contains an array of rule objects, count indicating the number of returned rules,\nand pageToken if available. If no rules are found, an object with empty data array is returned.\n","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"rule":{"oneOf":[{"title":"Detention","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["detention"]},"threshold":{"description":"Detention event is triggered when the asset has been continuously stationary for longer\nthan the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Dwelling","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["dwelling"]},"threshold":{"description":"Dwelling event is triggered when the asset has been continuously inside a geofence\nfor longer than the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Utilization","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["utilization"]},"threshold":{"description":"Utilization event is triggered when the asset starts moving\nindicating that the asset is utilized, and also when the asset stops\nmoving and has been stationary for longer than the threshold duration\nindicating that the asset is unutilized.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Online","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["online"]},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type"],"additionalProperties":false}]}},"required":["ruleId","rule"]}}}}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/associations/v3/devices/{trackingId}/batchCreate":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"post":{"summary":"Associates rules with a device","description":"Associates rules with the device `trackingId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Associations"],"requestBody":{"content":{"application/json":{"schema":{"description":"Body containing arrays of ruleIds and geofenceIds to associate with the device.","type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":15,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false}}}},"responses":{"201":{"description":"Successful\n\nDevice has been associated with provided rules.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}}},"/associations/v3/devices/{trackingId}/batchDelete":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"post":{"summary":"Disassociates rules from a device","description":"Disassociates rules from the device identified by `trackingId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Associations"],"requestBody":{"content":{"application/json":{"schema":{"description":"Body containing arrays of ruleIds and geofenceIds to disassociate from the device.","type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":15,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false}}}},"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}}},"/associations/v3/devices/batchUpdate":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"put":{"summary":"Updates rules associations for devices","description":"Updates rules associated with devices.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Associations"],"requestBody":{"content":{"application/json":{"schema":{"description":"Body containing arrays of ruleIds and geofenceIds to disassociate\n(oldRules) from and associate (newRules) to the devices identified\nin trackingIds array.\n","type":"object","properties":{"trackingIds":{"type":"array","description":"Array of tracking IDs (external IDs are also permitted here)","minItems":1,"maxItems":50,"items":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."}},"oldRules":{"description":"Rules to be disassociated from the devices","type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":15,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false},"newRules":{"description":"Rules to be associated to the devices","type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":15,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false}},"required":["trackingIds","oldRules","newRules"],"additionalProperties":false}}}},"responses":{"201":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}}},"/events/v3/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Events"]}},"/events/v3/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Events"]}},"/events/v3":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"get":{"summary":"Gets event history","description":"Gets all events for all devices and shipments of the project. The results are listed in descending order\nbased on the timestamp.\n\nAn event is uniquely identified by `trackingId`-`ruleId`-`timestamp` key,\nwith an exception of dwelling and stock rule events.\nDwelling events also need `geofenceId` to be specified,\nwhereas for stock events `trackingId` is not applicable.\n\nA time range can be defined with `before` and `after` timestamps. The response will contain\nan array of events that were recorded within the range.\nThe default value for `before` parameter is the current time, and for the `after` parameter\nit is one day in the past from the current time.\nThe `after` parameter value is not allowed to be earlier than two weeks in the past from the\n`before` timestamp, otherwise an error is returned.\n\nIf the request is supplied with `eventSource` query parameter, the response will contain\nevents generated by the defined source only.\n\nIf the request is supplied with `eventType` query parameter, the response will contain\nevents of the specified type only.\n\nIf the request is supplied with `ruleId` query parameter, the response will only contain events\nfor the specified rule ID.\n\nIf the request is supplied with `initialState` query parameter, the response will contain\nevents having the specified initial state.\n\nAll the aforementioned query parameters can be combined together.\n","tags":["Events"],"security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"before","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\nThe accepted range is from 1 to the current time.\n","in":"query","required":false,"schema":{"type":"number","minimum":1}},{"name":"after","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\nThe accepted range is from 0 to the current time.\n","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"eventSource","in":"query","required":false,"schema":{"oneOf":[{"description":"The event source rule type.\n","type":"string","enum":["acceleration","attach","battery","detention","dwelling","geofence","humidity","online","pressure","shipmentEtaChange","shipmentSchedule","stock","tamper","temperature","utilization"]},{"type":"array","items":{"description":"The event source rule type.\n","type":"string","enum":["acceleration","attach","battery","detention","dwelling","geofence","humidity","online","pressure","shipmentEtaChange","shipmentSchedule","stock","tamper","temperature","utilization"]}}]}},{"name":"eventType","in":"query","required":false,"schema":{"oneOf":[{"description":"Type of the event.\n\nAn event is created every time an associated rule or geofence is triggered by a device ingestion.\nThe event type depends on the data the device sends.\n\nSensors that report numerical data (such as battery, humidity, pressure and temperature sensors),\ngenerate an event when the reported sensor reading of the device goes in or out of range, which is configured in the rule.\nThis produces events of BELOW_RANGE, IN_RANGE and ABOVE_RANGE types.\n\nSensors that report boolean data (such as attach and tamper sensors), generate events when the device\ntransitions from one state to another, either from `false` to `true` or vice versa.\nThis produces events of FALSE_TO_TRUE and TRUE_TO_FALSE types.\nThe same event types are also generated by the online rule when the device state changes from `offline`\n(when the device has stopped ingesting data) to `online` (when the device data ingestion has resumed)\nor vice versa.\n\nThe acceleration sensor generates events whenever the reported sensor reading\ncrosses the acceleration threshold (for example, when the device was dropped).\nThis produces events of the type EVENT.\nSuch events are stateless.\n\nEvents of INSIDE_GEOFENCE and OUTSIDE_GEOFENCE types are generated when the device enters or exits\na geofence associated with the device.\n\nEvents of DWELLING_STARTED type are generated when the device has\nstayed inside an associated geofence for longer than the threshold duration.\nDWELLING_ENDED type events are generated when dwelling of the device has ended.\n\nEvents of DETENTION_STARTED type are generated when the device has been\nstationary for longer than the threshold duration, regardless whether the device is inside\nor outside of any geofence.\nDETENTION_ENDED type events will be generated when the device starts moving again.\n\nEvents of UNUTILIZED type are generated when the device has been stationary for longer than the\nthreshold duration.\nUTILIZED type events are generated when the device starts moving again after having been stationary.\n\nEvents of OVERSTOCK, NORMAL_VOLUME and UNDERSTOCK types are generated when the number of assets\ninside a geofence crosses the `minVolume` and `maxVolume` thresholds of an associated stock rule.\n\nEvent of SHIPMENT_ESTIMATE_CHANGED is generated when the estimated departure (ETD) or arrival (ETA) times\ndeviate from the original estimates more than the defined threshold.\n\nEvents of SHIPMENT_EARLY, SHIPMENT_ON_TIME and SHIPMENT_DELAYED types are generated when a shipment\nis too early, on time or delayed.\n","type":"string","enum":["BELOW_RANGE","IN_RANGE","ABOVE_RANGE","FALSE_TO_TRUE","TRUE_TO_FALSE","EVENT","INSIDE_GEOFENCE","OUTSIDE_GEOFENCE","OVERSTOCK","NORMAL_VOLUME","UNDERSTOCK","DWELLING_STARTED","DWELLING_ENDED","DETENTION_STARTED","DETENTION_ENDED","UTILIZED","UNUTILIZED","SHIPMENT_EARLY","SHIPMENT_ON_TIME","SHIPMENT_DELAYED","SHIPMENT_ESTIMATE_CHANGED"]},{"type":"array","items":{"description":"Type of the event.\n\nAn event is created every time an associated rule or geofence is triggered by a device ingestion.\nThe event type depends on the data the device sends.\n\nSensors that report numerical data (such as battery, humidity, pressure and temperature sensors),\ngenerate an event when the reported sensor reading of the device goes in or out of range, which is configured in the rule.\nThis produces events of BELOW_RANGE, IN_RANGE and ABOVE_RANGE types.\n\nSensors that report boolean data (such as attach and tamper sensors), generate events when the device\ntransitions from one state to another, either from `false` to `true` or vice versa.\nThis produces events of FALSE_TO_TRUE and TRUE_TO_FALSE types.\nThe same event types are also generated by the online rule when the device state changes from `offline`\n(when the device has stopped ingesting data) to `online` (when the device data ingestion has resumed)\nor vice versa.\n\nThe acceleration sensor generates events whenever the reported sensor reading\ncrosses the acceleration threshold (for example, when the device was dropped).\nThis produces events of the type EVENT.\nSuch events are stateless.\n\nEvents of INSIDE_GEOFENCE and OUTSIDE_GEOFENCE types are generated when the device enters or exits\na geofence associated with the device.\n\nEvents of DWELLING_STARTED type are generated when the device has\nstayed inside an associated geofence for longer than the threshold duration.\nDWELLING_ENDED type events are generated when dwelling of the device has ended.\n\nEvents of DETENTION_STARTED type are generated when the device has been\nstationary for longer than the threshold duration, regardless whether the device is inside\nor outside of any geofence.\nDETENTION_ENDED type events will be generated when the device starts moving again.\n\nEvents of UNUTILIZED type are generated when the device has been stationary for longer than the\nthreshold duration.\nUTILIZED type events are generated when the device starts moving again after having been stationary.\n\nEvents of OVERSTOCK, NORMAL_VOLUME and UNDERSTOCK types are generated when the number of assets\ninside a geofence crosses the `minVolume` and `maxVolume` thresholds of an associated stock rule.\n\nEvent of SHIPMENT_ESTIMATE_CHANGED is generated when the estimated departure (ETD) or arrival (ETA) times\ndeviate from the original estimates more than the defined threshold.\n\nEvents of SHIPMENT_EARLY, SHIPMENT_ON_TIME and SHIPMENT_DELAYED types are generated when a shipment\nis too early, on time or delayed.\n","type":"string","enum":["BELOW_RANGE","IN_RANGE","ABOVE_RANGE","FALSE_TO_TRUE","TRUE_TO_FALSE","EVENT","INSIDE_GEOFENCE","OUTSIDE_GEOFENCE","OVERSTOCK","NORMAL_VOLUME","UNDERSTOCK","DWELLING_STARTED","DWELLING_ENDED","DETENTION_STARTED","DETENTION_ENDED","UTILIZED","UNUTILIZED","SHIPMENT_EARLY","SHIPMENT_ON_TIME","SHIPMENT_DELAYED","SHIPMENT_ESTIMATE_CHANGED"]}}]}},{"name":"ruleId","in":"query","required":false,"schema":{"oneOf":[{"type":"string","format":"uuid","description":"ID of the rule or geofence. Must be a valid UUIDv4.\n"},{"type":"array","items":{"type":"string","format":"uuid","description":"ID of the rule or geofence. Must be a valid UUIDv4.\n"}}]}},{"name":"initialState","in":"query","required":false,"schema":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":1000},"in":"query","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"responses":{"200":{"description":"Successful\n\nThe events were successfully retrieved.\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":1000,"default":1000,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"oneOf":[{"title":"Boolean event","description":"Events generated by online rule or by sensors that report boolean data (attach, tamper).\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source rule type.\n","type":"string","enum":["attach","tamper","online"]},"eventType":{"type":"string","enum":["FALSE_TO_TRUE","TRUE_TO_FALSE"]}},"required":["eventSource","eventType"]}]},{"title":"Range event","description":"Events generated by sensor that report numerical data (battery, humidity,\npressure and temperature).\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source rule type.\n","type":"string","enum":["battery","humidity","pressure","temperature"]},"eventType":{"type":"string","enum":["BELOW_RANGE","IN_RANGE","ABOVE_RANGE"]}},"required":["eventSource","eventType"]}]},{"title":"Generic event","description":"Events generated by sensor that report numerical data but only when a specific\nevent occurs (eg. the device was dropped)\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source: acceleration rule\n","type":"string","enum":["acceleration"]},"eventType":{"type":"string","enum":["EVENT"]}},"required":["eventSource","eventType"]}]},{"title":"Geofence event","description":"Events generated by device crossing the geofence border.\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source: geofence rule\n","type":"string","enum":["geofence"]},"eventType":{"type":"string","enum":["INSIDE_GEOFENCE","OUTSIDE_GEOFENCE"]},"version":{"description":"Geofence version","type":"integer"}},"required":["eventSource","eventType"]}]},{"title":"Stock event","description":"Events generated by the number of assets inside a geofence over a maximum stock volume,\nor between a minimum stock volume and a maximum stock volume, or under a minimum stock volume.\n","allOf":[{"properties":{"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"eventSource":{"description":"The event source: stock rule\n","type":"string","enum":["stock"]},"eventType":{"description":"The \"OVERSTOCK\" type - Events are triggered when the number of assets\nis over a maximum stock volume.\n\nThe \"UNDERSTOCK\" type - Events are triggered when the number of assets\nis under a minimum stock volume.\n\nThe \"NORMAL_VOLUME\" type - Events are triggered when the number of assets\nis between the minimum stock volume and the maximum stock volume.\n","type":"string","enum":["OVERSTOCK","NORMAL_VOLUME","UNDERSTOCK"]}},"required":["timestamp","ruleId","eventSource","eventType"]},{"type":"object","properties":{"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["initialState"]}]},{"title":"Dwelling event","description":"Events generated by a device that has dwelled inside a geofence for longer than specified\nthreshold duration\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"type":"string","description":"The event source: dwelling rule\n","enum":["dwelling"]},"eventType":{"type":"string","enum":["DWELLING_STARTED","DWELLING_ENDED"]},"geofenceId":{"description":"An ID of a geofence that triggered the dwelling event\n","type":"string","format":"uuid"}},"required":["eventSource","eventType","geofenceId"]}]},{"title":"Detention event","description":"Events generated when a device has been stationary for longer than the specified\nthreshold duration.\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source: detention rule\n","type":"string","enum":["detention"]},"eventType":{"type":"string","enum":["DETENTION_STARTED","DETENTION_ENDED"]}},"required":["eventSource","eventType"]}]},{"title":"Utilization event","description":"The UTILIZED event is generated when a device starts moving,\nand the UNUTILIZED event is generated when the device has been stationary\nfor longer than the specified threshold duration.\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source: utilization rule\n","type":"string","enum":["utilization"]},"eventType":{"type":"string","enum":["UTILIZED","UNUTILIZED"]}},"required":["eventSource","eventType"]}]},{"title":"Shipment ETA change event","description":"Events generated by a shipment whose calculated ETD or ETA has changed\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"type":"object","properties":{"eventSource":{"type":"string","enum":["shipmentEtaChange"]},"eventType":{"type":"string","enum":["SHIPMENT_ESTIMATE_CHANGED"]},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"segmentId":{"description":"An ID of the segment where the ETD/ETA change was detected\n","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"segmentStatus":{"description":"Status of the segment.","type":"string","enum":["pending","ongoing","completed","cancelled"]},"segmentOrigin":{"description":"Segment origin location","type":"object","properties":{"id":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},"required":["id"]},"segmentDestination":{"description":"Segment destination location","type":"object","properties":{"id":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},"required":["id"]},"shipmentEtd":{"description":"Estimated time of departure of the shipment","type":"string","format":"date-time"},"shipmentEta":{"description":"Estimated time of arrival of the shipment","type":"string","format":"date-time"},"etaType":{"description":"Type of the ETA value: static ETA values are calculated for pending\nstate shipments, dynamic ETA values for ongoing state shipments.\n","type":"string","enum":["dynamic","static"]},"etaModelVersion":{"description":"ML model version used for ETA calculation. Present only when ML model is used.\n","type":"string","maxLength":50,"example":"2.3.1"},"segmentEtaChanges":{"type":"array","items":{"type":"object","properties":{"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"segmentOrigin":{"description":"Segment origin location","type":"object","properties":{"id":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},"required":["id"]},"segmentDestination":{"description":"Segment destination location","type":"object","properties":{"id":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},"required":["id"]},"segmentEtd":{"description":"Estimated time of departure of the segment","type":"string","format":"date-time"},"segmentEta":{"description":"Estimated time of arrival of the segment","type":"string","format":"date-time"},"etaModelVersion":{"description":"ML model version used for ETA calculation. Present only when ML model is used.\n","type":"string","maxLength":50,"example":"2.3.1"}},"required":["segmentId"]}}},"required":["eventSource","eventType","segmentId","segmentStatus"]}]},{"title":"Shipment schedule event","description":"Events generated by a shipment that is ahead or delayed from its preplanned schedule\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"type":"object","properties":{"eventSource":{"type":"string","enum":["shipmentSchedule"]},"eventType":{"type":"string","enum":["SHIPMENT_EARLY","SHIPMENT_ON_TIME","SHIPMENT_DELAYED"]},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"segmentStatus":{"description":"Status of the segment.","type":"string","enum":["pending","ongoing","completed","cancelled"]}},"required":["eventSource","eventType","segmentId","segmentStatus"]}]}]}}}}]},"example":{"count":1,"pageToken":"2lkjfdaoiekllldko=sdflkjdfasdi34","data":[{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6","eventSource":"attach","timestamp":1499258057036,"eventType":"TRUE_TO_FALSE","ruleId":"e2f651ee-f196-4fa3-bf88-894dc131dea3","initialState":false}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/events/v3/{trackingId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"get":{"summary":"Gets event history for a device or a shipment","description":"Gets all events for a device or a shipment.\nA device is identified by the `trackingId`.\nFor shipments, `shipmentId` can be used as a `trackingId`.\n\nThe results are listed in descending order based on the timestamp.\n\nAn event is uniquely identified by `trackingId`-`ruleId`-`timestamp` key,\nwith an exception of dwelling and stock rule events.\nDwelling events also need `geofenceId` to be specified,\nwhereas for stock events `trackingId` is not applicable.\n\nA single event can be fetched using `ruleId`, `before` and `after` query parameters.\n\nA time range can be defined with `before` and `after` timestamps. The response will contain\nan array of events that were recorded within the range.\nThe default value for `before` parameter is the current time, and for the `after` parameter\nit is one day in the past from the current time.\nThe `after` parameter value is not allowed to be earlier than two weeks in the past from the\n`before` timestamp, otherwise an error is returned.\n\nIf the request is supplied with `eventSource` query parameter, the response will contain\nevents generated by the defined source only.\n\nIf the request is supplied with `eventType` query parameter, the response will contain\nevents of the specified type only.\n\nIf the request is supplied with `ruleId` query parameter, the response will only contain events\nfor the specified rule ID.\n\nIf the request is supplied with `initialState` query parameter, the response will contain\nevents having the specified initial state.\n\nAll the aforementioned query parameters can be combined together.\n","tags":["Events"],"security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"required":true},{"name":"before","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\nThe accepted range is from 1 to the current time.\n","in":"query","required":false,"schema":{"type":"number","minimum":1}},{"name":"after","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\nThe accepted range is from 0 to the current time.\n","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"eventSource","in":"query","required":false,"schema":{"oneOf":[{"description":"The event source rule type.\n","type":"string","enum":["acceleration","attach","battery","detention","dwelling","geofence","humidity","online","pressure","shipmentEtaChange","shipmentSchedule","stock","tamper","temperature","utilization"]},{"type":"array","items":{"description":"The event source rule type.\n","type":"string","enum":["acceleration","attach","battery","detention","dwelling","geofence","humidity","online","pressure","shipmentEtaChange","shipmentSchedule","stock","tamper","temperature","utilization"]}}]}},{"name":"eventType","in":"query","required":false,"schema":{"oneOf":[{"description":"Type of the event.\n\nAn event is created every time an associated rule or geofence is triggered by a device ingestion.\nThe event type depends on the data the device sends.\n\nSensors that report numerical data (such as battery, humidity, pressure and temperature sensors),\ngenerate an event when the reported sensor reading of the device goes in or out of range, which is configured in the rule.\nThis produces events of BELOW_RANGE, IN_RANGE and ABOVE_RANGE types.\n\nSensors that report boolean data (such as attach and tamper sensors), generate events when the device\ntransitions from one state to another, either from `false` to `true` or vice versa.\nThis produces events of FALSE_TO_TRUE and TRUE_TO_FALSE types.\nThe same event types are also generated by the online rule when the device state changes from `offline`\n(when the device has stopped ingesting data) to `online` (when the device data ingestion has resumed)\nor vice versa.\n\nThe acceleration sensor generates events whenever the reported sensor reading\ncrosses the acceleration threshold (for example, when the device was dropped).\nThis produces events of the type EVENT.\nSuch events are stateless.\n\nEvents of INSIDE_GEOFENCE and OUTSIDE_GEOFENCE types are generated when the device enters or exits\na geofence associated with the device.\n\nEvents of DWELLING_STARTED type are generated when the device has\nstayed inside an associated geofence for longer than the threshold duration.\nDWELLING_ENDED type events are generated when dwelling of the device has ended.\n\nEvents of DETENTION_STARTED type are generated when the device has been\nstationary for longer than the threshold duration, regardless whether the device is inside\nor outside of any geofence.\nDETENTION_ENDED type events will be generated when the device starts moving again.\n\nEvents of UNUTILIZED type are generated when the device has been stationary for longer than the\nthreshold duration.\nUTILIZED type events are generated when the device starts moving again after having been stationary.\n\nEvents of OVERSTOCK, NORMAL_VOLUME and UNDERSTOCK types are generated when the number of assets\ninside a geofence crosses the `minVolume` and `maxVolume` thresholds of an associated stock rule.\n\nEvent of SHIPMENT_ESTIMATE_CHANGED is generated when the estimated departure (ETD) or arrival (ETA) times\ndeviate from the original estimates more than the defined threshold.\n\nEvents of SHIPMENT_EARLY, SHIPMENT_ON_TIME and SHIPMENT_DELAYED types are generated when a shipment\nis too early, on time or delayed.\n","type":"string","enum":["BELOW_RANGE","IN_RANGE","ABOVE_RANGE","FALSE_TO_TRUE","TRUE_TO_FALSE","EVENT","INSIDE_GEOFENCE","OUTSIDE_GEOFENCE","OVERSTOCK","NORMAL_VOLUME","UNDERSTOCK","DWELLING_STARTED","DWELLING_ENDED","DETENTION_STARTED","DETENTION_ENDED","UTILIZED","UNUTILIZED","SHIPMENT_EARLY","SHIPMENT_ON_TIME","SHIPMENT_DELAYED","SHIPMENT_ESTIMATE_CHANGED"]},{"type":"array","items":{"description":"Type of the event.\n\nAn event is created every time an associated rule or geofence is triggered by a device ingestion.\nThe event type depends on the data the device sends.\n\nSensors that report numerical data (such as battery, humidity, pressure and temperature sensors),\ngenerate an event when the reported sensor reading of the device goes in or out of range, which is configured in the rule.\nThis produces events of BELOW_RANGE, IN_RANGE and ABOVE_RANGE types.\n\nSensors that report boolean data (such as attach and tamper sensors), generate events when the device\ntransitions from one state to another, either from `false` to `true` or vice versa.\nThis produces events of FALSE_TO_TRUE and TRUE_TO_FALSE types.\nThe same event types are also generated by the online rule when the device state changes from `offline`\n(when the device has stopped ingesting data) to `online` (when the device data ingestion has resumed)\nor vice versa.\n\nThe acceleration sensor generates events whenever the reported sensor reading\ncrosses the acceleration threshold (for example, when the device was dropped).\nThis produces events of the type EVENT.\nSuch events are stateless.\n\nEvents of INSIDE_GEOFENCE and OUTSIDE_GEOFENCE types are generated when the device enters or exits\na geofence associated with the device.\n\nEvents of DWELLING_STARTED type are generated when the device has\nstayed inside an associated geofence for longer than the threshold duration.\nDWELLING_ENDED type events are generated when dwelling of the device has ended.\n\nEvents of DETENTION_STARTED type are generated when the device has been\nstationary for longer than the threshold duration, regardless whether the device is inside\nor outside of any geofence.\nDETENTION_ENDED type events will be generated when the device starts moving again.\n\nEvents of UNUTILIZED type are generated when the device has been stationary for longer than the\nthreshold duration.\nUTILIZED type events are generated when the device starts moving again after having been stationary.\n\nEvents of OVERSTOCK, NORMAL_VOLUME and UNDERSTOCK types are generated when the number of assets\ninside a geofence crosses the `minVolume` and `maxVolume` thresholds of an associated stock rule.\n\nEvent of SHIPMENT_ESTIMATE_CHANGED is generated when the estimated departure (ETD) or arrival (ETA) times\ndeviate from the original estimates more than the defined threshold.\n\nEvents of SHIPMENT_EARLY, SHIPMENT_ON_TIME and SHIPMENT_DELAYED types are generated when a shipment\nis too early, on time or delayed.\n","type":"string","enum":["BELOW_RANGE","IN_RANGE","ABOVE_RANGE","FALSE_TO_TRUE","TRUE_TO_FALSE","EVENT","INSIDE_GEOFENCE","OUTSIDE_GEOFENCE","OVERSTOCK","NORMAL_VOLUME","UNDERSTOCK","DWELLING_STARTED","DWELLING_ENDED","DETENTION_STARTED","DETENTION_ENDED","UTILIZED","UNUTILIZED","SHIPMENT_EARLY","SHIPMENT_ON_TIME","SHIPMENT_DELAYED","SHIPMENT_ESTIMATE_CHANGED"]}}]}},{"name":"ruleId","in":"query","required":false,"schema":{"oneOf":[{"type":"string","format":"uuid","description":"ID of the rule or geofence. Must be a valid UUIDv4.\n"},{"type":"array","items":{"type":"string","format":"uuid","description":"ID of the rule or geofence. Must be a valid UUIDv4.\n"}}]}},{"name":"initialState","in":"query","required":false,"schema":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":1000},"in":"query","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"responses":{"200":{"description":"Successful\n\nThe events were successfully retrieved.\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":1000,"default":1000,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"oneOf":[{"title":"Boolean event","description":"Events generated by online rule or by sensors that report boolean data (attach, tamper).\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source rule type.\n","type":"string","enum":["attach","tamper","online"]},"eventType":{"type":"string","enum":["FALSE_TO_TRUE","TRUE_TO_FALSE"]}},"required":["eventSource","eventType"]}]},{"title":"Range event","description":"Events generated by sensor that report numerical data (battery, humidity,\npressure and temperature).\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source rule type.\n","type":"string","enum":["battery","humidity","pressure","temperature"]},"eventType":{"type":"string","enum":["BELOW_RANGE","IN_RANGE","ABOVE_RANGE"]}},"required":["eventSource","eventType"]}]},{"title":"Generic event","description":"Events generated by sensor that report numerical data but only when a specific\nevent occurs (eg. the device was dropped)\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source: acceleration rule\n","type":"string","enum":["acceleration"]},"eventType":{"type":"string","enum":["EVENT"]}},"required":["eventSource","eventType"]}]},{"title":"Geofence event","description":"Events generated by device crossing the geofence border.\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source: geofence rule\n","type":"string","enum":["geofence"]},"eventType":{"type":"string","enum":["INSIDE_GEOFENCE","OUTSIDE_GEOFENCE"]},"version":{"description":"Geofence version","type":"integer"}},"required":["eventSource","eventType"]}]},{"title":"Stock event","description":"Events generated by the number of assets inside a geofence over a maximum stock volume,\nor between a minimum stock volume and a maximum stock volume, or under a minimum stock volume.\n","allOf":[{"properties":{"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"eventSource":{"description":"The event source: stock rule\n","type":"string","enum":["stock"]},"eventType":{"description":"The \"OVERSTOCK\" type - Events are triggered when the number of assets\nis over a maximum stock volume.\n\nThe \"UNDERSTOCK\" type - Events are triggered when the number of assets\nis under a minimum stock volume.\n\nThe \"NORMAL_VOLUME\" type - Events are triggered when the number of assets\nis between the minimum stock volume and the maximum stock volume.\n","type":"string","enum":["OVERSTOCK","NORMAL_VOLUME","UNDERSTOCK"]}},"required":["timestamp","ruleId","eventSource","eventType"]},{"type":"object","properties":{"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["initialState"]}]},{"title":"Dwelling event","description":"Events generated by a device that has dwelled inside a geofence for longer than specified\nthreshold duration\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"type":"string","description":"The event source: dwelling rule\n","enum":["dwelling"]},"eventType":{"type":"string","enum":["DWELLING_STARTED","DWELLING_ENDED"]},"geofenceId":{"description":"An ID of a geofence that triggered the dwelling event\n","type":"string","format":"uuid"}},"required":["eventSource","eventType","geofenceId"]}]},{"title":"Detention event","description":"Events generated when a device has been stationary for longer than the specified\nthreshold duration.\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source: detention rule\n","type":"string","enum":["detention"]},"eventType":{"type":"string","enum":["DETENTION_STARTED","DETENTION_ENDED"]}},"required":["eventSource","eventType"]}]},{"title":"Utilization event","description":"The UTILIZED event is generated when a device starts moving,\nand the UNUTILIZED event is generated when the device has been stationary\nfor longer than the specified threshold duration.\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source: utilization rule\n","type":"string","enum":["utilization"]},"eventType":{"type":"string","enum":["UTILIZED","UNUTILIZED"]}},"required":["eventSource","eventType"]}]},{"title":"Shipment ETA change event","description":"Events generated by a shipment whose calculated ETD or ETA has changed\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"type":"object","properties":{"eventSource":{"type":"string","enum":["shipmentEtaChange"]},"eventType":{"type":"string","enum":["SHIPMENT_ESTIMATE_CHANGED"]},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"segmentId":{"description":"An ID of the segment where the ETD/ETA change was detected\n","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"segmentStatus":{"description":"Status of the segment.","type":"string","enum":["pending","ongoing","completed","cancelled"]},"segmentOrigin":{"description":"Segment origin location","type":"object","properties":{"id":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},"required":["id"]},"segmentDestination":{"description":"Segment destination location","type":"object","properties":{"id":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},"required":["id"]},"shipmentEtd":{"description":"Estimated time of departure of the shipment","type":"string","format":"date-time"},"shipmentEta":{"description":"Estimated time of arrival of the shipment","type":"string","format":"date-time"},"etaType":{"description":"Type of the ETA value: static ETA values are calculated for pending\nstate shipments, dynamic ETA values for ongoing state shipments.\n","type":"string","enum":["dynamic","static"]},"etaModelVersion":{"description":"ML model version used for ETA calculation. Present only when ML model is used.\n","type":"string","maxLength":50,"example":"2.3.1"},"segmentEtaChanges":{"type":"array","items":{"type":"object","properties":{"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"segmentOrigin":{"description":"Segment origin location","type":"object","properties":{"id":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},"required":["id"]},"segmentDestination":{"description":"Segment destination location","type":"object","properties":{"id":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},"required":["id"]},"segmentEtd":{"description":"Estimated time of departure of the segment","type":"string","format":"date-time"},"segmentEta":{"description":"Estimated time of arrival of the segment","type":"string","format":"date-time"},"etaModelVersion":{"description":"ML model version used for ETA calculation. Present only when ML model is used.\n","type":"string","maxLength":50,"example":"2.3.1"}},"required":["segmentId"]}}},"required":["eventSource","eventType","segmentId","segmentStatus"]}]},{"title":"Shipment schedule event","description":"Events generated by a shipment that is ahead or delayed from its preplanned schedule\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"type":"object","properties":{"eventSource":{"type":"string","enum":["shipmentSchedule"]},"eventType":{"type":"string","enum":["SHIPMENT_EARLY","SHIPMENT_ON_TIME","SHIPMENT_DELAYED"]},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"segmentStatus":{"description":"Status of the segment.","type":"string","enum":["pending","ongoing","completed","cancelled"]}},"required":["eventSource","eventType","segmentId","segmentStatus"]}]}]}}}}]},"example":{"count":1,"pageToken":"2lkjfdaoiekllldko=sdflkjdfasdi34","data":[{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6","eventSource":"attach","timestamp":1499258057036,"eventType":"TRUE_TO_FALSE","ruleId":"e2f651ee-f196-4fa3-bf88-894dc131dea3","initialState":false}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/events/v3/statuses":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"get":{"summary":"Gets the event statuses","description":"Gets all events statuses for all devices and shipments of the project.\nAn event status of a device is the most recent event of any rule or geofence the device\nis associated with.\nThe same applies for shipments.\n\nThe response contains a list of event status objects and\neach object has the following properties:\n* `trackingId` or `shipmentId`: a device ID or a shipment ID\n* `ruleId`: an associated rule or geofence ID\n* `eventSource`: the rule type\n* `eventType`: an event type of the latest event of the rule (same as the \"event state\")\n* `timestamp`: a time since when the device has been in this event state\n* `initialState`: initial state status for the event\n\nThe array is sorted by the following fields in the\nfollowing order: `trackingId`, `eventSource`, `timestamp`, `ruleId`, `geofenceId`.\n\nA time range can be defined with `before` and `after` timestamps. The response will contain\nevent statuses that were recorded within the range.\n\nIf the request is supplied with `eventSource` query parameter, the response results will be limited\nto the specified rule types only.\n\nIf the request is supplied with `ruleId` query parameter, the response results will be limited\nto the specified rule IDs only.\n\nIf the request is supplied with `trackingId` query parameter, the response results will be limited\nto the specified devices only. Also `shipmentId` can be used as a `trackingId`.\n\nIf the request is supplied with `eventType` query parameter, the response results will be limited\nto the specified type only.\n\nIf the request is supplied with `geofenceId` query parameter, it will only affect dwelling\nevent statuses filtering, limiting the results to the specified geofence only.\nOther event types are not affected by this setting.\nNote that for the event statuses of geofence type, the `ruleId` is the `geofenceId`.\n\nIf the request is supplied with `shipments` query parameter, the response results will be limited\neither to shipments (`shipments`=`true`) or devices (`shipments`=`false`) only.\nOtherwise, if `shipments` query parameter is not specified, response results will include both devices and shipments.\n\nIf the request is supplied with `initialState` query parameter, the response will contain\nevents having the specified initial state.\n\nAll the aforementioned query parameters can be combined together.\n","tags":["Events"],"security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"eventSource","in":"query","required":false,"schema":{"oneOf":[{"description":"The event source rule type.\n","type":"string","enum":["acceleration","attach","battery","detention","dwelling","geofence","humidity","online","pressure","shipmentEtaChange","shipmentSchedule","stock","tamper","temperature","utilization"]},{"type":"array","items":{"description":"The event source rule type.\n","type":"string","enum":["acceleration","attach","battery","detention","dwelling","geofence","humidity","online","pressure","shipmentEtaChange","shipmentSchedule","stock","tamper","temperature","utilization"]}}]}},{"name":"eventType","in":"query","required":false,"schema":{"oneOf":[{"description":"Type of the event.\n\nAn event is created every time an associated rule or geofence is triggered by a device ingestion.\nThe event type depends on the data the device sends.\n\nSensors that report numerical data (such as battery, humidity, pressure and temperature sensors),\ngenerate an event when the reported sensor reading of the device goes in or out of range, which is configured in the rule.\nThis produces events of BELOW_RANGE, IN_RANGE and ABOVE_RANGE types.\n\nSensors that report boolean data (such as attach and tamper sensors), generate events when the device\ntransitions from one state to another, either from `false` to `true` or vice versa.\nThis produces events of FALSE_TO_TRUE and TRUE_TO_FALSE types.\nThe same event types are also generated by the online rule when the device state changes from `offline`\n(when the device has stopped ingesting data) to `online` (when the device data ingestion has resumed)\nor vice versa.\n\nThe acceleration sensor generates events whenever the reported sensor reading\ncrosses the acceleration threshold (for example, when the device was dropped).\nThis produces events of the type EVENT.\nSuch events are stateless.\n\nEvents of INSIDE_GEOFENCE and OUTSIDE_GEOFENCE types are generated when the device enters or exits\na geofence associated with the device.\n\nEvents of DWELLING_STARTED type are generated when the device has\nstayed inside an associated geofence for longer than the threshold duration.\nDWELLING_ENDED type events are generated when dwelling of the device has ended.\n\nEvents of DETENTION_STARTED type are generated when the device has been\nstationary for longer than the threshold duration, regardless whether the device is inside\nor outside of any geofence.\nDETENTION_ENDED type events will be generated when the device starts moving again.\n\nEvents of UNUTILIZED type are generated when the device has been stationary for longer than the\nthreshold duration.\nUTILIZED type events are generated when the device starts moving again after having been stationary.\n\nEvents of OVERSTOCK, NORMAL_VOLUME and UNDERSTOCK types are generated when the number of assets\ninside a geofence crosses the `minVolume` and `maxVolume` thresholds of an associated stock rule.\n\nEvent of SHIPMENT_ESTIMATE_CHANGED is generated when the estimated departure (ETD) or arrival (ETA) times\ndeviate from the original estimates more than the defined threshold.\n\nEvents of SHIPMENT_EARLY, SHIPMENT_ON_TIME and SHIPMENT_DELAYED types are generated when a shipment\nis too early, on time or delayed.\n","type":"string","enum":["BELOW_RANGE","IN_RANGE","ABOVE_RANGE","FALSE_TO_TRUE","TRUE_TO_FALSE","EVENT","INSIDE_GEOFENCE","OUTSIDE_GEOFENCE","OVERSTOCK","NORMAL_VOLUME","UNDERSTOCK","DWELLING_STARTED","DWELLING_ENDED","DETENTION_STARTED","DETENTION_ENDED","UTILIZED","UNUTILIZED","SHIPMENT_EARLY","SHIPMENT_ON_TIME","SHIPMENT_DELAYED","SHIPMENT_ESTIMATE_CHANGED"]},{"type":"array","items":{"description":"Type of the event.\n\nAn event is created every time an associated rule or geofence is triggered by a device ingestion.\nThe event type depends on the data the device sends.\n\nSensors that report numerical data (such as battery, humidity, pressure and temperature sensors),\ngenerate an event when the reported sensor reading of the device goes in or out of range, which is configured in the rule.\nThis produces events of BELOW_RANGE, IN_RANGE and ABOVE_RANGE types.\n\nSensors that report boolean data (such as attach and tamper sensors), generate events when the device\ntransitions from one state to another, either from `false` to `true` or vice versa.\nThis produces events of FALSE_TO_TRUE and TRUE_TO_FALSE types.\nThe same event types are also generated by the online rule when the device state changes from `offline`\n(when the device has stopped ingesting data) to `online` (when the device data ingestion has resumed)\nor vice versa.\n\nThe acceleration sensor generates events whenever the reported sensor reading\ncrosses the acceleration threshold (for example, when the device was dropped).\nThis produces events of the type EVENT.\nSuch events are stateless.\n\nEvents of INSIDE_GEOFENCE and OUTSIDE_GEOFENCE types are generated when the device enters or exits\na geofence associated with the device.\n\nEvents of DWELLING_STARTED type are generated when the device has\nstayed inside an associated geofence for longer than the threshold duration.\nDWELLING_ENDED type events are generated when dwelling of the device has ended.\n\nEvents of DETENTION_STARTED type are generated when the device has been\nstationary for longer than the threshold duration, regardless whether the device is inside\nor outside of any geofence.\nDETENTION_ENDED type events will be generated when the device starts moving again.\n\nEvents of UNUTILIZED type are generated when the device has been stationary for longer than the\nthreshold duration.\nUTILIZED type events are generated when the device starts moving again after having been stationary.\n\nEvents of OVERSTOCK, NORMAL_VOLUME and UNDERSTOCK types are generated when the number of assets\ninside a geofence crosses the `minVolume` and `maxVolume` thresholds of an associated stock rule.\n\nEvent of SHIPMENT_ESTIMATE_CHANGED is generated when the estimated departure (ETD) or arrival (ETA) times\ndeviate from the original estimates more than the defined threshold.\n\nEvents of SHIPMENT_EARLY, SHIPMENT_ON_TIME and SHIPMENT_DELAYED types are generated when a shipment\nis too early, on time or delayed.\n","type":"string","enum":["BELOW_RANGE","IN_RANGE","ABOVE_RANGE","FALSE_TO_TRUE","TRUE_TO_FALSE","EVENT","INSIDE_GEOFENCE","OUTSIDE_GEOFENCE","OVERSTOCK","NORMAL_VOLUME","UNDERSTOCK","DWELLING_STARTED","DWELLING_ENDED","DETENTION_STARTED","DETENTION_ENDED","UTILIZED","UNUTILIZED","SHIPMENT_EARLY","SHIPMENT_ON_TIME","SHIPMENT_DELAYED","SHIPMENT_ESTIMATE_CHANGED"]}}]}},{"name":"trackingId","in":"query","required":false,"schema":{"oneOf":[{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},{"type":"array","items":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."}}]}},{"name":"ruleId","in":"query","required":false,"schema":{"oneOf":[{"type":"string","format":"uuid","description":"ID of the rule or geofence. Must be a valid UUIDv4.\n"},{"type":"array","items":{"type":"string","format":"uuid","description":"ID of the rule or geofence. Must be a valid UUIDv4.\n"}}]}},{"name":"geofenceId","in":"query","required":false,"schema":{"oneOf":[{"type":"string","format":"uuid","description":"ID of the geofence. Must be a valid UUIDv4.\nThis filter can be used to filter results related to dwelling event source.\n"},{"type":"array","items":{"type":"string","format":"uuid","description":"ID of the geofence. Must be a valid UUIDv4.\nThis filter can be used to filter results related to dwelling event source.\n"}}]}},{"name":"initialState","in":"query","required":false,"schema":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},{"name":"shipments","in":"query","required":false,"schema":{"type":"boolean","description":"If `true`, the results will be limited to shipment event statuses only.\nIf `false`, the results will be limited to device event statuses only.\nIf not specified, the results will include both device and shipments event statuses.\n"}},{"name":"before","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\nThe accepted range is from 1 to the current time.\n","in":"query","required":false,"schema":{"type":"number","minimum":1}},{"name":"after","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\nThe accepted range is from 0 to the current time.\n","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":1000},"in":"query","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"responses":{"200":{"description":"Successful\n\nThe events were successfully retrieved.\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":1000,"default":1000,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"oneOf":[{"title":"Boolean event","description":"Events generated by online rule or by sensors that report boolean data (attach, tamper).\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source rule type.\n","type":"string","enum":["attach","tamper","online"]},"eventType":{"type":"string","enum":["FALSE_TO_TRUE","TRUE_TO_FALSE"]}},"required":["eventSource","eventType"]}]},{"title":"Range event","description":"Events generated by sensor that report numerical data (battery, humidity,\npressure and temperature).\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source rule type.\n","type":"string","enum":["battery","humidity","pressure","temperature"]},"eventType":{"type":"string","enum":["BELOW_RANGE","IN_RANGE","ABOVE_RANGE"]}},"required":["eventSource","eventType"]}]},{"title":"Generic event","description":"Events generated by sensor that report numerical data but only when a specific\nevent occurs (eg. the device was dropped)\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source: acceleration rule\n","type":"string","enum":["acceleration"]},"eventType":{"type":"string","enum":["EVENT"]}},"required":["eventSource","eventType"]}]},{"title":"Geofence event","description":"Events generated by device crossing the geofence border.\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source: geofence rule\n","type":"string","enum":["geofence"]},"eventType":{"type":"string","enum":["INSIDE_GEOFENCE","OUTSIDE_GEOFENCE"]},"version":{"description":"Geofence version","type":"integer"}},"required":["eventSource","eventType"]}]},{"title":"Stock event","description":"Events generated by the number of assets inside a geofence over a maximum stock volume,\nor between a minimum stock volume and a maximum stock volume, or under a minimum stock volume.\n","allOf":[{"properties":{"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"eventSource":{"description":"The event source: stock rule\n","type":"string","enum":["stock"]},"eventType":{"description":"The \"OVERSTOCK\" type - Events are triggered when the number of assets\nis over a maximum stock volume.\n\nThe \"UNDERSTOCK\" type - Events are triggered when the number of assets\nis under a minimum stock volume.\n\nThe \"NORMAL_VOLUME\" type - Events are triggered when the number of assets\nis between the minimum stock volume and the maximum stock volume.\n","type":"string","enum":["OVERSTOCK","NORMAL_VOLUME","UNDERSTOCK"]}},"required":["timestamp","ruleId","eventSource","eventType"]},{"type":"object","properties":{"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["initialState"]}]},{"title":"Dwelling event","description":"Events generated by a device that has dwelled inside a geofence for longer than specified\nthreshold duration\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"type":"string","description":"The event source: dwelling rule\n","enum":["dwelling"]},"eventType":{"type":"string","enum":["DWELLING_STARTED","DWELLING_ENDED"]},"geofenceId":{"description":"An ID of a geofence that triggered the dwelling event\n","type":"string","format":"uuid"}},"required":["eventSource","eventType","geofenceId"]}]},{"title":"Detention event","description":"Events generated when a device has been stationary for longer than the specified\nthreshold duration.\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source: detention rule\n","type":"string","enum":["detention"]},"eventType":{"type":"string","enum":["DETENTION_STARTED","DETENTION_ENDED"]}},"required":["eventSource","eventType"]}]},{"title":"Utilization event","description":"The UTILIZED event is generated when a device starts moving,\nand the UNUTILIZED event is generated when the device has been stationary\nfor longer than the specified threshold duration.\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"properties":{"eventSource":{"description":"The event source: utilization rule\n","type":"string","enum":["utilization"]},"eventType":{"type":"string","enum":["UTILIZED","UNUTILIZED"]}},"required":["eventSource","eventType"]}]},{"title":"Shipment ETA change event","description":"Events generated by a shipment whose calculated ETD or ETA has changed\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"type":"object","properties":{"eventSource":{"type":"string","enum":["shipmentEtaChange"]},"eventType":{"type":"string","enum":["SHIPMENT_ESTIMATE_CHANGED"]},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"segmentId":{"description":"An ID of the segment where the ETD/ETA change was detected\n","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"segmentStatus":{"description":"Status of the segment.","type":"string","enum":["pending","ongoing","completed","cancelled"]},"segmentOrigin":{"description":"Segment origin location","type":"object","properties":{"id":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},"required":["id"]},"segmentDestination":{"description":"Segment destination location","type":"object","properties":{"id":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},"required":["id"]},"shipmentEtd":{"description":"Estimated time of departure of the shipment","type":"string","format":"date-time"},"shipmentEta":{"description":"Estimated time of arrival of the shipment","type":"string","format":"date-time"},"etaType":{"description":"Type of the ETA value: static ETA values are calculated for pending\nstate shipments, dynamic ETA values for ongoing state shipments.\n","type":"string","enum":["dynamic","static"]},"etaModelVersion":{"description":"ML model version used for ETA calculation. Present only when ML model is used.\n","type":"string","maxLength":50,"example":"2.3.1"},"segmentEtaChanges":{"type":"array","items":{"type":"object","properties":{"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"segmentOrigin":{"description":"Segment origin location","type":"object","properties":{"id":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},"required":["id"]},"segmentDestination":{"description":"Segment destination location","type":"object","properties":{"id":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},"required":["id"]},"segmentEtd":{"description":"Estimated time of departure of the segment","type":"string","format":"date-time"},"segmentEta":{"description":"Estimated time of arrival of the segment","type":"string","format":"date-time"},"etaModelVersion":{"description":"ML model version used for ETA calculation. Present only when ML model is used.\n","type":"string","maxLength":50,"example":"2.3.1"}},"required":["segmentId"]}}},"required":["eventSource","eventType","segmentId","segmentStatus"]}]},{"title":"Shipment schedule event","description":"Events generated by a shipment that is ahead or delayed from its preplanned schedule\n","allOf":[{"properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"initialState":{"description":"Events with the `initialState` property set as `true` are generated when the rule is\nevaluated for the first time. It indicates the fact that this is the initial evaluation\nstate, which would serve as a starting point for the subsequent rule evaluations.\nThe rest of the rule events would represent a transition of a device or a shipment or\na geofence from one state to another and their `initialState` property will be set to `false`.\n","type":"boolean"}},"required":["trackingId","timestamp","ruleId","initialState"]},{"type":"object","properties":{"eventSource":{"type":"string","enum":["shipmentSchedule"]},"eventType":{"type":"string","enum":["SHIPMENT_EARLY","SHIPMENT_ON_TIME","SHIPMENT_DELAYED"]},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"segmentStatus":{"description":"Status of the segment.","type":"string","enum":["pending","ongoing","completed","cancelled"]}},"required":["eventSource","eventType","segmentId","segmentStatus"]}]}]}}}}]},"example":{"count":1,"pageToken":"2lkjfdaoiekllldko=sdflkjdfasdi34","data":[{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6","eventSource":"attach","timestamp":1499258057036,"eventType":"TRUE_TO_FALSE","ruleId":"e2f651ee-f196-4fa3-bf88-894dc131dea3","initialState":false}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/events/v3/statuses/deviceCounts":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"get":{"summary":"Gets the number of devices and shipments in each event state","description":"This API call counts the number of devices and shipments that are currently in the different\nevent states per rule or per event source (that is per rule type).\n\nAn event state of a device is the event type of the most recent device event.\nIt indicates a state the device is currently in, in relation to a rule the device is associated with.\n\nFor example, the event state can be either `INSIDE_GEOFENCE` or `OUTSIDE_GEOFENCE` in case the event source is `geofence`;\nor `BELOW_RANGE`, `IN_RANGE` or `ABOVE_RANGE` in case the event source is `battery` rule.\n\nA device can be in several different event states at the same time when it has more than\none rule associated with it.\nFor example, a device can be at the same time in `INSIDE_GEOFENCE` and `ABOVE_RANGE` event states.\n\nThe same applies for shipments.\n\nThe `groupBy` query parameter defines how the results are grouped.\n\nThe default value for the `groupBy` parameter is `ruleId`.\nThe response contains a list of objects, one per each rule,\nthat are associated to at least one device or shipment of the project.\nEach object has the following properties:\n* `ruleId`: a rule ID\n* `eventSource`: the rule type\n* every distinct event state (applicable for the rule type) and the number of devices in this state\n* `total`: the total number of devices associated to the rule\n\nWhen the `groupBy` parameter value is `eventSource`, the response contains a list of objects, one per\nevent source (that is per each rule type),\nthat are associated to at least one device or shipment of the project.\nEach object has the following properties:\n* `eventSource`: a rule type\n* every distinct event state (applicable for the rule type) and the number of devices in this state.\n One device is counted only once per `eventType` state, but in case a single device is associated to multiple\n rules of the same type, it will be counted separately for each event state.\n* `total`: the total number of devices associated to the rule type. A single device is counted only once.\n\nFor example, a device A is associated to 2 geofences and is inside one and outside the other.\nA device B is associated to 3 geofences and is outside all of them. With the request\nquery parameter set as `groupBy`=`eventSource`, the response body will contain the following result item:\n```\n{\n \"eventSource\": \"geofence\",\n \"INSIDE_GEOFENCE\": 1,\n \"OUTSIDE_GEOFENCE\": 2,\n \"total\": 2\n}.\n```\n\nIf the request is supplied with `eventSource` query parameter, the response results will be limited\nto the specified rule types only.\n\nIf the request is supplied with `ruleId` query parameter, the response results will be limited\nto the specified rule IDs only.\n\nIf the request is supplied with `trackingId` query parameter, the response results will be limited\nto the specified devices only. Also `shipmentId` can be used as a `trackingId`.\n\nIf the request is supplied with `geofenceId` query parameter, it will only affect dwelling\nevent statuses filtering, limiting the results to the specified geofence only.\nOther event types are not affected by this setting.\nNote that for the event statuses of geofence type, the `ruleId` is the `geofenceId`.\n\nIf the request is supplied with `shipments` query parameter, the response results will be limited\neither to shipments (`shipments`=`true`) or devices (`shipments`=`false`) only.\nOtherwise, if `shipments` query parameter is not specified, response results will include both devices and shipments.\n\nAll the aforementioned query parameters can be combined together.\n","tags":["Events"],"security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"groupBy","in":"query","schema":{"description":"Define whether the number of devices and shipments in each event state is calculated per rule ID or per rule type.\n","type":"string","enum":["ruleId","eventSource"],"default":"ruleId"}},{"name":"eventSource","in":"query","required":false,"schema":{"oneOf":[{"description":"Source of the event.\n","type":"string","enum":["attach","battery","geofence","humidity","pressure","tamper","temperature","acceleration","dwelling","detention","utilization","online","shipmentEtaChange","shipmentSchedule"]},{"type":"array","items":{"description":"Source of the event.\n","type":"string","enum":["attach","battery","geofence","humidity","pressure","tamper","temperature","acceleration","dwelling","detention","utilization","online","shipmentEtaChange","shipmentSchedule"]}}]}},{"name":"trackingId","in":"query","required":false,"schema":{"oneOf":[{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},{"type":"array","items":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."}}]}},{"name":"ruleId","in":"query","required":false,"schema":{"oneOf":[{"type":"string","format":"uuid","description":"ID of the rule or geofence. Must be a valid UUIDv4.\n"},{"type":"array","items":{"type":"string","format":"uuid","description":"ID of the rule or geofence. Must be a valid UUIDv4.\n"}}]}},{"name":"geofenceId","in":"query","required":false,"schema":{"oneOf":[{"type":"string","format":"uuid","description":"ID of the geofence. Must be a valid UUIDv4.\nThis filter can be used to filter results related to dwelling event source.\n"},{"type":"array","items":{"type":"string","format":"uuid","description":"ID of the geofence. Must be a valid UUIDv4.\nThis filter can be used to filter results related to dwelling event source.\n"}}]}},{"name":"shipments","in":"query","required":false,"schema":{"type":"boolean","description":"If `true`, the results will be limited to shipment event statuses only.\nIf `false`, the results will be limited to device event statuses only.\nIf not specified, the results will include both device and shipments event statuses.\n"}},{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":1000},"in":"query","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"responses":{"200":{"description":"Successful\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":1000,"default":1000,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"oneOf":[{"title":"attach, tamper, online","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["attach","tamper","online"]},"TRUE_TO_FALSE":{"type":"number","description":"Number of devices currently in this event state.\n"},"FALSE_TO_TRUE":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","TRUE_TO_FALSE","FALSE_TO_TRUE"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"battery, humidity, pressure, temperature","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["battery","humidity","pressure","temperature"]},"BELOW_RANGE":{"type":"number","description":"Number of devices currently in this event state.\n"},"IN_RANGE":{"type":"number","description":"Number of devices currently in this event state.\n"},"ABOVE_RANGE":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","BELOW_RANGE","IN_RANGE","ABOVE_RANGE"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"acceleration","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["acceleration"]},"EVENT":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","EVENT"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"geofence","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["geofence"]},"INSIDE_GEOFENCE":{"type":"number","description":"Number of devices currently in this event state.\n"},"OUTSIDE_GEOFENCE":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","INSIDE_GEOFENCE","OUTSIDE_GEOFENCE"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"dwelling","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["dwelling"]},"DWELLING_STARTED":{"type":"number","description":"Number of devices currently in this event state.\n"},"DWELLING_ENDED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","DWELLING_STARTED","DWELLING_ENDED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"detention","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["detention"]},"DETENTION_STARTED":{"type":"number","description":"Number of devices currently in this event state.\n"},"DETENTION_ENDED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","DETENTION_STARTED","DETENTION_ENDED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"utilization","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["utilization"]},"UTILIZED":{"type":"number","description":"Number of devices currently in this event state.\n"},"UNUTILIZED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","UTILIZED","UNUTILIZED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"shipmentSchedule","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["shipmentSchedule"]},"SHIPMENT_EARLY":{"type":"number","description":"Number of devices currently in this event state.\n"},"SHIPMENT_ON_TIME":{"type":"number","description":"Number of devices currently in this event state.\n"},"SHIPMENT_DELAYED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","SHIPMENT_EARLY","SHIPMENT_ON_TIME","SHIPMENT_DELAYED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"shipmentEtaChange","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["shipmentEtaChange"]},"SHIPMENT_ESTIMATE_CHANGED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","SHIPMENT_ESTIMATE_CHANGED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]}]}}}}]},"example":{"count":3,"pageToken":"sakuh8342jhe83290US87sdjhAS8we","data":[{"ruleId":"e2f651ee-f196-4fa3-bf88-894dc131dea3","eventSource":"attach","FALSE_TO_TRUE":4,"TRUE_TO_FALSE":1,"total":5},{"ruleId":"4e74ad36-7dd3-459a-ace4-f8a7f1c6085d","eventSource":"battery","BELOW_RANGE":1,"IN_RANGE":4,"ABOVE_RANGE":0,"total":5},{"ruleId":"018eedc7-1b16-4233-80b1-2b13a307b4aa","eventSource":"dwelling","DWELLING_STARTED":2,"DWELLING_ENDED":5,"total":5}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/geofences/v2/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Geofences"]}},"/geofences/v2/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Geofences"]}},"/geofences/v2":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"post":{"summary":"Creates a geofence","description":"One can specify a geofence as a circle, as a polygon or as POI (Point of Interest). One can also\nassign a name and a description to each geofence to help identify them.\n\nCircle\n---\n\nSpecify coordinates of the center point of the circle and a radius in\nmeters.\n\n```json\n {\n \"name\": \"Home\",\n \"type\": \"circle\",\n \"definition\": {\n \"center\": {\n \"lat\": 52.5308398,\n \"lng\": 13.38490035\n },\n \"radius\": 100\n },\n \"description\": \"Small area around my house.\"\n }\n```\n\nPolygon\n---\n\nSpecify an array of points. A minimum of three points is required.\n\n*NOTE: If the array of points does not describe a closed polygon, the polygon is\nautomatically closed between the last and first points.*\n\n```json\n {\n \"name\": \"Work\",\n \"type\": \"polygon\",\n \"definition\": {\n \"points\": [{\n \"lat\": 52.5308398,\n \"lng\": 13.38490035\n }, {\n \"lat\": 52.530443,\n \"lng\": 13.38482003\n }, {\n \"lat\": 52.5308298,\n \"lng\": 13.38492235\n }]\n },\n \"description\": \"The area around work.\"\n }\n```\n\nIndoor geofence\n---\n\nCircular and polygonal geofences can be both outdoors and indoors.\nTo create a `circular` `indoor` geofence, add the `floor` property to the request body.\n\n```json\n {\n \"name\": \"Office indoor\",\n \"type\": \"circle\",\n \"definition\": {\n \"center\": {\n \"lat\": 52.5308398,\n \"lng\": 13.38490035\n },\n \"radius\": 20,\n \"floor\": {\n \"level\": 2,\n \"id\": \"DM_1234\",\n \"name\": \"Office floor 2\"\n }\n },\n \"description\": \"Floor 2 of the office.\"\n }\n\n```\n\nPOI geofence\n---\n\nSpecify location details of a POI geofence for its initial creation.\n\nAfter the POI geofence has been created, it will need to be trained.\nThe POI geofence boundary is defined using radio measurements.\nThe POI geofence is trained using a telemetry\nthat a device has ingested while being at this desired point of interest.\n\nFor a trained POI geofence, an associated device is considered to be inside the\ngeofence when the radio measurements of the device-ingested telemetry and\nthe training data match.\n\n```json\n {\n \"name\": \"POI room in the office\",\n \"type\": \"poi\",\n \"definition\": {\n \"location\": {\n \"room\": ROOM_201,\n \"address\": Invalidenstrasse 116,\n \"country\": Germany,\n \"position\": {\n \"lat\": 52.5308398,\n \"lng\": 13.38490035\n }\n },\n \"floor\": {\n \"level\": 2,\n \"id\": \"DM_1234\",\n \"name\": \"Office floor 2\"\n }\n },\n \"description\": \"A room where goods should be delivered.\"\n }\n```\n\nSuccessful requests have the HTTP status 201 and the response body provides\nthe ID of the created geofence.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"title":"Circle","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["circle"]},"definition":{"type":"object","description":"An object that defines the area of a circular geofence","properties":{"center":{"description":"The coordinates of the center point of the circle.","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"radius":{"type":"number","description":"The radius of the circle in meters.","minimum":0},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}},"required":["center","radius"]},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","definition"]},{"title":"Polygon","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["polygon"]},"definition":{"type":"object","description":"An object that defines the area of a polygonal geofence.","properties":{"points":{"type":"array","description":"An array of points that define the polygon. A minimum of three and a maximum of five hundred points is required.","minItems":3,"maxItems":500,"items":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]}},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}},"required":["points"]},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","definition"]},{"title":"POI","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["poi"]},"definition":{"type":"object","description":"An object that defines the area of a POI geofence.","properties":{"location":{"type":"object","description":"Details of the geofence location","properties":{"room":{"description":"The room ID","type":"string","minLength":1,"maxLength":100},"address":{"description":"Address","type":"string","minLength":1,"maxLength":255},"country":{"description":"Country","type":"string","minLength":1,"maxLength":255},"position":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Coordinates for visualization purposes"}}},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}}},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type"]}]}}}},"tags":["Geofences"],"responses":{"201":{"description":"Created\n\nThe geofence was successfully created.\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"id":{"description":"Geofence ID","type":"string","format":"uuid"}},"required":["id"]},"example":{"id":"0d994f31-ceea-42e4-96a5-4484585c3802"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"413":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Payload Too Large","code":413,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request size exceeds the maximum size limit for payloads.","details":{"hereErrorCode":413306}}}},"description":"Payload Too Large\n\nThe request size exceeds the maximum size limit for payloads.\n"}}},"get":{"summary":"Gets all geofences","description":"Gets all geofences of a project.\nResults can be filtered by using the query parameters.\nIndoor geofences with the `floor` properties\nmay be filtered by `floor[id]`, which specifies the ID of the venue associated with the geofence.\n","security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"in":"query","schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"description":"ID of the venue, which is associated with the geofence"}},"title":"Floor ID"},{"type":"string","enum":["null"],"description":"Null option can be used to query for geofences without a floor property","title":"No `floor` property"}]},"name":"floor","description":"The floor of the indoor geofence","example":{"id":"DM_1234"},"style":"deepObject","explode":true},{"name":"type","description":"Type of a geofence","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["circle","polygon","poi"]}}},{"in":"query","schema":{"type":"array","maxItems":4,"minItems":4,"items":{"type":"number","minimum":-180,"maximum":180,"description":"Latitude and longitude of Northwest and Southeast corners."}},"name":"bbox","description":"Limit search to geofences intersecting the given bounding box.","style":"form"},{"name":"fields","description":"Field names to filter a result object.\n","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false}],"tags":["Geofences"],"responses":{"200":{"description":"Response body contains an array of geofence objects, `count` specifies the number of returned geofences,\nand `pageToken` indicates the next available page in the matching result set.\n\nIf no geofences are found, an object with empty data array is returned.\nResponse content type can be either JSON or protobuf depending on the 'Content-Type' request header.\n","content":{"application/json":{"example":{"data":[{"id":"d0c29690-5d26-4cf1-a37e-b7816e72cb99","geofence":{"definition":{"points":[{"lng":13.38490035,"lat":52.5308398},{"lng":14.38490035,"lat":52.5408398},{"lng":13.39490035,"lat":53.5308398}]},"type":"polygon"}},{"id":"ff92eda0-3114-4640-b7e6-4ba641ae1124","geofence":{"name":"16fbc82c-88d1-4219-bfad-6e5de52688a2","description":"This is a circular geofence","type":"circle","definition":{"center":{"lat":52.5308398,"lng":13.38490035},"radius":100,"floor":{"id":"DM_82228","name":"House 3"}}}}],"pageToken":"027ffffea253d79fc","count":2},"schema":{"type":"object","description":"Response body contains an array of geofence objects. `count` indicates the number of returned geofences, and `pageToken` indicates the next available page in the matching result set. If no geofences are found, an object with empty data array is returned.","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"description":"Single geofence object","type":"object","properties":{"id":{"description":"Geofence ID","type":"string","format":"uuid"},"version":{"description":"Geofence version","type":"integer"},"createdAt":{"description":"Timestamp indicating when the geofence has been created","type":"string","format":"date-time"},"updatedAt":{"description":"Timestamp indicating when the geofence has been updated","type":"string","format":"date-time"},"geofence":{"oneOf":[{"title":"Circle","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["circle"]},"definition":{"type":"object","description":"An object that defines the area of a circular geofence","properties":{"center":{"description":"The coordinates of the center point of the circle.","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"radius":{"type":"number","description":"The radius of the circle in meters.","minimum":0},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}},"required":["center","radius"]},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","definition"]},{"title":"Polygon","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["polygon"]},"definition":{"type":"object","description":"An object that defines the area of a polygonal geofence.","properties":{"points":{"type":"array","description":"An array of points that define the polygon. A minimum of three and a maximum of five hundred points is required.","minItems":3,"maxItems":500,"items":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]}},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}},"required":["points"]},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","definition"]},{"title":"POI","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["poi"]},"definition":{"type":"object","description":"An object that defines the area of a POI geofence.","properties":{"location":{"type":"object","description":"Details of the geofence location","properties":{"room":{"description":"The room ID","type":"string","minLength":1,"maxLength":100},"address":{"description":"Address","type":"string","minLength":1,"maxLength":255},"country":{"description":"Country","type":"string","minLength":1,"maxLength":255},"position":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Coordinates for visualization purposes"}}},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}}},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"trainingStatus":{"type":"object","properties":{"trained":{"description":"True if the POI geofence is trained","type":"boolean"},"metadata":{"type":"object","properties":{"usedWlanApCount":{"description":"The number of WLAN access point used in training","type":"number"},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"timestamp":{"description":"Training data timestamp","type":"integer","minimum":2,"maximum":4102448400000},"coordinate":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Training data position"}},"required":["usedWlanApCount"]}},"required":["trained"]},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","trainingStatus"]}]}},"required":["id","geofence"]}}}}]}},"application/octet-stream":{"example":"34 56 18 93 45 29 54 62 77 28 23 79 22","schema":{"type":"array","items":{},"description":"Response body contains an array of geofence objects, `count` specifies the number of returned geofences,\nand `pageToken` indicates the next available page in the matching result set.\n\nIf no geofences are found, an object with empty data array is returned.\n","example":{"response data as Protobuf binary, format as follows":"message GeofenceMsg {\n message GeofenceCircular {\n //Latitude value\n float lat = 1;\n //Longitude value\n float lng = 2;\n //Center radius value\n uint32 radius = 3;\n //Geofence ID\n string id = 4;\n }\n message GeofencePolygonal {\n //Latitude value array\n repeated float lat = 1;\n //Longitude value array\n repeated float lng = 2;\n //Geofence ID\n string id = 3;\n }\n //Circular geofence array\n repeated GeofenceCircular circulars = 1;\n //Polygonal geofence array\n repeated GeofencePolygonal polygonals = 2;\n //Page token\n string pageToken = 3;\n}\n"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}},"delete":{"summary":"Deletes all geofences","description":"Deletes all geofences of a project.\n\nIf a geofence is associated with a stock rule, the rule will also be deleted.\n\nNote that one needs to supply an HTTP header `x-confirm` with the value `true` to force the deletion.\nIf the header is not provided, the request will fail.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Geofences"],"parameters":[{"schema":{"type":"string","enum":["true"]},"in":"header","name":"x-confirm","required":true,"description":"A safety measure that prevents one from accidentally deleting data.\n\nTo confirm that all entries should be deleted, set the value to `true`.\n"}],"responses":{"204":{"description":"Successful (no content)\n\nAll geofence definitions were successfully deleted.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}}},"/geofences/v2/{geofenceId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"in":"path","schema":{"type":"string","format":"uuid"},"name":"geofenceId","description":"ID of the geofence","required":true}],"get":{"summary":"Gets a single geofence","description":"Gets details of a single geofence identified by the `geofenceId`.\n","security":[{"ClientToken":[]},{"UserToken":[]},{"DeviceToken":[]}],"parameters":[{"name":"fields","description":"Field names to filter a result object.\n","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false}],"tags":["Geofences"],"responses":{"200":{"description":"Response body contains a single geofence object.\nResponse content type can be either JSON or protobuf depending on the 'Content-Type' request header.\n","content":{"application/json":{"example":{"id":"d0c29690-5d26-4cf1-a37e-b7816e72cb99","geofence":{"definition":{"points":[{"lng":13.38490035,"lat":52.5308398},{"lng":14.38490035,"lat":52.5408398},{"lng":13.39490035,"lat":53.5308398}],"floor":{"id":"DM_82228","name":"House 3","level":2}},"type":"polygon"}},"schema":{"description":"Single geofence object","type":"object","properties":{"id":{"description":"Geofence ID","type":"string","format":"uuid"},"version":{"description":"Geofence version","type":"integer"},"createdAt":{"description":"Timestamp indicating when the geofence has been created","type":"string","format":"date-time"},"updatedAt":{"description":"Timestamp indicating when the geofence has been updated","type":"string","format":"date-time"},"geofence":{"oneOf":[{"title":"Circle","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["circle"]},"definition":{"type":"object","description":"An object that defines the area of a circular geofence","properties":{"center":{"description":"The coordinates of the center point of the circle.","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"radius":{"type":"number","description":"The radius of the circle in meters.","minimum":0},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}},"required":["center","radius"]},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","definition"]},{"title":"Polygon","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["polygon"]},"definition":{"type":"object","description":"An object that defines the area of a polygonal geofence.","properties":{"points":{"type":"array","description":"An array of points that define the polygon. A minimum of three and a maximum of five hundred points is required.","minItems":3,"maxItems":500,"items":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]}},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}},"required":["points"]},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","definition"]},{"title":"POI","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["poi"]},"definition":{"type":"object","description":"An object that defines the area of a POI geofence.","properties":{"location":{"type":"object","description":"Details of the geofence location","properties":{"room":{"description":"The room ID","type":"string","minLength":1,"maxLength":100},"address":{"description":"Address","type":"string","minLength":1,"maxLength":255},"country":{"description":"Country","type":"string","minLength":1,"maxLength":255},"position":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Coordinates for visualization purposes"}}},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}}},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"trainingStatus":{"type":"object","properties":{"trained":{"description":"True if the POI geofence is trained","type":"boolean"},"metadata":{"type":"object","properties":{"usedWlanApCount":{"description":"The number of WLAN access point used in training","type":"number"},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"timestamp":{"description":"Training data timestamp","type":"integer","minimum":2,"maximum":4102448400000},"coordinate":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Training data position"}},"required":["usedWlanApCount"]}},"required":["trained"]},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","trainingStatus"]}]}},"required":["id","geofence"]}},"application/octet-stream":{"example":"34 56 18 93 45 29 54 62 77 28 23 79 22","schema":{"type":"array","items":{},"description":"Response body contains a single geofence object.\n","example":{"response data as Protobuf binary, format as follows":"message GeofenceMsg {\n message GeofenceCircular {\n //Latitude value\n float lat = 1;\n //Longitude value\n float lng = 2;\n //Center radius value\n uint32 radius = 3;\n //Geofence ID\n string id = 4;\n }\n message GeofencePolygonal {\n //Latitude value array\n repeated float lat = 1;\n //Longitude value array\n repeated float lng = 2;\n //Geofence ID\n string id = 3;\n }\n //Circular geofence array\n repeated GeofenceCircular circulars = 1;\n //Polygonal geofence array\n repeated GeofencePolygonal polygonals = 2;\n //Page token\n string pageToken = 3;\n}\n"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"The Geofence ID was not found."}}},"description":"Geofence ID not found"}}},"put":{"summary":"Updates a single geofence","description":"Updates the geofence `type`, `name`, `description`, `metadata` or `definition` property.\nThe old geofence will be replaced by the new one, and hence the full set of the\ngeofence properties must be provided in the request body.\n`POI` geofence type cannot be changed to `circle` or `polygon` and vice versa.\n\nIf the update was successful, the response will contain the updated geofence details.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Geofences"],"parameters":[{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"description":"Tracking offers Geofence Refinement service for some customers.\nGeofences which have been refined by Tracking cannot be updated\nwithout 'force=true' query parameter.\n"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"title":"Circle","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["circle"]},"definition":{"type":"object","description":"An object that defines the area of a circular geofence","properties":{"center":{"description":"The coordinates of the center point of the circle.","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"radius":{"type":"number","description":"The radius of the circle in meters.","minimum":0},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}},"required":["center","radius"]},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","definition"]},{"title":"Polygon","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["polygon"]},"definition":{"type":"object","description":"An object that defines the area of a polygonal geofence.","properties":{"points":{"type":"array","description":"An array of points that define the polygon. A minimum of three and a maximum of five hundred points is required.","minItems":3,"maxItems":500,"items":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]}},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}},"required":["points"]},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","definition"]},{"title":"POI","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["poi"]},"definition":{"type":"object","description":"An object that defines the area of a POI geofence.","properties":{"location":{"type":"object","description":"Details of the geofence location","properties":{"room":{"description":"The room ID","type":"string","minLength":1,"maxLength":100},"address":{"description":"Address","type":"string","minLength":1,"maxLength":255},"country":{"description":"Country","type":"string","minLength":1,"maxLength":255},"position":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Coordinates for visualization purposes"}}},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}}},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type"]}]}}}},"responses":{"200":{"description":"Successful\n\nThe geofence definition was updated.\n","content":{"application/json":{"schema":{"description":"Response body contains a single geofence object","type":"object","properties":{"id":{"description":"Geofence ID","type":"string","format":"uuid"},"version":{"description":"Geofence version","type":"integer"},"createdAt":{"description":"Timestamp indicating when the geofence has been created","type":"string","format":"date-time"},"updatedAt":{"description":"Timestamp indicating when the geofence has been updated","type":"string","format":"date-time"},"geofence":{"oneOf":[{"title":"Circle","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["circle"]},"definition":{"type":"object","description":"An object that defines the area of a circular geofence","properties":{"center":{"description":"The coordinates of the center point of the circle.","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"radius":{"type":"number","description":"The radius of the circle in meters.","minimum":0},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}},"required":["center","radius"]},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","definition"]},{"title":"Polygon","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["polygon"]},"definition":{"type":"object","description":"An object that defines the area of a polygonal geofence.","properties":{"points":{"type":"array","description":"An array of points that define the polygon. A minimum of three and a maximum of five hundred points is required.","minItems":3,"maxItems":500,"items":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]}},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}},"required":["points"]},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","definition"]},{"title":"POI","type":"object","properties":{"type":{"type":"string","description":"The geofence type.","enum":["poi"]},"definition":{"type":"object","description":"An object that defines the area of a POI geofence.","properties":{"location":{"type":"object","description":"Details of the geofence location","properties":{"room":{"description":"The room ID","type":"string","minLength":1,"maxLength":100},"address":{"description":"Address","type":"string","minLength":1,"maxLength":255},"country":{"description":"Country","type":"string","minLength":1,"maxLength":255},"position":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Coordinates for visualization purposes"}}},"floor":{"description":"The building associated with the geofence","type":"object","required":["id","name"],"properties":{"level":{"description":"The floor of the geofence in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building ID","type":"string","minLength":1,"maxLength":100},"name":{"description":"The building name","type":"string","minLength":1,"maxLength":255}}}}},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"trainingStatus":{"type":"object","properties":{"trained":{"description":"True if the POI geofence is trained","type":"boolean"},"metadata":{"type":"object","properties":{"usedWlanApCount":{"description":"The number of WLAN access point used in training","type":"number"},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"timestamp":{"description":"Training data timestamp","type":"integer","minimum":2,"maximum":4102448400000},"coordinate":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Training data position"}},"required":["usedWlanApCount"]}},"required":["trained"]},"name":{"type":"string","maxLength":50,"description":"A human-readable name of the geofence."},"description":{"type":"string","maxLength":1000,"description":"A description of the area that the geofence encloses and the purpose of the geofence."}},"required":["type","trainingStatus"]}]}},"required":["id","geofence"]}},"application/octet-stream":{"schema":{"type":"array","items":{},"description":"Response body contains a single geofence object.\n","example":{"response data as Protobuf binary, format as follows":"message GeofenceMsg {\n message GeofenceCircular {\n //Latitude value\n float lat = 1;\n //Longitude value\n float lng = 2;\n //Center radius value\n uint32 radius = 3;\n //Geofence ID\n string id = 4;\n }\n message GeofencePolygonal {\n //Latitude value array\n repeated float lat = 1;\n //Longitude value array\n repeated float lng = 2;\n //Geofence ID\n string id = 3;\n }\n //Circular geofence array\n repeated GeofenceCircular circulars = 1;\n //Polygonal geofence array\n repeated GeofencePolygonal polygonals = 2;\n //Page token\n string pageToken = 3;\n}\n"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"The Geofence ID was not found."}}},"description":"Geofence ID not found"},"413":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Payload Too Large","code":413,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request size exceeds the maximum size limit for payloads.","details":{"hereErrorCode":413306}}}},"description":"Payload Too Large\n\nThe request size exceeds the maximum size limit for payloads.\n"}}},"delete":{"summary":"Deletes a geofence","description":"Deletes a single geofence identified by the `geofenceId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Geofences"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"The Geofence ID was not found."}}},"description":"Geofence ID not found"},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Conflict","code":409,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource already exists.","details":{"hereErrorCode":404306}}}},"description":"Conflict\n\nThe specified resource already exists\n"}}}},"/geofences/v2/{geofenceId}/poiTraining":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"in":"path","schema":{"type":"string","format":"uuid"},"name":"geofenceId","description":"ID of the geofence","required":true}],"post":{"summary":"Trains a POI geofence","description":"Trains the POI geofence `geofenceId` using a device telemetry.\nThe POI geofence boundary is defined using radio measurements.\nThe geofence is trained using a telemetry that the device with `trackingId` has ingested\nduring the specified time range, while being at this point of interest.\nOnly telemetries that have been ingested during the last 24 hours can be used in the training.\n\nOptionally, a WLAN scan be used for the training.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"after":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe value must be within the past 24 hours from the current timestamp\n"},"before":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe value must not be greater than current timestamp\n"}},"required":["id","after","before"],"additionalProperties":false},{"type":"object","properties":{"wlan":{"description":"WLAN access points","type":"array","maxItems":128,"minItems":2,"items":{"description":"WLAN measurement","type":"object","required":["mac","powrx"],"properties":{"mac":{"description":"The MAC address of the WLAN access point. MAC-48 address with colon (:) or hyphen (-) separators, upper or lower case hex digits. Note that if the SSID contains postfix '_nomap', the AP should not be used for positioning. For privacy reasons positioning based on a single WLAN AP is not possible; there has to be at least one other matching wlan or cell.","type":"string","pattern":"^(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})|(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2})$"},"powrx":{"description":"Received signal level (dBm) at the terminal (Optional)","type":"integer","minimum":-128,"maximum":0},"band":{"description":"Frequency range (GHz). Allowed values are 2.4, 3.65, and 5. (Possible future values include 4.9, 5.9, 60, and 900.)","type":"number","enum":[2.4,3.65,5]},"timestamp":{"description":"Time of the wlan measurement (UTC) (Optional)","type":"string","format":"date-time"}},"additionalProperties":false}}},"required":["wlan"],"additionalProperties":false}]}}}},"tags":["Geofences"],"responses":{"200":{"description":"The POI geofence was trained successfully\n","content":{"application/json":{"schema":{"type":"object","properties":{"trainingStatus":{"type":"object","properties":{"trained":{"description":"True if the POI geofence is trained","type":"boolean"},"metadata":{"type":"object","properties":{"usedWlanApCount":{"description":"The number of WLAN access point used in training","type":"number"},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"timestamp":{"description":"Training data timestamp","type":"integer","minimum":2,"maximum":4102448400000},"coordinate":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Training data position"}},"required":["usedWlanApCount"]}},"required":["trained"]}},"required":["trainingStatus"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"422":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unprocessable Entity","code":422,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request was well-formed but was unable to be followed due to semantic errors.","details":{"hereErrorCode":422306}}}},"description":"Unprocessable Entity\n\nThe request was well-formed but was unable to be followed due to semantic errors.\n"}}}},"/geofences/v2/trainingTest":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false}],"post":{"summary":"Checks if a POI geofence training is possible with the given parameters","description":"Checks if a POI geofence training is possible with the given request parameters.\n\nThe request body contains a training data sample in form of either a device tracking ID\nalong with a specific time range for the ingested device telemetry or a WLAN scan.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"after":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe value must be within the past 24 hours from the current timestamp\n"},"before":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe value must not be greater than current timestamp\n"}},"required":["id","after","before"],"additionalProperties":false},{"type":"object","properties":{"wlan":{"description":"WLAN access points","type":"array","maxItems":128,"minItems":2,"items":{"description":"WLAN measurement","type":"object","required":["mac","powrx"],"properties":{"mac":{"description":"The MAC address of the WLAN access point. MAC-48 address with colon (:) or hyphen (-) separators, upper or lower case hex digits. Note that if the SSID contains postfix '_nomap', the AP should not be used for positioning. For privacy reasons positioning based on a single WLAN AP is not possible; there has to be at least one other matching wlan or cell.","type":"string","pattern":"^(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})|(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2})$"},"powrx":{"description":"Received signal level (dBm) at the terminal (Optional)","type":"integer","minimum":-128,"maximum":0},"band":{"description":"Frequency range (GHz). Allowed values are 2.4, 3.65, and 5. (Possible future values include 4.9, 5.9, 60, and 900.)","type":"number","enum":[2.4,3.65,5]},"timestamp":{"description":"Time of the wlan measurement (UTC) (Optional)","type":"string","format":"date-time"}},"additionalProperties":false}}},"required":["wlan"],"additionalProperties":false}]}}}},"tags":["Geofences"],"responses":{"200":{"description":"Returns an object indicating if the training is possible with the given parameters\n","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"reason":{"type":"string"},"metadata":{"type":"object","properties":{"usedWlanApCount":{"description":"The number of WLAN access point used in training","type":"number"},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"timestamp":{"description":"Training data timestamp","type":"integer","minimum":2,"maximum":4102448400000},"coordinate":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Training data position"}},"required":["usedWlanApCount"]}},"required":["success"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"422":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unprocessable Entity","code":422,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request was well-formed but was unable to be followed due to semantic errors.","details":{"hereErrorCode":422306}}}},"description":"Unprocessable Entity\n\nThe request was well-formed but was unable to be followed due to semantic errors.\n"}}}},"/locations/v4/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Locations"]}},"/locations/v4/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Locations"]}},"/locations/v4":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"post":{"summary":"Creates a location","description":"Creates a new location.\nA location consists of latitude/longitude coordinate pair and/or geofenceId.\nA name, description, and address of the location may be provided.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Body for creating a location.","properties":{"name":{"description":"Name of the location.","type":"string","maxLength":50},"description":{"description":"Description of the location.","type":"string","maxLength":1000},"location":{"description":"Location coordinates. If optional `geofenceId` is given, the\ncoordinates from the geofence will be used and location coordinates\nare ignored.\n","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"address":{"description":"Location address.","type":"object","properties":{"street":{"description":"Street address","type":"string","maxLength":100},"city":{"description":"City","type":"string","maxLength":100},"postalCode":{"description":"Postal code","type":"string","maxLength":10},"state":{"description":"State","type":"string","maxLength":100},"country":{"description":"Country","type":"string","maxLength":100}}},"geofenceId":{"description":"Optional geofence ID associated with the location. A geofence with the specified ID must exist.","type":"string","format":"uuid"},"externalLocationId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"enableEta":{"description":"Controls ETA calculation behavior for this location.\n- always: ETA calculation enabled for both origin and destination\n- never: ETA calculation disabled for both origin and destination\n- origin: ETA calculation enabled only when used as segment origin\n- destination: ETA calculation enabled only when used as segment destination\n\nUseful for locations where arrival/departure time is unpredictable.\n","type":"string","enum":["always","never","origin","destination"],"default":"always"}},"additionalProperties":false,"anyOf":[{"required":["location"]},{"required":["geofenceId"]}],"example":{"name":"Rostock Port","description":"Rostock Port Hafenbecken C","location":{"lat":54.155147,"lng":12.12204},"geofenceId":"57713e50-194e-4803-8ca6-1e794e916094"}}}}},"responses":{"201":{"description":"Created.\n\nThe location has been successfully created.\n","content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},"required":["locationId"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"413":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Payload Too Large","code":413,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request size exceeds the maximum size limit for payloads.","details":{"hereErrorCode":413306}}}},"description":"Payload Too Large\n\nThe request size exceeds the maximum size limit for payloads.\n"}},"tags":["Locations"]},"get":{"summary":"Gets all locations","description":"Gets all locations of the project.\n","parameters":[{"name":"limit","description":"The number of items to return per page","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"geofenceId","description":"Filter the results by `geofenceId`","schema":{"description":"Geofence ID","type":"string","format":"uuid"},"in":"query","required":false},{"name":"name","description":"Filter locations by name.\nMatching is case-insensitive if wildcards are used, otherwise case-sensitive.\nThe following wildcards can be used:\n'*' matches any number of any characters,\n'?' matches any single character.\n","schema":{"type":"string"},"in":"query","required":false,"example":"*office*"},{"name":"street","description":"Filter locations by street address.\nMatching is case-insensitive if wildcards are used, otherwise case-sensitive.\nThe following wildcards can be used:\n'*' matches any number of any characters,\n'?' matches any single character.\n","schema":{"type":"string"},"in":"query","required":false,"example":"*street*"},{"name":"city","description":"Filter locations by city.\nMatching is case-insensitive if wildcards are used, otherwise case-sensitive.\nThe following wildcards can be used:\n'*' matches any number of any characters,\n'?' matches any single character.\n","schema":{"type":"string"},"in":"query","required":false,"example":"*city*"},{"name":"postalCode","description":"Filter locations by postal code.\nMatching is case-insensitive if wildcards are used, otherwise case-sensitive.\nThe following wildcards can be used:\n'*' matches any number of any characters,\n'?' matches any single character.\n","schema":{"type":"string"},"in":"query","required":false,"example":"*100*"},{"name":"state","description":"Filter locations by state.\nMatching is case-insensitive if wildcards are used, otherwise case-sensitive.\nThe following wildcards can be used:\n'*' matches any number of any characters,\n'?' matches any single character.\n","schema":{"type":"string"},"in":"query","required":false,"example":"New*"},{"name":"country","description":"Filter locations by country.\nMatching is case-insensitive if wildcards are used, otherwise case-sensitive.\nThe following wildcards can be used:\n'*' matches any number of any characters,\n'?' matches any single character.\n","schema":{"type":"string"},"in":"query","required":false,"example":"*land*"},{"name":"locationId","description":"Filter locations by locationId.\nMatching is case-insensitive if wildcards are used, otherwise case-sensitive.\nThe following wildcards can be used:\n'*' matches any number of any characters,\n'?' matches any single character.\n","schema":{"type":"string"},"in":"query","required":false,"example":"LOC-*"},{"name":"externalLocationId","description":"Filter locations by external location id.\nMatching is case-insensitive if wildcards are used, otherwise case-sensitive.\nThe following wildcards can be used:\n'*' matches any number of any characters,\n'?' matches any single character.\n","in":"query","schema":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100}},{"name":"enableEta","description":"Filter locations by enableEta value","schema":{"type":"string","enum":["always","never","origin","destination"]},"in":"query","required":false,"example":"never"},{"name":"sort","description":"A paramater to specify field to sort by and order.\nThe following format can be used:\n'name:asc' sort by name in ascending order,\n'steet:desc' sort by street in descending order.\nAllowed fields to sort by:\nlocationId, name, street, city, postalCode, state, country.\n","schema":{"oneOf":[{"type":"string","pattern":"^(locationId|name|street|city|postalCode|state|country):(asc|desc)$"},{"type":"array","items":{"type":"string","pattern":"^(locationId|name|street|city|postalCode|state|country):(asc|desc)$"}}]},"in":"query","required":false,"example":"name:asc"}],"security":[{"UserToken":[]},{"ClientToken":[]}],"responses":{"200":{"description":"Response body contains an array of location objects, count indicating the number of\nreturned items, limit indicating the requested maximum amount of records to be returned\nand pageToken for the next page if available.\n","content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"type":"object","description":"Location object body.","properties":{"locationId":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"externalLocationId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100},"name":{"description":"Name of the location.","type":"string","maxLength":50},"description":{"description":"Description of the location.","type":"string","maxLength":1000},"location":{"description":"Location coordinates.","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"address":{"description":"Location address.","type":"object","properties":{"street":{"description":"Street address","type":"string","maxLength":100},"city":{"description":"City","type":"string","maxLength":100},"postalCode":{"description":"Postal code","type":"string","maxLength":10},"state":{"description":"State","type":"string","maxLength":100},"country":{"description":"Country","type":"string","maxLength":100}}},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"version":{"description":"Location version","type":"integer"},"createdAt":{"description":"Timestamp indicating when this location has been created","type":"string","format":"date-time"},"updatedAt":{"description":"Timestamp indicating when this location has been updated","type":"string","format":"date-time"},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"enableEta":{"description":"Controls ETA calculation behavior for this location.\n- always: ETA calculation enabled for both origin and destination\n- never: ETA calculation disabled for both origin and destination\n- origin: ETA calculation enabled only when used as segment origin\n- destination: ETA calculation enabled only when used as segment destination\n\nUseful for locations where arrival/departure time is unpredictable.\n","type":"string","enum":["always","never","origin","destination"],"default":"always"}},"required":["locationId"],"additionalProperties":false,"example":{"locationId":"LOC-61a3fba0-cb44-405f-816c-c2aec73a1add","name":"Rostock Port","description":"Rostock Port Hafenbecken C","location":{"lat":54.155147,"lng":12.12204},"geofenceId":"57713e50-194e-4803-8ca6-1e794e916094"}}},"total":{"type":"integer","description":"Total number of locations for query"}},"required":["limit","count","items"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}},"tags":["Locations"]},"delete":{"summary":"Deletes all locations","description":"Deletes all locations of the project.\n\nNote that one needs to supply an HTTP header `x-confirm` with the value `true` to force the deletion.\nIf the header is not provided, the request will fail.\n","parameters":[{"schema":{"type":"string","enum":["true"]},"in":"header","name":"x-confirm","required":true,"description":"A safety measure that prevents one from accidentally deleting data.\n\nTo confirm that all entries should be deleted, set the value to `true`.\n"}],"security":[{"UserToken":[]},{"ClientToken":[]}],"responses":{"204":{"description":"Successful (no content).\n\nAll locations were successfully deleted.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}},"tags":["Locations"]}},"/locations/v4/{locationId}":{"parameters":[{"name":"locationId","description":"Location ID","schema":{"type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"in":"path","required":true}],"get":{"summary":"Gets a location details","description":"Gets details of the location `locationId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"responses":{"200":{"description":"Success.\n\nThe location information was returned\n","content":{"application/json":{"schema":{"type":"object","description":"Location object body.","properties":{"locationId":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"externalLocationId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100},"name":{"description":"Name of the location.","type":"string","maxLength":50},"description":{"description":"Description of the location.","type":"string","maxLength":1000},"location":{"description":"Location coordinates.","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"address":{"description":"Location address.","type":"object","properties":{"street":{"description":"Street address","type":"string","maxLength":100},"city":{"description":"City","type":"string","maxLength":100},"postalCode":{"description":"Postal code","type":"string","maxLength":10},"state":{"description":"State","type":"string","maxLength":100},"country":{"description":"Country","type":"string","maxLength":100}}},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"version":{"description":"Location version","type":"integer"},"createdAt":{"description":"Timestamp indicating when this location has been created","type":"string","format":"date-time"},"updatedAt":{"description":"Timestamp indicating when this location has been updated","type":"string","format":"date-time"},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"enableEta":{"description":"Controls ETA calculation behavior for this location.\n- always: ETA calculation enabled for both origin and destination\n- never: ETA calculation disabled for both origin and destination\n- origin: ETA calculation enabled only when used as segment origin\n- destination: ETA calculation enabled only when used as segment destination\n\nUseful for locations where arrival/departure time is unpredictable.\n","type":"string","enum":["always","never","origin","destination"],"default":"always"}},"required":["locationId"],"additionalProperties":false,"example":{"locationId":"LOC-61a3fba0-cb44-405f-816c-c2aec73a1add","name":"Rostock Port","description":"Rostock Port Hafenbecken C","location":{"lat":54.155147,"lng":12.12204},"geofenceId":"57713e50-194e-4803-8ca6-1e794e916094"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}},"tags":["Locations"]},"put":{"summary":"Updates a location details","description":"Updates the location `locationId` details. A location consists of latitude/longitude coordinate pair and/or geofenceId.\nA name, description, and address of the location may be provided.\nThe old location definition will be replaced, meaning that\nfull location body should be provided. After a successful update, the response provides\nthe updated location details.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Body for creating a location.","properties":{"name":{"description":"Name of the location.","type":"string","maxLength":50},"description":{"description":"Description of the location.","type":"string","maxLength":1000},"location":{"description":"Location coordinates. If optional `geofenceId` is given, the\ncoordinates from the geofence will be used and location coordinates\nare ignored.\n","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"address":{"description":"Location address.","type":"object","properties":{"street":{"description":"Street address","type":"string","maxLength":100},"city":{"description":"City","type":"string","maxLength":100},"postalCode":{"description":"Postal code","type":"string","maxLength":10},"state":{"description":"State","type":"string","maxLength":100},"country":{"description":"Country","type":"string","maxLength":100}}},"geofenceId":{"description":"Optional geofence ID associated with the location. A geofence with the specified ID must exist.","type":"string","format":"uuid"},"externalLocationId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"enableEta":{"description":"Controls ETA calculation behavior for this location.\n- always: ETA calculation enabled for both origin and destination\n- never: ETA calculation disabled for both origin and destination\n- origin: ETA calculation enabled only when used as segment origin\n- destination: ETA calculation enabled only when used as segment destination\n\nUseful for locations where arrival/departure time is unpredictable.\n","type":"string","enum":["always","never","origin","destination"],"default":"always"}},"additionalProperties":false,"anyOf":[{"required":["location"]},{"required":["geofenceId"]}],"example":{"name":"Rostock Port","description":"Rostock Port Hafenbecken C","location":{"lat":54.155147,"lng":12.12204},"geofenceId":"57713e50-194e-4803-8ca6-1e794e916094"}}}}},"responses":{"200":{"description":"Success.\n\nThe location information was updated\n","content":{"application/json":{"schema":{"type":"object","description":"Location object body.","properties":{"locationId":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"externalLocationId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100},"name":{"description":"Name of the location.","type":"string","maxLength":50},"description":{"description":"Description of the location.","type":"string","maxLength":1000},"location":{"description":"Location coordinates.","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"address":{"description":"Location address.","type":"object","properties":{"street":{"description":"Street address","type":"string","maxLength":100},"city":{"description":"City","type":"string","maxLength":100},"postalCode":{"description":"Postal code","type":"string","maxLength":10},"state":{"description":"State","type":"string","maxLength":100},"country":{"description":"Country","type":"string","maxLength":100}}},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"version":{"description":"Location version","type":"integer"},"createdAt":{"description":"Timestamp indicating when this location has been created","type":"string","format":"date-time"},"updatedAt":{"description":"Timestamp indicating when this location has been updated","type":"string","format":"date-time"},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"enableEta":{"description":"Controls ETA calculation behavior for this location.\n- always: ETA calculation enabled for both origin and destination\n- never: ETA calculation disabled for both origin and destination\n- origin: ETA calculation enabled only when used as segment origin\n- destination: ETA calculation enabled only when used as segment destination\n\nUseful for locations where arrival/departure time is unpredictable.\n","type":"string","enum":["always","never","origin","destination"],"default":"always"}},"required":["locationId"],"additionalProperties":false,"example":{"locationId":"LOC-61a3fba0-cb44-405f-816c-c2aec73a1add","name":"Rostock Port","description":"Rostock Port Hafenbecken C","location":{"lat":54.155147,"lng":12.12204},"geofenceId":"57713e50-194e-4803-8ca6-1e794e916094"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"413":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Payload Too Large","code":413,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request size exceeds the maximum size limit for payloads.","details":{"hereErrorCode":413306}}}},"description":"Payload Too Large\n\nThe request size exceeds the maximum size limit for payloads.\n"}},"tags":["Locations"]},"delete":{"summary":"Deletes a location","description":"Deletes the location `locationId`.\n\n***NOTE***: A location can not be deleted if the location is referred by any shipment.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"responses":{"204":{"description":"Successful (no content).\n\nThe location was successfully deleted.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}},"tags":["Locations"]}},"/rules/v4/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Rules"]}},"/rules/v4/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Rules"]}},"/rules/v4":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"post":{"summary":"Creates a rule","description":"Creates a rule of the specified rule `type` and with the defined `threshold`.\nAfter the rule has been created, it needs to be associated to a device to get activated.\n\nDetention rule\n---\nFor a rule of the `detention` type the threshold is defined as a duration in seconds.\nA `DETENTION_STARTED` event gets triggered when the device has remained\nstationary for longer than the threshold duration.\nA `DETENTION_ENDED` event will be generated when the device starts moving again.\n\nUtilization rule\n---\nFor a rule of the `utilization` type the threshold is defined as a duration in seconds.\nAn `UNUTILIZED` event will\nbe generated when the device has been stationary for longer than the threshold duration,\nand `UTILIZED` event gets triggered when the device starts moving again after having been stationary.\n\nDwelling rule\n---\nFor a rule of the `dwelling` type the threshold is defined as a duration in seconds.\nA `DWELLING_STARTED` event gets triggered when a dwelling time of the device\ninside any device-associated geofence exceeds the threshold duration.\nWhen the device exits the geofence, a `DWELLING_ENDED` event will be generated.\n\nOnline rule\n---\nFor a rule of the `online` type there is no threshold defined.\nA `TRUE_TO_FALSE` event gets triggered when the\ndevice is late for the planned ingestion schedule by more than 5 minutes.\nA `FALSE_TO_TRUE` event is generated when the device starts ingesting again after having been offline.\nThe planned ingestion schedule needs to be configured in the device `desired shadow`\n(the `desired.system.powerSave.sendMs` or `desired.system.rate.sendMs` property).\n\nStock rule\n---\nFor a rule of the `stock` type the threshold is defined as `minVolume` and/or `maxVolume` values.\nWhen creating a stock rule, also a geofence ID needs to be specified.\nWhen the number of devices inside the specified geofence exceeds `maxVolume`, an `OVERSTOCK`\nevent will be generated. Similarly, when the number of devices inside the specified geofence\ngets below `minVolume`, an `UNDERSTOCK` event will be generated. When the number of\ndevices inside the specified geofence is between `minVolume` and `maxVolume`, a `NORMAL_VOLUME`\nevent will be generated. Note that the stock rule only gets triggered for devices that are associated\nto the specified geofence. There can be up to 10 stock rules in a tracking project.\n\nShipment estimate change\n---\nFor a rule of the `shipmentEtaChange` type the threshold is defined as a ETD/ETA estimation deviation in seconds.\nA `SHIPMENT_ESTIMATE_CHANGED` event gets triggered when the new ETD/ETA estimates values differ\nfrom the previous estimates more than the defined threshold.\nIf the `segmentEtaChange` property is set to `true`, then the event is triggered\nfrom segment level ETD/ETA estimate changes, not from shipment level ETD/ETA\nestimate changes.\n\nShipment schedule rule\n---\nFor a rule of the `shipmentSchedule` type there are `before` and `after` deviation time thresholds\nfrom the planned shipment ETD/ETA.\nA `SHIPMENT_EARLY` event gets triggered when the shipment is ahead\nof schedule by the number of `before` seconds.\nA `SHIPMENT_DELAYED` event gets triggered when the shipment is behind\nschedule by the number of `after` seconds.\nA `SHIPMENT_ON_TIME` event gets triggered when the shipment is on time.\n\nWhen a rule has been successfully created, the response body will contain the created rule ID.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"title":"Detention","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["detention"]},"threshold":{"description":"Detention event is triggered when the asset has been continuously stationary for longer\nthan the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Dwelling","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["dwelling"]},"threshold":{"description":"Dwelling event is triggered when the asset has been continuously inside a geofence\nfor longer than the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Online","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["online"]},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type"],"additionalProperties":false},{"title":"Shipment ETD/ETA change","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentEtaChange"]},"threshold":{"type":"object","properties":{"deviation":{"type":"integer","description":"Shipment ETA change event is triggered if shipment ETD or ETA changes\nmore than deviation seconds. If `segmentEtaChange` is set to `true`\nevent is triggered if segment ETD or ETA changes more than deviation\nseconds.\n","minimum":600,"maximum":2147483647},"segmentEtaChange":{"type":"boolean","description":"If set to `true` the event is triggered from segment level ETD/ETA changes,\notherwise from shipment level ETD/ETA changes. Default is `false`.\n"}},"required":["deviation"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Shipment Schedule","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentSchedule"]},"threshold":{"type":"object","properties":{"before":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is ahead of schedule","minimum":0,"maximum":2147483647},"after":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is behind the schedule","minimum":0,"maximum":2147483647}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Stock","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["stock"]},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"threshold":{"type":"object","properties":{"maxVolume":{"type":"integer","description":"A maximum volume of stock","minimum":0},"minVolume":{"type":"integer","description":"A minimum volume of stock","minimum":0}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","geofenceId","threshold"],"additionalProperties":false},{"title":"Utilization","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["utilization"]},"threshold":{"description":"Utilization event is triggered when the asset starts moving\nindicating that the asset is utilized, and also when the asset stops\nmoving and has been stationary for longer than the threshold duration\nindicating that the asset is unutilized.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false}]}}}},"tags":["Rules"],"responses":{"201":{"description":"Created\n\nThe rule was successfully created.\n","content":{"application/json":{"schema":{"type":"object","properties":{"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["ruleId"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}},"get":{"summary":"Gets all rules","description":"Gets all rules definitions.","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"limit","description":"The number of items to return per page","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false}],"tags":["Rules"],"responses":{"200":{"description":"Response body contains an array of rule objects, `count` indicates the number of returned rules,\nand `pageToken` is the next page token if available.\n\nIf no rules are found, an object with an empty data array is returned.\n","content":{"application/json":{"example":{"items":[{"ruleId":"f4c26630-5d26-4cd1-a57e-g7834e72cb99","rule":{"type":"dwelling","threshold":{"durationS":3600}}}],"nextPageToken":"024ggjjea253d79fc","count":1,"limit":100},"schema":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"rule":{"oneOf":[{"title":"Detention","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["detention"]},"threshold":{"description":"Detention event is triggered when the asset has been continuously stationary for longer\nthan the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Dwelling","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["dwelling"]},"threshold":{"description":"Dwelling event is triggered when the asset has been continuously inside a geofence\nfor longer than the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Online","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["online"]},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type"],"additionalProperties":false},{"title":"Shipment ETD/ETA change","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentEtaChange"]},"threshold":{"type":"object","properties":{"deviation":{"type":"integer","description":"Shipment ETA change event is triggered if shipment ETD or ETA changes\nmore than deviation seconds. If `segmentEtaChange` is set to `true`\nevent is triggered if segment ETD or ETA changes more than deviation\nseconds.\n","minimum":600,"maximum":2147483647},"segmentEtaChange":{"type":"boolean","description":"If set to `true` the event is triggered from segment level ETD/ETA changes,\notherwise from shipment level ETD/ETA changes. Default is `false`.\n"}},"required":["deviation"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Shipment Schedule","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentSchedule"]},"threshold":{"type":"object","properties":{"before":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is ahead of schedule","minimum":0,"maximum":2147483647},"after":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is behind the schedule","minimum":0,"maximum":2147483647}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Stock","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["stock"]},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"threshold":{"type":"object","properties":{"maxVolume":{"type":"integer","description":"A maximum volume of stock","minimum":0},"minVolume":{"type":"integer","description":"A minimum volume of stock","minimum":0}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","geofenceId","threshold"],"additionalProperties":false},{"title":"Utilization","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["utilization"]},"threshold":{"description":"Utilization event is triggered when the asset starts moving\nindicating that the asset is utilized, and also when the asset stops\nmoving and has been stationary for longer than the threshold duration\nindicating that the asset is unutilized.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false}]}},"required":["ruleId","rule"]}}},"required":["limit","count","items"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}},"delete":{"summary":"Deletes all rules","description":"Deletes all rules of the project.\n\nNote that one needs to supply an HTTP header `x-confirm` with the value `true` to force the deletion.\nIf the header is not provided, the request will fail.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Rules"],"parameters":[{"schema":{"type":"string","enum":["true"]},"in":"header","name":"x-confirm","required":true,"description":"A safety measure that prevents one from accidentally deleting data.\n\nTo confirm that all entries should be deleted, set the value to `true`.\n"}],"responses":{"204":{"description":"Successful (no content)\n\nAll rule definitions were successfully deleted.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}}},"/rules/v4/{ruleId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"in":"path","schema":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"name":"ruleId","description":"ID of the rule","required":true}],"get":{"summary":"Gets a single rule","description":"Gets details of a single rule identified by the `ruleId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Rules"],"responses":{"200":{"description":"Response body contains a single rule object.\n","content":{"application/json":{"example":{"ruleId":"f4c26630-5d26-4cd1-a57e-g7834e72cb99","rule":{"type":"dwelling","threshold":{"durationS":3600}}},"schema":{"type":"object","properties":{"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"rule":{"oneOf":[{"title":"Detention","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["detention"]},"threshold":{"description":"Detention event is triggered when the asset has been continuously stationary for longer\nthan the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Dwelling","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["dwelling"]},"threshold":{"description":"Dwelling event is triggered when the asset has been continuously inside a geofence\nfor longer than the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Online","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["online"]},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type"],"additionalProperties":false},{"title":"Shipment ETD/ETA change","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentEtaChange"]},"threshold":{"type":"object","properties":{"deviation":{"type":"integer","description":"Shipment ETA change event is triggered if shipment ETD or ETA changes\nmore than deviation seconds. If `segmentEtaChange` is set to `true`\nevent is triggered if segment ETD or ETA changes more than deviation\nseconds.\n","minimum":600,"maximum":2147483647},"segmentEtaChange":{"type":"boolean","description":"If set to `true` the event is triggered from segment level ETD/ETA changes,\notherwise from shipment level ETD/ETA changes. Default is `false`.\n"}},"required":["deviation"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Shipment Schedule","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentSchedule"]},"threshold":{"type":"object","properties":{"before":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is ahead of schedule","minimum":0,"maximum":2147483647},"after":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is behind the schedule","minimum":0,"maximum":2147483647}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Stock","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["stock"]},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"threshold":{"type":"object","properties":{"maxVolume":{"type":"integer","description":"A maximum volume of stock","minimum":0},"minVolume":{"type":"integer","description":"A minimum volume of stock","minimum":0}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","geofenceId","threshold"],"additionalProperties":false},{"title":"Utilization","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["utilization"]},"threshold":{"description":"Utilization event is triggered when the asset starts moving\nindicating that the asset is utilized, and also when the asset stops\nmoving and has been stationary for longer than the threshold duration\nindicating that the asset is unutilized.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false}]}},"required":["ruleId","rule"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"No rules with the provided ruleId were found","details":{"hereErrorCode":404306}}}},"description":"No rules with the provided ruleId were found"}}},"put":{"summary":"Updates a single rule","description":"Updates the name, description and threshold of the rule `ruleId`.\nThe rule type cannot be updated.\nIf some of the these properties are not provided in the request body, their values\nwill be set to null.\n\nIf the rule has been updated successfully, the response will contain the updated rule details.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"title":"Detention","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["detention"]},"threshold":{"description":"Detention event is triggered when the asset has been continuously stationary for longer\nthan the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Dwelling","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["dwelling"]},"threshold":{"description":"Dwelling event is triggered when the asset has been continuously inside a geofence\nfor longer than the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Online","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["online"]},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type"],"additionalProperties":false},{"title":"Shipment ETD/ETA change","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentEtaChange"]},"threshold":{"type":"object","properties":{"deviation":{"type":"integer","description":"Shipment ETA change event is triggered if shipment ETD or ETA changes\nmore than deviation seconds. If `segmentEtaChange` is set to `true`\nevent is triggered if segment ETD or ETA changes more than deviation\nseconds.\n","minimum":600,"maximum":2147483647},"segmentEtaChange":{"type":"boolean","description":"If set to `true` the event is triggered from segment level ETD/ETA changes,\notherwise from shipment level ETD/ETA changes. Default is `false`.\n"}},"required":["deviation"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Shipment Schedule","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentSchedule"]},"threshold":{"type":"object","properties":{"before":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is ahead of schedule","minimum":0,"maximum":2147483647},"after":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is behind the schedule","minimum":0,"maximum":2147483647}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Stock","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["stock"]},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"threshold":{"type":"object","properties":{"maxVolume":{"type":"integer","description":"A maximum volume of stock","minimum":0},"minVolume":{"type":"integer","description":"A minimum volume of stock","minimum":0}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","geofenceId","threshold"],"additionalProperties":false},{"title":"Utilization","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["utilization"]},"threshold":{"description":"Utilization event is triggered when the asset starts moving\nindicating that the asset is utilized, and also when the asset stops\nmoving and has been stationary for longer than the threshold duration\nindicating that the asset is unutilized.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false}]}}}},"tags":["Rules"],"responses":{"200":{"description":"Successful\n\nThe rule was updated.\n","content":{"application/json":{"schema":{"type":"object","properties":{"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"rule":{"oneOf":[{"title":"Detention","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["detention"]},"threshold":{"description":"Detention event is triggered when the asset has been continuously stationary for longer\nthan the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Dwelling","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["dwelling"]},"threshold":{"description":"Dwelling event is triggered when the asset has been continuously inside a geofence\nfor longer than the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Online","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["online"]},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type"],"additionalProperties":false},{"title":"Shipment ETD/ETA change","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentEtaChange"]},"threshold":{"type":"object","properties":{"deviation":{"type":"integer","description":"Shipment ETA change event is triggered if shipment ETD or ETA changes\nmore than deviation seconds. If `segmentEtaChange` is set to `true`\nevent is triggered if segment ETD or ETA changes more than deviation\nseconds.\n","minimum":600,"maximum":2147483647},"segmentEtaChange":{"type":"boolean","description":"If set to `true` the event is triggered from segment level ETD/ETA changes,\notherwise from shipment level ETD/ETA changes. Default is `false`.\n"}},"required":["deviation"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Shipment Schedule","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentSchedule"]},"threshold":{"type":"object","properties":{"before":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is ahead of schedule","minimum":0,"maximum":2147483647},"after":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is behind the schedule","minimum":0,"maximum":2147483647}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Stock","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["stock"]},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"threshold":{"type":"object","properties":{"maxVolume":{"type":"integer","description":"A maximum volume of stock","minimum":0},"minVolume":{"type":"integer","description":"A minimum volume of stock","minimum":0}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","geofenceId","threshold"],"additionalProperties":false},{"title":"Utilization","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["utilization"]},"threshold":{"description":"Utilization event is triggered when the asset starts moving\nindicating that the asset is utilized, and also when the asset stops\nmoving and has been stationary for longer than the threshold duration\nindicating that the asset is unutilized.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false}]}},"required":["ruleId","rule"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"No rules with the provided ruleId were found","details":{"hereErrorCode":404306}}}},"description":"No rules with the provided ruleId were found"}}},"delete":{"summary":"Deletes a rule","description":"Deletes a rule identified by the `ruleId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Rules"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"No rules with the provided ruleId were found","details":{"hereErrorCode":404306}}}},"description":"No rules with the provided ruleId were found"},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Conflict","code":409,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource already exists.","details":{"hereErrorCode":404306}}}},"description":"Conflict\n\nThe specified resource already exists\n"}}}},"/sensors/v3/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Sensors"]}},"/sensors/v3/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Sensors"]}},"/sensors/v3":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"post":{"summary":"Creates a sensor rule","description":"Creates a sensor rule of the specified rule type.\nAfter the sensor rule has been created, it needs to be associated to a device to get activated.\n\nFor a sensor rule of the battery, humidity, pressure and temperature type, a `range` parameter needs\nto be specified, defining both upper and lower thresholds for the sensor readings.\nWhen the device ingests data, the reported sensor reading is compared to the defined range\nand in case in or out of range transition has taken place, an event gets triggered.\n\nFor a sensor rule of the acceleration type, a `threshold` parameter needs\nto be specified, defining the acceleration threshold value.\nEvery time the device reports its accelerometer sensor reading being above the threshold,\nan event gets triggered.\n\nFor a sensor rule of the attach and tamper types, no additional parameters\nneed to be specified.\nThe attach sensor detects whether the device is attached to some object (for example to an\nasset).\nThe tamper sensor detects whether the device cover is open or closed. When the cover is open,\nthe device is considered to be tampered with.\nEvery time the device reports getting attached, detached, tampered with or left with the\ncover closed (that is, not tampered with), an event gets triggered.\n\nWhen a sensor rule has been successfully created, the response body will contain the created rule ID.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"title":"Battery","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["battery"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"A minimum battery sensor alarm threshold value. Must be less than end.","minimum":0,"maximum":100},"end":{"type":"number","description":"A maximum battery sensor alarm threshold value. Must be greater than begin.","minimum":0,"maximum":100}},"required":["begin","end"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","range"],"additionalProperties":false},{"title":"Humidity","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["humidity"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"A minimum humidity sensor alarm threshold value. Must be less than end.","minimum":0,"maximum":100},"end":{"type":"number","description":"A maximum humidity sensor alarm threshold value. Must be greater than begin.","minimum":0,"maximum":100}},"required":["begin","end"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","range"],"additionalProperties":false},{"title":"Pressure","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["pressure"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"A minimum pressure sensor alarm threshold value. Must be less than end.","minimum":300,"maximum":1500},"end":{"type":"number","description":"A maximum pressure sensor alarm threshold value. Must be greater than begin.","minimum":300,"maximum":1500}},"required":["begin","end"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","range"],"additionalProperties":false},{"title":"Temperature","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["temperature"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"A minimum temperature sensor alarm threshold value. Must be less than end.","minimum":-70,"maximum":100},"end":{"type":"number","description":"A maximum temperature sensor alarm threshold value. Must be greater than begin.","minimum":-70,"maximum":100}},"required":["begin","end"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","range"],"additionalProperties":false},{"title":"Boolean","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["attach","tamper"]},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type"],"additionalProperties":false},{"title":"Acceleration","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["acceleration"]},"threshold":{"type":"object","properties":{"value":{"type":"number","description":"An acceleration sensor alarm threshold value.","minimum":2,"maximum":100}},"required":["value"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","threshold"],"additionalProperties":false}]}}}},"tags":["Sensors"],"responses":{"201":{"description":"Created\n\nThe sensor rule was successfully created.\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Set to `created` if the sensor rule creation was successful."},"id":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["id"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}},"get":{"summary":"Gets all sensor rules","description":"Gets all sensor rules definitions.","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of items to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false}],"tags":["Sensors"],"responses":{"200":{"description":"Response body contains an array of sensor rule objects, `count` indicates the number of returned sensor rules,\nand `pageToken` is the next page token if available.\n\nIf no sensor rules are found, an object with an empty data array is returned.\n","content":{"application/json":{"example":{"data":[{"id":"f4c26630-5d26-4cd1-a57e-g7834e72cb99","type":"temperature","range":{"begin":-20,"end":30}},{"id":"j7c24430-5f26-4kd1-c58e-g7126e72ab33","type":"pressure","range":{"begin":30,"end":80}}],"pageToken":"024ggjjea253d79fc","count":2},"schema":{"type":"object","description":"Response body contains an array of sensor rule objects, `count` indicates the number of returned sensor rules,\nand `pageToken` is the next page token if available.\n\nIf no sensor rules are found, an object with an empty data array is returned.\n","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"description":"Response body contains a single sensor rule object","type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"type":{"type":"string","description":"The sensor type.","enum":["attach","battery","humidity","pressure","tamper","temperature","acceleration"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"The lower threshold value."},"end":{"type":"number","description":"The upper threshold value."}},"required":["begin","end"]},"threshold":{"type":"object","properties":{"value":{"type":"number","description":"Threshold value"}},"required":["value"]},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","type"]}}}}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}},"delete":{"summary":"Deletes all sensor rules","description":"Deletes all sensor rules of a project.\n\nNote that one needs to supply an HTTP header `x-confirm` with the value `true` to force the deletion.\nIf the header is not provided, the request will fail.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Sensors"],"parameters":[{"schema":{"type":"string","enum":["true"]},"in":"header","name":"x-confirm","required":true,"description":"A safety measure that prevents one from accidentally deleting data.\n\nTo confirm that all entries should be deleted, set the value to `true`.\n"}],"responses":{"204":{"description":"Successful (no content)\n\nAll sensor rules were successfully deleted.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}}},"/sensors/v3/{sensorRuleId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"in":"path","schema":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"name":"sensorRuleId","description":"ID of the sensor rule","required":true}],"get":{"summary":"Gets a single sensor rule","description":"Gets details of a single sensor rule identified by the `sensorRuleId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Sensors"],"responses":{"200":{"description":"Response body contains a single sensor rule object.\n","content":{"application/json":{"example":{"id":"f4c26630-5d26-4cd1-a57e-g7834e72cb99","type":"temperature","range":{"begin":-20,"end":30}},"schema":{"description":"Response body contains a single sensor rule object","type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"type":{"type":"string","description":"The sensor type.","enum":["attach","battery","humidity","pressure","tamper","temperature","acceleration"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"The lower threshold value."},"end":{"type":"number","description":"The upper threshold value."}},"required":["begin","end"]},"threshold":{"type":"object","properties":{"value":{"type":"number","description":"Threshold value"}},"required":["value"]},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","type"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"The sensor rule ID was not found.","details":{"hereErrorCode":404306}}}},"description":"The sensor rule ID was not found"}}},"put":{"summary":"Updates a single sensor rule","description":"Updates the sensor rule `sensorRuleId` name, description and range or threshold.\nThe sensor rule type cannot be updated.\nIf some of the these properties are not provided in the request body, their values\nwill be set to null.\nIf the sensor rule has been updated successfully, the response will contain the updated rule details.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"title":"Battery","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["battery"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"A minimum battery sensor alarm threshold value. Must be less than end.","minimum":0,"maximum":100},"end":{"type":"number","description":"A maximum battery sensor alarm threshold value. Must be greater than begin.","minimum":0,"maximum":100}},"required":["begin","end"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","range"],"additionalProperties":false},{"title":"Humidity","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["humidity"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"A minimum humidity sensor alarm threshold value. Must be less than end.","minimum":0,"maximum":100},"end":{"type":"number","description":"A maximum humidity sensor alarm threshold value. Must be greater than begin.","minimum":0,"maximum":100}},"required":["begin","end"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","range"],"additionalProperties":false},{"title":"Pressure","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["pressure"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"A minimum pressure sensor alarm threshold value. Must be less than end.","minimum":300,"maximum":1500},"end":{"type":"number","description":"A maximum pressure sensor alarm threshold value. Must be greater than begin.","minimum":300,"maximum":1500}},"required":["begin","end"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","range"],"additionalProperties":false},{"title":"Temperature","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["temperature"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"A minimum temperature sensor alarm threshold value. Must be less than end.","minimum":-70,"maximum":100},"end":{"type":"number","description":"A maximum temperature sensor alarm threshold value. Must be greater than begin.","minimum":-70,"maximum":100}},"required":["begin","end"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","range"],"additionalProperties":false},{"title":"Boolean","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["attach","tamper"]},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type"],"additionalProperties":false},{"title":"Acceleration","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["acceleration"]},"threshold":{"type":"object","properties":{"value":{"type":"number","description":"An acceleration sensor alarm threshold value.","minimum":2,"maximum":100}},"required":["value"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","threshold"],"additionalProperties":false}]}}}},"tags":["Sensors"],"responses":{"200":{"description":"Successful\n\nThe sensor rule was updated.\n","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"message":{"type":"string","description":"The message text is \"updated\" if the sensor rule update was successful."}}},{"description":"Response body contains a single sensor rule object","type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"type":{"type":"string","description":"The sensor type.","enum":["attach","battery","humidity","pressure","tamper","temperature","acceleration"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"The lower threshold value."},"end":{"type":"number","description":"The upper threshold value."}},"required":["begin","end"]},"threshold":{"type":"object","properties":{"value":{"type":"number","description":"Threshold value"}},"required":["value"]},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","type"]}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"The sensor rule ID was not found.","details":{"hereErrorCode":404306}}}},"description":"The sensor rule ID was not found"}}},"delete":{"summary":"Deletes a sensor rule","description":"Deletes a sensor rule identified by the `sensorRuleId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"tags":["Sensors"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"The sensor rule ID was not found.","details":{"hereErrorCode":404306}}}},"description":"The sensor rule ID was not found"},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Conflict","code":409,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource already exists.","details":{"hereErrorCode":404306}}}},"description":"Conflict\n\nThe specified resource already exists\n"}}}},"/shadows/v2/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Shadows"]}},"/shadows/v2/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Shadows"]}},"/shadows/v2/{trackingId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"put":{"summary":"Updates a device shadow","description":"Updates the `trackingId` device desired shadow.\n\nThe device shadow consists of `reported` and `desired` shadows.\nOnly the `desired` shadow can be updated via this endpoint.\nThe `reported` shadow is updated automatically when the device sends telemetry to the ingestion endpoint.\n","security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"parameters":[{"name":"content-length","in":"header","required":true,"description":"The size of the shadow in bytes. The size is validated against the\nmaximum limit of 1000 bytes.\n","schema":{"type":"number","minimum":0,"maximum":1000}},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"desired":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"description":"Contains values for the device configuration. HERE Tracking uses these values\nfor various application flows.\n","type":"object","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"additionalProperties":false}},"additionalProperties":false}},"required":["desired"],"additionalProperties":false}}}},"tags":["Shadows"],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"The data that Shadows persists for each device.\n","type":"object","properties":{"desired":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","maximum":4102448400000,"minimum":0,"type":"integer"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to the desired shadow.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}},"reported":{"description":"The `reported` shadow contains the most recent position, sensor readings and settings that the\ndevice has sent. The reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in `system.computed` property of the shadow.\n\nIn case the most recent telemetry did not contain all the possible\nfields, the last known information will remain in the shadow. This means that one can\nsee, for example, the last reported temperature or tracker firmware information in the reported shadow,\neven if the device did not send that information in the latest telemetry.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"description":"Timestamp of the position","type":"integer","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"online":{"description":"Online status of the device. Computed based on the device's reporting rate. If the device has not reported within the time frame of the reporting rate plus five minutes, the device is considered to be offline. If the reporting rate is not specified for the device, a default of 15 minutes is used.","type":"boolean"},"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"lastMovedTimestamp":{"description":"Timestamp referring to the trace point when the asset was last detected moving.\nAsset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"integer"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe timestamp of the newest telemetry sent by the device. Note that this is not necessarily\nthe timestamp of all the reported values in the reported shadow since the shadow retains\nvalues from previous ingestions if the latest telemetry did not conatain them.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}}}},"example":{"desired":{"payload":{"color":"red"},"system":{"stateVersion":2,"rate":{"sendMs":300000,"sampleMs":300000,"distanceM":0},"lastModifiedGeofenceTimestamp":0},"timestamp":1461065261010}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"description":"Not found. Shadow doesn't exist."},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Conflict","code":409,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource already exists.","details":{"hereErrorCode":404306}}}},"description":"Conflict\n\nThe specified resource already exists\n"},"413":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Payload Too Large","code":413,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request size exceeds the maximum size limit for payloads.","details":{"hereErrorCode":413306}}}},"description":"Payload Too Large\n\nThe request size exceeds the maximum size limit for payloads.\n"}}},"get":{"summary":"Gets a device shadow","description":"Gets the `trackingId` device shadow that contains both `reported` and `desired` shadows.\n\nIf a `shipmentId` is used instead of a `trackingId`, it will return a\nshadow of the device that was most recently active for the shipment. If the shipment\nis still pending or it has been cancelled or completed, an empty shadow will be returned.\n","security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"parameters":[{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"required":true}],"tags":["Shadows"],"responses":{"200":{"description":"Successful\n\nThe device shadow was successfully retrieved.\n","content":{"application/json":{"schema":{"description":"The data that Shadows persists for each device.\n","type":"object","properties":{"desired":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","maximum":4102448400000,"minimum":0,"type":"integer"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to the desired shadow.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}},"reported":{"description":"The `reported` shadow contains the most recent position, sensor readings and settings that the\ndevice has sent. The reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in `system.computed` property of the shadow.\n\nIn case the most recent telemetry did not contain all the possible\nfields, the last known information will remain in the shadow. This means that one can\nsee, for example, the last reported temperature or tracker firmware information in the reported shadow,\neven if the device did not send that information in the latest telemetry.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"description":"Timestamp of the position","type":"integer","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"online":{"description":"Online status of the device. Computed based on the device's reporting rate. If the device has not reported within the time frame of the reporting rate plus five minutes, the device is considered to be offline. If the reporting rate is not specified for the device, a default of 15 minutes is used.","type":"boolean"},"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"lastMovedTimestamp":{"description":"Timestamp referring to the trace point when the asset was last detected moving.\nAsset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"integer"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe timestamp of the newest telemetry sent by the device. Note that this is not necessarily\nthe timestamp of all the reported values in the reported shadow since the shadow retains\nvalues from previous ingestions if the latest telemetry did not conatain them.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}}}},"example":{"reported":{"payload":{"color":"blue","velocity":100},"position":{"lat":52.5,"lng":13.4,"alt":97}},"desired":{"payload":{"color":"red","velocity":100}},"timestamp":1461065261010}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"description":"Not found. No shadow exists for the requested trackingId.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]}}}}}},"delete":{"summary":"Clears a device shadow","description":"Deletes the device shadow of the `trackingId` device.\n\nBy default, all the values of the `desired` and `reported` shadow objects will be cleared, leaving them empty.\n\nIf either `desired` or `reported` query parameter is set to `false`, that part of the shadow remains as it is.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true},{"name":"desired","in":"query","required":false,"description":"If `true`, all the values of the `desired` shadow will be cleared","schema":{"type":"boolean","default":true}},{"name":"reported","in":"query","required":false,"description":"If `true`, all the values of the `reported` shadow will be cleared","schema":{"type":"boolean","default":true}}],"tags":["Shadows"],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"description":"Not found. No shadow exists for the requested trackingId.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]}}}}}}},"/shadows/v2/batch":{"post":{"summary":"Gets a batch of device shadows","description":"Gets device shadows for multiple devices. One can get shadows for a\nmaximum of 100 devices per request.\n\nIn case `after` parameter is provided, only the device\nshadows that were modified on or after the specified timestamp\nwill be retrieved.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"after","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\nThe accepted range is from 0 to the current time.\n","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","description":"An array of trackingIds of devices","minItems":1,"maxItems":100,"items":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"example":["HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6","HERE-b0146d7b-2e46-4cee-bc71-6da03ba2da85"]}}}},"tags":["Shadows"],"responses":{"200":{"description":"Successful\n\nThe response body contains a list of device shadows accompanied by statusCode and\ntrackingId of the associated device. The returned shadow objects are in same\norder as the trackingIds provided in the request.\n\nIn case of an error, each trackingId has a separate status code:\n\n* 403 - Forbidden\n* 404 - Device not found\n","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"body":{"description":"The data that Shadows persists for each device.\n","type":"object","properties":{"desired":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","maximum":4102448400000,"minimum":0,"type":"integer"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to the desired shadow.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}},"reported":{"description":"The `reported` shadow contains the most recent position, sensor readings and settings that the\ndevice has sent. The reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in `system.computed` property of the shadow.\n\nIn case the most recent telemetry did not contain all the possible\nfields, the last known information will remain in the shadow. This means that one can\nsee, for example, the last reported temperature or tracker firmware information in the reported shadow,\neven if the device did not send that information in the latest telemetry.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"description":"Timestamp of the position","type":"integer","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"online":{"description":"Online status of the device. Computed based on the device's reporting rate. If the device has not reported within the time frame of the reporting rate plus five minutes, the device is considered to be offline. If the reporting rate is not specified for the device, a default of 15 minutes is used.","type":"boolean"},"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"lastMovedTimestamp":{"description":"Timestamp referring to the trace point when the asset was last detected moving.\nAsset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"integer"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe timestamp of the newest telemetry sent by the device. Note that this is not necessarily\nthe timestamp of all the reported values in the reported shadow since the shadow retains\nvalues from previous ingestions if the latest telemetry did not conatain them.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}}}},"statusCode":{"type":"integer"},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"},"externalId":{"type":"string","minLength":1,"maxLength":50,"description":"Virtual device external ID, only present when the device is virtual"}}},"example":[{"body":{"desired":{},"reported":{"position":{"lat":40,"lng":30.2,"accuracy":30},"system":{"phoneNumber":"+4917012345"}}},"statusCode":200,"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"},{"statusCode":404,"trackingId":"HERE-b0146d7b-2e46-4cee-bc71-6da03ba2da85"}]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}}}},"/shadows/v2/{trackingId}/{state}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"required":true},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false},{"name":"state","in":"path","required":true,"description":"Desired or reported state object of a device to query.","schema":{"type":"string","enum":["desired","reported"]}}],"get":{"summary":"Gets reported or desired state object of a device","description":"Gets the `reported` or `desired` state object of the device `trackingId`, that is the `reported` or `desired` device shadow.\n","security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"tags":["Shadows"],"responses":{"200":{"description":"Successful\n\nThe requested device desired or reported state object\n","content":{"application/json":{"schema":{"anyOf":[{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","maximum":4102448400000,"minimum":0,"type":"integer"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to the desired shadow.\n","maximum":4102448400000,"minimum":2,"type":"integer"}},"title":"desired"},{"description":"The `reported` shadow contains the most recent position, sensor readings and settings that the\ndevice has sent. The reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in `system.computed` property of the shadow.\n\nIn case the most recent telemetry did not contain all the possible\nfields, the last known information will remain in the shadow. This means that one can\nsee, for example, the last reported temperature or tracker firmware information in the reported shadow,\neven if the device did not send that information in the latest telemetry.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"description":"Timestamp of the position","type":"integer","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"online":{"description":"Online status of the device. Computed based on the device's reporting rate. If the device has not reported within the time frame of the reporting rate plus five minutes, the device is considered to be offline. If the reporting rate is not specified for the device, a default of 15 minutes is used.","type":"boolean"},"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"lastMovedTimestamp":{"description":"Timestamp referring to the trace point when the asset was last detected moving.\nAsset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"integer"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe timestamp of the newest telemetry sent by the device. Note that this is not necessarily\nthe timestamp of all the reported values in the reported shadow since the shadow retains\nvalues from previous ingestions if the latest telemetry did not conatain them.\n","maximum":4102448400000,"minimum":2,"type":"integer"}},"title":"reported"}]},"example":{"position":{"alt":"105","accuracy":"18","lng":"13.38480101","lat":"52.5308544","altaccuracy":"15"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"description":"Not found. Shadow doesn't exist","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]}}}}}}},"/shadows/v2/{trackingId}/{state}/{selector}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"required":true},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false},{"name":"state","in":"path","required":true,"description":"Desired or reported state object of a device to query.","schema":{"type":"string","enum":["desired","reported"]}},{"name":"selector","in":"path","required":true,"description":"A JSON selector that specifies the property.","schema":{"type":"string"}}],"get":{"summary":"Gets a value of a shadow property","description":"Gets a value of a single property of either `desired` or `reported` state objects of a device.\nOne can use JSON selectors to specify the target property or reference it by name.\nIn case the property contains an object, the entire object will be returned in the response.\n\nThe JSON selector can be nested like this: `payload/time/minutes`\n","security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"tags":["Shadows"],"responses":{"200":{"description":"Successful\n\nThe content type is defined as \"text/plain\" or \"application/json\"\ndepending on the type of the property.\n","content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"type":"array"}]},"example":{"alt":"105","accuracy":"18","lng":"13.38480101","lat":"52.5308544","altaccuracy":"15"}},"text/plain":{"schema":{"type":"string"},"example":"red"}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"description":"Not found. Shadow doesn't exist","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]}}}},"422":{"description":"The specified property doesn't exist in the shadow for the device.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]}}}}}}},"/shadows/v4":{"get":{"summary":"Gets all shadows","description":"Gets all device shadows of a project.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false},{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"limit","in":"query","description":"The number of items to return per page","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100},"required":false},{"name":"after","in":"query","required":false,"description":"If provided returns the shadows for which `reported.timestamp` is greater than given `after` parameter.","schema":{"type":"string","format":"date-time"}},{"in":"query","schema":{"type":"string","pattern":"^(trackingId|reported.timestamp|desired.timestamp):(asc|desc)$"},"name":"sort","description":"Defines how the items are sorted.\nThe default sort is `sort=trackingId:asc`\n","example":"reported.timestamp:desc","required":false},{"in":"query","schema":{"type":"array","maxItems":4,"minItems":4,"items":{"type":"number","minimum":-180,"maximum":180,"description":"Latitude and longitude of Northwest and Southeast corners."}},"name":"bbox","description":"Limit search to shadows, whose position intersects the given bounding box.\nThe `bbox` array consist of latitude and longitude of Northwest and Southeast corners.\n","style":"form","example":"61.494750,23.775189,61.494611,23.774758"}],"tags":["Shadows"],"responses":{"200":{"description":"Response body contains an array of shadows along with tracking ID, count indicating the number of returned items,\nand next page token if available. For virtual devices, a combination of app ID and external ID is provided instead of tracking ID.\n","content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":1000},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":1000},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"shadow":{"type":"object","properties":{"desired":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"description":"Begin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","type":"string","format":"date-time"},"end":{"description":"End time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","type":"string","format":"date-time"}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"The time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","type":"string","format":"date-time"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"The time of the last update to the desired shadow.\n","type":"string","format":"date-time"}}},"reported":{"description":"The `reported` shadow contains the most recent position, sensor readings and settings that the\ndevice has sent. The reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in `system.computed` property of the shadow.\n\nIn case the most recent telemetry did not contain all the possible\nfields, the last known information will remain in the shadow. This means that one can\nsee, for example, the last reported temperature or tracker firmware information in the reported shadow,\neven if the device did not send that information in the latest telemetry.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the position"}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"online":{"description":"Online status of the device. Computed based on the device's reporting rate. If the device has not reported within the time frame of the reporting rate plus five minutes, the device is considered to be offline. If the reporting rate is not specified for the device, a default of 15 minutes is used.","type":"boolean"},"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"lastMovedTimestamp":{"description":"Timestamp referring to the trace point when the asset was last detected moving.\nAsset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"string","format":"date-time"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"description":"Timestamp for the corrected position","type":"string","format":"date-time"}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"This describes when the reported measurements were taken.\n","type":"string","format":"date-time"}}}},"required":["desired","reported"]},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"},"externalId":{"type":"string","minLength":1,"maxLength":50,"description":"Virtual device external ID, only present when the device is virtual"}},"required":["shadow"]}}},"required":["limit","count","items"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}},"/shipments/v4/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Shipments"]}},"/shipments/v4/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Shipments"]}},"/shipments/v4":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"projectId","schema":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"in":"query","required":false}],"post":{"summary":"Creates a shipment","description":"Creates a new shipment. A shipment consists of segments each representing a part of the\nlogistics journey. A segment spans from a location to another and each segment may be\nassigned a different tracking device.\n\nThe segments of the shipment must form a continuous chain of locations, that is the origin of a\nsegment must match the destination of a previous segment.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"From new","description":"Body for creating a shipment","properties":{"name":{"description":"Name of the shipment","type":"string","maxLength":50},"description":{"description":"Description of the shipment","type":"string","maxLength":1000},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"autoStart":{"default":true,"description":"A boolean parameter defining whether the shipment starts upon exiting the first origin\nlocation.\n","type":"boolean"},"subShipment":{"default":false,"description":"Flag telling if shipment is a subShipment.","type":"boolean"},"ruleIds":{"description":"Array of `ruleId`s to associate with the shipment","type":"array","items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"maxItems":10},"segments":{"description":"Array of objects each defining the origin and destination of the segment.\nThe maximum number of segments in a shipment can have stricter project\nspecific limits than the maximum value documented here.\n","type":"array","minItems":1,"maxItems":100,"items":{"description":"A segment of a shipment.","type":"object","properties":{"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"description":"ID of the tracking device that produces data for this segment","type":"string","minLength":1,"maxLength":50},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"providedEtd":{"description":"ETD for the segment","type":"string","format":"date-time"},"providedEta":{"description":"ETA for the segment","type":"string","format":"date-time"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["transportMode","origin","destination"],"additionalProperties":false,"example":{"name":"Truck transport","description":"From factory to port","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92"}}},"providedEtd":{"description":"ETD for the shipment","type":"string","format":"date-time"},"providedEta":{"description":"ETA for the shipment","type":"string","format":"date-time"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["segments"],"additionalProperties":false,"example":{"name":"From Portugal to Panama","description":"A shipment consisting of four segments","autoStart":true,"subShipment":false,"ruleIds":["712dde2c-20e6-4903-82f1-0beb0dd9e4bd","6d1da24b-5187-42ab-9eb5-1e43c61b6bae"],"segments":[{"name":"Truck transport","description":"From factory to port","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92"},{"name":"Marine transport","description":"From port to another port","transportMode":"sea","trackingId":"VRTR-8b9fd950-ce19-4aaf-98d5-840a76652658","origin":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","destination":"LOC-a2dc2c70-cc3e-4fa5-ac77-4c63558e7f97"},{"name":"Truck transport","description":"From port to storage","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-a2dc2c70-cc3e-4fa5-ac77-4c63558e7f97","destination":"LOC-733deb91-efa3-41b6-9003-92845866b511"}]}}}}},"responses":{"201":{"description":"Created.\n\nThe shipment has been successfully created.\n","content":{"application/json":{"schema":{"type":"object","properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},"required":["shipmentId"],"additionalProperties":false,"example":{"shipmentId":"SHP-d306beb9-e110-450e-9f81-3db9de1ac001"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"413":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Payload Too Large","code":413,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request size exceeds the maximum size limit for payloads.","details":{"hereErrorCode":413306}}}},"description":"Payload Too Large\n\nThe request size exceeds the maximum size limit for payloads.\n"}},"tags":["Shipments"]},"get":{"deprecated":true,"summary":"Gets all shipments","description":"Gets all shipments of the project.\n","parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"limit","description":"The number of items to return per page","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"name":"status","description":"Filter the results by shipment status","schema":{"type":"string","enum":["pending","ongoing","completed","cancelled"]},"in":"query","required":false},{"name":"startedBefore","description":"Return only shipments that started before the specified timestamp","schema":{"type":"string","format":"date-time"},"in":"query","required":false},{"name":"startedAfter","description":"Return only shipments that started after the specified timestamp","schema":{"type":"string","format":"date-time"},"in":"query","required":false},{"name":"endedBefore","description":"Return only shipments that ended before the specified timestamp","schema":{"type":"string","format":"date-time"},"in":"query","required":false},{"name":"endedAfter","description":"Return only shipments that ended after the specified timestamp","schema":{"type":"string","format":"date-time"},"in":"query","required":false},{"name":"name","description":"Filter shipments by name.\nMatching is case-insensitive if wildcards are used, otherwise case-sensitive.\nThe following wildcards can be used:\n'*' matches any number of any characters,\n'?' matches any single character.\n","schema":{"type":"string"},"in":"query","required":false,"example":"*portugal*"},{"name":"shipmentId","description":"Filter shipments by `shipmentId`\nMatching is case-insensitive if wildcards are used, otherwise case-sensitive.\nThe following wildcards can be used:\n'*' matches any number of any characters,\n'?' matches any single character.\n","schema":{"type":"string"},"in":"query","required":false},{"name":"extOrderId","description":"Filter shipments by `extOrderId`\nMatching is case-insensitive if wildcards are used, otherwise case-sensitive.\nThe following wildcards can be used:\n'*' matches any number of any characters,\n'?' matches any single character.\n","schema":{"type":"string"},"in":"query","required":false},{"name":"isSubShipment","description":"Returns only shipments marked as subShipments","schema":{"type":"boolean"},"in":"query","required":false},{"name":"createdBefore","description":"Return only shipments that have been created before specified timestamp","schema":{"type":"string","format":"date-time"},"in":"query","required":false},{"name":"createdAfter","description":"Return only shipments that have been created after specified timestamp","schema":{"type":"string","format":"date-time"},"in":"query","required":false},{"name":"sort","description":"A parameter to specify field to sort by and order.\nThe following format can be used:\n'name:asc' sort by name in ascending order,\n'shipmentId:desc' sort by shipmentId in descending order.\nAllowed fields to sort by:\nshipmentId, extOrderId, name, status, startedAt, createdAt, endedAt, providedEtd,\nprovidedEta, calculatedEtd, calculatedEta.\n","schema":{"oneOf":[{"type":"string","pattern":"^(shipmentId|extOrderId|name|status|startedAt|createdAt|endedAt|providedEtd|providedEta|calculatedEtd|calculatedEta):(asc|desc)$"},{"type":"array","items":{"type":"string","pattern":"^(shipmentId|extOrderId|name|status|startedAt|createdAt|endedAt|providedEtd|providedEta|calculatedEtd|calculatedEta):(asc|desc)$"}}]},"in":"query","required":false,"example":"name:asc"}],"security":[{"UserToken":[]},{"ClientToken":[]}],"responses":{"200":{"description":"Response body contains an array of shipment objects, `count` indicates the number of\nreturned items, `limit` indicates the requested maximum amount of records to be returned\nand `pageToken` is the next page token if available.\n","content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"description":"Shipment details","type":"object","properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the shipment","type":"string","maxLength":50},"description":{"description":"Description of the shipment","type":"string","maxLength":1000},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"autoStart":{"description":"A boolean parameter defining whether the shipment starts upon exiting the first origin\nlocation.\n","type":"boolean"},"subShipment":{"description":"Flag telling if shipment is a subShipment.","type":"boolean"},"status":{"description":"Status of the shipment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the shipment started"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the shipment has been created"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the shipment ended"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the shipment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the shipment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the shipment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the shipment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"ruleIds":{"description":"Array of `ruleId`s to associate with the shipment","type":"array","items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"maxItems":10},"segments":{"description":"Array containing the segment details","type":"array","items":{"description":"Segment details","type":"object","properties":{"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment started"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment ended"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment created"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the segment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the segment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the segment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false,"example":{"segmentId":"SEG-156986fa-1ed9-42ab-a022-9ac1a70ae137","name":"Truck transport","description":"From factory to port","status":"pending","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","startedAt":"2020-05-27T11:40:01Z","endedAt":"2020-05-27T11:40:01Z"}}},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["shipmentId","autoStart","status","segments"],"additionalProperties":false,"example":{"shipmentId":"SHP-d306beb9-e110-450e-9f81-3db9de1ac001","name":"From Portugal to Panama","description":"A shipment consisting of one segment","autoStart":true,"subShipment":false,"status":"pending","ruleIds":["712dde2c-20e6-4903-82f1-0beb0dd9e4bd","6d1da24b-5187-42ab-9eb5-1e43c61b6bae"],"segments":[{"segmentId":"SEG-156986fa-1ed9-42ab-a022-9ac1a70ae137","name":"Truck transport","description":"From factory to port","status":"pending","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","startedAt":"2020-05-27T11:40:01Z","endedAt":"2020-05-27T11:40:01Z"}]}}},"total":{"type":"integer","description":"Total number of shipments for query"}},"required":["limit","count","items"],"additionalProperties":false,"example":{"limit":100,"count":1,"items":[{"shipmentId":"SHP-d306beb9-e110-450e-9f81-3db9de1ac001","name":"From Portugal to Panama","description":"A shipment consisting of one segment","autoStart":true,"subShipment":false,"status":"pending","segments":[{"segmentId":"SEG-156986fa-1ed9-42ab-a022-9ac1a70ae137","name":"Truck transport","description":"From factory to port","status":"pending","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","startedAt":"2020-05-27T11:40:01Z","endedAt":"2020-05-27T11:40:01Z"}]}]}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}},"tags":["Shipments"]},"delete":{"summary":"Deletes all shipments","description":"Deletes all the shipments of the project.\n\nNote that one needs to supply an HTTP header `x-confirm` with the value `true` to force the deletion.\nIf the header is not provided, the request will fail.\n\nIf the project has many shipments, deleting them all can take a while.\nThis operation returns 202 as long as the shipments deletion is in progress\nand 204 after all shipments have been deleted.\n","parameters":[{"schema":{"type":"string","enum":["true"]},"in":"header","name":"x-confirm","required":true,"description":"A safety measure that prevents one from accidentally deleting data.\n\nTo confirm that all entries should be deleted, set the value to `true`.\n"}],"security":[{"UserToken":[]},{"ClientToken":[]}],"responses":{"202":{"description":"Accepted\n\nShipments deletion is in progress.\n"},"204":{"description":"Successful (no content).\n\nAll shipments were successfully deleted.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}},"tags":["Shipments"]}},"/shipments/v4/{shipmentId}":{"parameters":[{"name":"shipmentId","schema":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"in":"path","required":true}],"get":{"summary":"Gets a shipment details","description":"Gets details of a specific shipment identified by the `shipmentId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"responses":{"200":{"description":"Success.\n\nThe shipment information was returned\n","content":{"application/json":{"schema":{"description":"Shipment details","type":"object","properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the shipment","type":"string","maxLength":50},"description":{"description":"Description of the shipment","type":"string","maxLength":1000},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"autoStart":{"description":"A boolean parameter defining whether the shipment starts upon exiting the first origin\nlocation.\n","type":"boolean"},"subShipment":{"description":"Flag telling if shipment is a subShipment.","type":"boolean"},"status":{"description":"Status of the shipment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the shipment started"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the shipment has been created"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the shipment ended"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the shipment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the shipment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the shipment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the shipment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"ruleIds":{"description":"Array of `ruleId`s to associate with the shipment","type":"array","items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"maxItems":10},"segments":{"description":"Array containing the segment details","type":"array","items":{"description":"Segment details","type":"object","properties":{"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment started"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment ended"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment created"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the segment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the segment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the segment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false,"example":{"segmentId":"SEG-156986fa-1ed9-42ab-a022-9ac1a70ae137","name":"Truck transport","description":"From factory to port","status":"pending","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","startedAt":"2020-05-27T11:40:01Z","endedAt":"2020-05-27T11:40:01Z"}}},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["shipmentId","autoStart","status","segments"],"additionalProperties":false,"example":{"shipmentId":"SHP-d306beb9-e110-450e-9f81-3db9de1ac001","name":"From Portugal to Panama","description":"A shipment consisting of one segment","autoStart":true,"subShipment":false,"status":"pending","ruleIds":["712dde2c-20e6-4903-82f1-0beb0dd9e4bd","6d1da24b-5187-42ab-9eb5-1e43c61b6bae"],"segments":[{"segmentId":"SEG-156986fa-1ed9-42ab-a022-9ac1a70ae137","name":"Truck transport","description":"From factory to port","status":"pending","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","startedAt":"2020-05-27T11:40:01Z","endedAt":"2020-05-27T11:40:01Z"}]}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}},"tags":["Shipments"]},"patch":{"summary":"Updates a shipment details","description":"Updates details of a shipment identified by the `shipmentId`.\nThis is a partial update, meaning that only the provided fields will be updated,\nexcept when updating segments, the whole segments will be replaced fully.\n\nChanging the status of the shipment affects the statuses of the segments. The following\nstatus changes are allowed:\n* `pending` → `ongoing`\n * changes the status of the first segment to `ongoing`\n* `pending` → `cancelled`\n * changes the status of `ongoing` and all `pending` segments to `cancelled`\n* `ongoing` → `cancelled`\n * cancels the current `ongoing` segment and all the succeeding segments\n* `ongoing` → `completed`\n * completes the current `ongoing` segment and cancels all the succeeding segments\n\n***Note***:\n`segments` and `autoStart` can be updated via this API call only if the shipment is in\n`pending` state.\n\nThe \"Tracker only\" variant of the request updates the given tracking device\nto all `ongoing` and `pending` state segments of the shipment, so it allows\nto make tracker association both for `ongoing` and `pending` state shipments.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","oneOf":[{"description":"Body for updating a shipment","title":"Full shipment","type":"object","properties":{"name":{"description":"Name of the shipment","type":"string","maxLength":50},"description":{"description":"Description of the shipment","type":"string","maxLength":1000},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"autoStart":{"description":"A boolean parameter defining whether the shipment starts upon exiting the first origin\nlocation.\n","type":"boolean"},"subShipment":{"description":"Flag telling if shipment is a subShipment.","type":"boolean"},"status":{"description":"Status of the shipment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"ruleIds":{"description":"Array of `ruleId`s to associate with the shipment","type":"array","items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"maxItems":10},"segments":{"description":"Array of objects each defining the origin and destination of the segment.\nThe maximum number of segments in a shipment can have stricter project\nspecific limits than the maximum value documented here.\n","type":"array","minItems":1,"maxItems":100,"items":{"description":"A segment of a shipment.","type":"object","properties":{"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"description":"ID of the tracking device that produces data for this segment","type":"string","minLength":1,"maxLength":50},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"providedEtd":{"description":"ETD for the segment","type":"string","format":"date-time"},"providedEta":{"description":"ETA for the segment","type":"string","format":"date-time"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["transportMode","origin","destination"],"additionalProperties":false,"example":{"name":"Truck transport","description":"From factory to port","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92"}}},"providedEtd":{"type":"string","format":"date-time","description":"ETD for the shipment"},"providedEta":{"type":"string","format":"date-time","description":"ETA for the shipment"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false},{"description":"Body for updating the tracker used in the shipment","title":"Tracker only","type":"object","properties":{"trackingId":{"description":"ID of the tracking device that produces data for the shipment","type":"string","minLength":1,"maxLength":50}},"additionalProperties":false}]}}}},"responses":{"204":{"description":"Successful (no content)\n\nThe shipment information was updated\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"413":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Payload Too Large","code":413,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request size exceeds the maximum size limit for payloads.","details":{"hereErrorCode":413306}}}},"description":"Payload Too Large\n\nThe request size exceeds the maximum size limit for payloads.\n"}},"tags":["Shipments"]},"delete":{"summary":"Deletes a shipment","description":"Deletes a shipment identified by the `shipmentId`.\nAll the data related to the shipment (such as events, associations) will be removed.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"responses":{"204":{"description":"Successful (no content).\n\nThe shipment was successfully deleted.\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}},"tags":["Shipments"]}},"/shipments/v4/{shipmentId}/{segmentId}":{"parameters":[{"name":"shipmentId","schema":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"in":"path","required":true},{"name":"segmentId","schema":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"in":"path","required":true}],"get":{"summary":"Gets a segment details","description":"Gets details of a segment identified by the `segmentId`.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"responses":{"200":{"description":"Success.\n\nThe segment information was returned\n","content":{"application/json":{"schema":{"description":"Segment details","type":"object","properties":{"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment started"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment ended"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment created"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the segment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the segment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the segment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false,"example":{"segmentId":"SEG-156986fa-1ed9-42ab-a022-9ac1a70ae137","name":"Truck transport","description":"From factory to port","status":"pending","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","startedAt":"2020-05-27T11:40:01Z","endedAt":"2020-05-27T11:40:01Z"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}},"tags":["Shipments"]},"patch":{"summary":"Updates a segment details","description":"Updates details of a segment identified by the `segmentId`.\n\nThis is a partial update, meaning that only the provided fields\nwill be updated.\n\nChanging the status of a segment affects the statuses of other segments in the shipment. The\nfollowing status changes are allowed:\n* `pending` → `ongoing`\n * changes previous `pending` segments to `cancelled`\n * changes previous `ongoing` segment to `completed` (only for the immediate predecessor of\n this segment)\n * changes previous `ongoing` segment to `cancelled` (for segments that are not immediate\n predecessors of this segment)\n * previous segments in `cancelled` or `completed` states are not affected\n* `pending` || `ongoing` → `cancelled`\n * no changes for other segments\n* `ongoing` → `completed`\n * next segment with status `pending` is changed to `ongoing`\n\n***Note***:\n`trackingId` can be updated through this API call only if the segment is in `pending` state.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"description":"A segment of a shipment.","type":"object","properties":{"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"description":"ID of the tracking device that produces data for the segment","type":"string","minLength":1,"maxLength":50},"providedEtd":{"type":"string","format":"date-time","description":"ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"ETA for the segment"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false,"example":{"name":"Truck transport","description":"From factory to port","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d"}}}}},"responses":{"204":{"description":"Successful (no content)\n\nThe segment information was updated\n"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"},"413":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Payload Too Large","code":413,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request size exceeds the maximum size limit for payloads.","details":{"hereErrorCode":413306}}}},"description":"Payload Too Large\n\nThe request size exceeds the maximum size limit for payloads.\n"}},"tags":["Shipments"]}},"/shipments/v4/{trackingId}/segments":{"parameters":[{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"required":true}],"get":{"summary":"Gets segments assigned to a device","description":"Gets all segments that are assigned to the device with `trackingId` or `shipmentId`.\n","parameters":[{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"limit","description":"The number of items to return per page","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"in":"query","required":false},{"name":"status","description":"Filter the results by segment status","schema":{"type":"string","enum":["pending","ongoing","completed","cancelled"]},"in":"query","required":false}],"security":[{"UserToken":[]},{"ClientToken":[]},{"DeviceToken":[]}],"responses":{"200":{"description":"Success.\n\nThe segment information was returned\n","content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"description":"Segment details with shipmentId","type":"object","properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment started"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment ended"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment created"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the segment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the segment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the segment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}}}}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"}},"tags":["Shipments"]}},"/traces/v2/health":{"get":{"summary":"Gets service health","security":[],"responses":{"200":{"description":"OK\n\nThe service is performing as expected\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Health status"}},"example":{"message":"healthy"}}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Traces"]}},"/traces/v2/version":{"get":{"summary":"Gets service version","security":[],"responses":{"200":{"description":"Success\n","content":{"application/json":{"schema":{"description":"OK\nService returns its current version number\nschema:\n type: object\n properties:\n \"service-name\":\n type: string\n description: Version of service\n example:\n servicename: \"1.0.0\"\n"}}}},"500":{"description":"Service unavailable\n\nThe service is not performing as expected\n"}},"tags":["Traces"]}},"/traces/v2/{trackingId}":{"parameters":[{"in":"header","name":"X-Request-Id","schema":{"type":"string","format":"uuid"},"description":"ID used for correlating requests within HERE Tracking. Used for logging and error reporting.\n\nMust be a valid UUIDv4.\n","required":false},{"name":"appId","description":"Application identifier. Used together with an external ID to identify a virtual device.","schema":{"type":"string","minLength":8},"in":"query","required":false}],"delete":{"summary":"Deletes all the device traces and events","description":"Deletes all the device `trackingId` traces.\n\nThis will also trigger deletion of the entire event history of the device.\n","tags":["Traces"],"security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"required":true}],"responses":{"204":{"description":"Successful (no content)"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}},"get":{"summary":"Gets traces within a specified time range","description":"Gets all traces of the device `trackingId` that were recorded within the specified time range.\nThe range is defined with `before` and `after` parameters.\nThe returned traces are sorted in descending order based on their timestamps.\n\nThe default value for `before` parameter is the current time, and for the `after` parameter\nit is one day in the past from the current time.\nThe `after` parameter value is not allowed to be earlier than 18 days in the past from the\n`before` timestamp, otherwise an error is returned.\n\nIf the `trackingId` is substituted with a valid `shipmentId`, the response\ncontains a composition of traces of each shipment segment.\nTraces are only fetched for those segments that are either in `ongoing` or `completed` state.\n\nThe `outliers` parameter can be used to select only traces that have\nbeen marked as outliers (if the parameter value is `true`), or only traces\nthat have not been marked as outliers (if the parameter value is `false`).\nIf the `outliers` parameter is not present, all the traces will be returned.\n\nThe `count` and `pageToken` parameters are used for pagination.\n","security":[{"UserToken":[]},{"ClientToken":[]}],"parameters":[{"name":"trackingId","in":"path","schema":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"required":true},{"name":"before","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\nThe accepted range is from 1 to the current time.\n","in":"query","required":false,"schema":{"type":"number","minimum":1}},{"name":"after","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\nThe accepted range is from 0 to the current time.\n","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"outliers","description":"Flag specifying if only outliers (`true`) or only nonoutliers (`false`)\nare to be returned. If the parameter is not present both nonoutlier\nand outlier traces are returned.\n","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"mode","description":"Tracker mode.\n","in":"query","required":false,"schema":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},{"name":"smooth","description":"Flag telling if smoothed traces (true) or non-smoothed (false)\ntraces should get returned. By default the traces are not smoothed.\n\nThe smoothing will have an effect on to the stationary trace points only.\n","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"pageToken","description":"A token from the previously returned response to retrieve the specified page.","schema":{"type":"string"},"in":"query","required":false},{"name":"count","description":"The number of records per page.","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":1000}}],"tags":["Traces"],"responses":{"200":{"description":"Successful.\n\nThe response body contains an array of traces within the\ngiven time range (`after` <= timestamp <= `before`).\n\nTraces are sorted in descending order based on their timestamps.\n","content":{"application/json":{"schema":{"description":"The response body contains an array of traces, `count` is the number of\nreturned items and `pageToken` is the next page token if available.\n\nIf no traces are found, an object with an empty data array is returned.\n\nTraces are sorted in descending order based on their timestamps.\n","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":1000,"default":1000,"description":"The number of items in the response."}}},{"type":"object","properties":{}},{"type":"object","properties":{"data":{"type":"array","items":{"description":"A trace sample reported by the device.","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nSpecifies the time the device telemetry measurements were taken.\n","type":"integer","minimum":2,"maximum":4102448400000},"serverTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThis describes when the measurements were processed by the backend.\n","maximum":4102448400000,"minimum":2,"type":"integer"},"trackingDisabled":{"type":"array","description":"Array containing the properties that were removed from the original device data as per disableTracking property in the device shadow. `position` refers to all positioning data and `sensors` to all reported sensor data.\n","items":{"type":"string","enum":["position","sensors","bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps","accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"]}}}}}}}],"example":{"count":2,"data":[{"timestamp":1451425708571,"position":{"lat":"52.4988217","lng":"13.35170005","alt":"86","accuracy":"25","altaccuracy":"96"},"system":{"client":{"name":"MT2503","model":"AT4H","version":"10.0.16","firmware":"10.1.1","platform":"MT6261","manufacturer":"CONCOX","hasAttachSensor":true,"hasTamperSensor":true,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTemperatureSensor":true},"reportedSensorData":{"pressureHpa":994.342,"batteryLevel":100,"temperatureC":24.48,"deviceIsAttached":true,"deviceIsStationary":true,"deviceIsTampered":false,"relativeHumidity":31.39}},"payload":{},"serverTimestamp":1451425709682},{"timestamp":1451425708216,"position":{"lat":"52.4988217","lng":"13.35170005","alt":"86","accuracy":"25","altaccuracy":"96"},"system":{"reportedSensorData":{"pressureHpa":994.416,"batteryLevel":100,"temperatureC":24.46,"deviceIsAttached":true,"deviceIsStationary":true,"deviceIsTampered":false,"relativeHumidity":31.37}},"payload":{"refAppData":{"nwpos":true,"batteryState":{"level":61,"charging":false,"temperature":26.9}}},"serverTimestamp":1451425710434}],"pageToken":"1490376144514"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Bad request","code":400,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The request object is in an incorrect format or has values that are invalid or out of range.","details":{"hereErrorCode":400306}}}},"description":"Bad request\n\nThe request object is in an incorrect format or has values that are invalid or out of range.\n\nIf available, further error details are provided in the response body.\n"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The provided credentials are not valid.","details":{"hereErrorCode":401306}}}},"description":"Unauthorized\n\nThe request did not provide correct authentication details\n"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Forbidden","code":403,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The account does not have the correct privileges.","details":{"hereErrorCode":403306}}}},"description":"Forbidden\n\nThe account does not have the correct privileges\n"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"message":{"type":"string","description":"Descriptive text that explains the error"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"]},"example":{"error":"Not Found","code":404,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee-lds2","message":"The specified resource was not found.","details":{"hereErrorCode":404306}}}},"description":"Not Found\n\nThe specified resource was not found\n"}}}}},"components":{"schemas":{"responseToken":{"type":"object","properties":{"accessToken":{"type":"string"},"expiresIn":{"type":"integer"}},"example":{"accessToken":"h1.ySDEpBjW2fXM0Nk1IyBohA.6YOv1MfQUd1K7MCg9elZrrVTT5fKfqYECYUrD7Y77d-p9KqIZrVfjpIrkMqVC9MmfUILOm7xk7VuhCH59o0oLJCl6M8Q8cGHTKVrPcpqiEzUQKs7pSZXxVbIui0O5caUgJ3GHrS1X4aZQuB1KSsngvWMcIz0M0a4g4x8bICUHNRbISbQOWNTc7CcxRIJegIlj24dUawrhtnuQh50JUUY2pHYpSh_t8R0AVkm8JO-WEtWW3SZiLa30IR0gz2121vlRjdNolnJYsuJzHoaEKEkrMj9ffybtcBVWo9dkY1qmDQ-DRg_loVenJK45kjHJijkQ902r_vhH8jtoXTrZ1RBFHuZtwLW8xXBw70BCWPu4OYGgthjaq61mpE8iP1s7MG7gbAiW_S249aaoWMUxQN6djw8cNoTP6YPM-ivSieRMxwPl56mhRQ5GRjQa8AYkuOvoCFg-LCMIxTYhrDZM4HFWQ.duHFPjvWUQbdArCL5CU7bTowK5fD07ro83r6CRWjuB_1TK2VyO1lvfNFZIZePWLyTlN0y9uqD7Uro6t87h_a0zfpeU8_529KrB9vgpcBARF5LGBo8Rh7y2islYxCGJ2pAxHADtxkfiZ8TCoEatg0F3jkeggOl8YUFkeaI2g7WtnhZwrXBwW9QizQH3EM_Djnu66-kv_aM-uddpzZJJ7CmrJiwhucaEJeYRDSpuzzZWT6_NwBg6_xLjyseCv5AGs8EmsuStCFP0Ey7UDIqo9V2RA9uDP64Q0mvEw3EUTHmJGHF_8E2s4iIpjKJCvUGsGYAy8XrjeW10EBAMkfrn6cwA","expiresIn":86399}},"responseTelemetry":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","maximum":4102448400000,"minimum":0,"type":"integer"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to the desired shadow.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}},"country":{"description":"Indicates in which country the WLAN APs are located (in case cell data is not present in radio_observations)","type":"object","required":["mcc"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999}}},"scan":{"type":"object","description":"Radio measurements used for positioning or radio map contribution.\n","properties":{"bt":{"description":"Bluetooth access points","type":"array","maxItems":128,"items":{"description":"Bluetooth measurement. In addition to rss, one of mac, eddystoneId, or iBeaconId is required.","type":"object","required":["rss"],"properties":{"timestamp":{"description":"Time of the measurement (UTC)","type":"string","format":"date-time"},"rss":{"description":"Received signal strength (dBm) at the terminal","type":"integer","minimum":-128,"maximum":0},"mac":{"description":"The MAC address of the Bluetooth access point. MAC-48 address with colon (:) or hyphen (-) separators, upper or lower case hex digits. For privacy reasons positioning based on a single Bluetooth AP is not possible. There must be at least one other matching WLAN or Bluetooth access point. Either MAC, EddystoneId, or iBeaconId is required.","type":"string","pattern":"^(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})|(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2})$"},"eddystoneId":{"description":"Full Identifier as Base64 string. A combination of 10-byte Namespace component and a 6-byte Instance component","type":"string","minLength":24,"maxLength":24},"iBeaconId":{"description":"Full Identifier as Base64 string. A combination of 16-byte UUID + 2-byte major + 2-byte minor","type":"string","minLength":28,"maxLength":28}}}},"country":{"description":"Indicates in which country the WLAN APs are located (in case cell data is not present in radio_observations)","type":"object","required":["mcc"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999}}},"gsm":{"description":"GSM cells (GERAN)","type":"array","maxItems":16,"items":{"description":"GSM measurement","type":"object","required":["mcc","mnc","lac","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"Cell Identifier, 16 bits. Mcc+mnc+lac+cid uniquely identifies the GSM cell.","type":"integer","minimum":0,"maximum":65535},"ta":{"description":"Timing advance (Optional). Expressed in the units of GSM bits equaling to 48/13 μs ~ 1107 meters.","type":"integer","minimum":0,"maximum":63},"rxlevel":{"description":"Received Signal power (dBm) (Optional). Power less than -110dBm should be mapped to -110. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-110,"maximum":-25},"bsic":{"description":"Base Station Identity Code (for instance, color code) (Optional, you must specify a value for this item when you specify a value for bcch).","type":"integer","minimum":0,"maximum":63},"bcch":{"description":"Broadcast Control Channel (Synonymous to ARFCN = Absolute Radio Frequency Channel) (Optional, you must specify a value for this item when you specify a value for bsic).","type":"integer","minimum":0,"maximum":1023},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":16,"items":{"description":"GSM Network measurement","type":"object","required":["bsic","bcch"],"properties":{"bsic":{"description":"Base Station Identity Code (for instance, color code)","type":"integer","minimum":0,"maximum":63},"bcch":{"description":"Broadcast Control Channel (Synonymous to ARFCN = Absolute Radio Frequency Channel)","type":"integer","minimum":0,"maximum":1023},"rxlevel":{"description":"Received Signal power (dBm) (Optional). Power less than -110dBm should be mapped to -110. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-110,"maximum":-25},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":65535}}}}}}},"wcdma":{"description":"WCDMA cells (UTRA-FDD, 3G UMTS)","type":"array","maxItems":16,"items":{"description":"WCDMA measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"UTRAN Cell Identifier, 28 bits (12 bits RNC and 16 bits Cell id). Mcc+mnc+cid uniquely identifies the WCDMA cell, lac is optional.","type":"integer","minimum":0,"maximum":268435455},"uarfcndl":{"description":"Downlink frequency of a UTRA-FDD Serving Cell (Optional, you must specify a value for this item when you specify a value for psc).","type":"integer","minimum":0,"maximum":16383},"psc":{"description":"Primary Scrambling Code (Primary CPICH, Primary Control Pilot Channel) (Optional, you must specify a value for this item when you specify a value for uarfcndl).","type":"integer","minimum":0,"maximum":511},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional).","type":"integer","minimum":46,"maximum":158},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional). Maximum of 8 uarfcndl times maximum of 32 psc.","type":"array","maxItems":256,"items":{"description":"WCDMA Network measurement","type":"object","required":["uarfcndl","psc"],"properties":{"uarfcndl":{"description":"Downlink frequency of a UTRA-FDD Serving Cell","type":"integer","minimum":0,"maximum":16383},"psc":{"description":"Primary Scrambling Code (Primary CPICH, Primary Control Pilot Channel)","type":"integer","minimum":0,"maximum":511},"cid":{"description":"UTRAN Cell Identifier (uc-id) (Optional)","type":"integer","minimum":0,"maximum":268435455},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional).","type":"integer","minimum":46,"maximum":158}}}}}}},"tdscdma":{"description":"TD-SCDMA cell (UTRA-TDD, 3G UMTS TDD)","type":"array","maxItems":16,"items":{"description":"TD-SCDMA measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"UTRAN Cell Identifier, 28 bits (12 bits RNC and 16 bits Cell id). Mcc+mnc+cid uniquely identifies the TDSCDMA cell, lac is optional.","type":"integer","minimum":0,"maximum":268435455},"ta":{"description":"Timing advance (Optional). Round-Trip distance presented in the units of 4*c/7.68e6 ~156 meters. That is, the scaling factor is 4 times the chip length at chip rate of 7.68 Mchips/s. Note that at chip rates 1.28 Mchips/s and 3.84 Mchips/s you need to scale according to chip length of 7.68 Mchips/s, that is, multiply by 6 or 2 if needed.","type":"integer","minimum":0,"maximum":1530},"uarfcn":{"description":"Carrier frequency of a UTRA-TDD Serving Cell (Optional, you must specify a value for this item when you specify a value for cellparams).","type":"integer","minimum":0,"maximum":16383},"cellparams":{"description":"Cell Parameters ID (CDMA Spreading Code ID) (Optional, you must specify a value for this item when you specify a value for uarfcn).","type":"integer","minimum":0,"maximum":127},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional, you must specify a value for this item when you specify a value for pathloss). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional, you must specify a value for this item when you specify a value for rscp).","type":"integer","minimum":46,"maximum":158},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"type":"array","description":"Network measurements (Optional). Maximum of 8 uarfcndl times maximum of 32 psc.","maxItems":256,"items":{"description":"TD-SCDMA Network measurement","type":"object","required":["uarfcn","cellparams"],"properties":{"uarfcn":{"description":"Carrier frequency of a UTRA-TDD Serving Cell","type":"integer","minimum":0,"maximum":16383},"cellparams":{"description":"Cell Parameters ID (CDMA Spreading Code ID)","type":"integer","minimum":0,"maximum":127},"cid":{"description":"Cell Identifier (uc-id) (Optional)","type":"integer","minimum":0,"maximum":268435455},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional, you must specify a value for this item when you specify a value for pathloss). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional, you must specify a value for this item when you specify a value for rscp).","type":"integer","minimum":46,"maximum":158}}}}}}},"lte":{"description":"LTE cells (E-UTRA, 4G)","type":"array","maxItems":16,"items":{"description":"LTE measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":16,"items":{"description":"LTE Network measurement","type":"object","required":["pci","earfcn"],"properties":{"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3}}}}}}},"lteCatM":{"description":"LTE Cat-M cells","type":"array","maxItems":16,"items":{"description":"LTE Cat-M measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"NB-IoT network measurement","type":"object","required":["pci","earfcn"],"properties":{"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3}}}},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"nbIot":{"description":"NB-IoT cells","type":"array","maxItems":16,"items":{"description":"NB-IoT measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"nmr":{"description":"NB-IoT Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"LTE Cat-M network measurement","type":"object","required":["pci","earfcn"],"properties":{"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"nrsrp":{"description":"Narrowband Reference Signal Received Power = NRSRP (dBm) (Optional). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"nrsrq":{"description":"Narrowband Reference Signal Received Quality = NRSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 2.5dB should be mapped to 2.5.","type":"number","minimum":-34,"maximum":2.5}}}},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"nrsrp":{"description":"Narrowband Reference Signal Received Power = NRSRP (dBm) (Optional). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"nrsrq":{"description":"Narrowband Reference Signal Received Quality = NRSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 2.5dB should be mapped to 2.5.","type":"number","minimum":-34,"maximum":2.5},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"cdma":{"description":"CDMA cells","type":"array","maxItems":16,"items":{"description":"CDMA measurement","type":"object","required":["sid","nid","bsid"],"properties":{"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535},"rz":{"description":"Registration zone (Optional)","type":"integer","minimum":0,"maximum":4095},"bsid":{"description":"Base Station ID, BID","type":"integer","minimum":0,"maximum":65535},"pnoffset":{"description":"Pseudonoise offset (Optional, you must specify a value for this item when you specify a value for channel)","type":"integer","minimum":0,"maximum":511},"channel":{"description":"CDMA channel frequency (Optional, you must specify a value for this item when you specify a value for pnoffset)","type":"integer","minimum":0,"maximum":2047},"pilotpower":{"description":"Pilot Power (dBm) (Optional). If Pilot Power is not available directly, it needs to be calculated from Total Power in the band and Pilot Strength with respect to the Total Power. Pilot power less than -142dBm should be mapped to -142. Pilot power greater than -49dBm should be mapped to -49.","type":"integer","minimum":-142,"maximum":-49},"baselat":{"description":"Base station latitude (Optional)","type":"number","minimum":-90,"maximum":90},"baselng":{"description":"Base station longitude (Optional)","type":"number","minimum":-180,"maximum":180},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"CDMA Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"CDMA Network measurement","type":"object","required":["pnoffset","channel"],"properties":{"pnoffset":{"description":"Pseudonoise offset","type":"integer","minimum":0,"maximum":511},"channel":{"description":"CDMA channel frequency","type":"integer","minimum":0,"maximum":2047},"frequency":{"description":"Deprecated. Use 'channel' instead.","type":"integer","minimum":0,"maximum":2047},"bsid":{"description":"Base Station ID (Optional)","type":"integer","minimum":0,"maximum":65535},"pilotpower":{"description":"Pilot Power (dBm) (Optional). If Pilot Power is not available directly, it needs to be calculated from Total Power in the band and Pilot Strength with respect to the Total Power. Pilot power less than -142dBm should be mapped to -142. Pilot power greater than -49dBm should be mapped to -49.","type":"integer","minimum":-142,"maximum":-49}}}}}}},"wlan":{"description":"WLAN access points","type":"array","maxItems":128,"items":{"description":"WLAN measurement","type":"object","required":["mac"],"properties":{"mac":{"description":"The MAC address of the WLAN access point. MAC-48 address with colon (:) or hyphen (-) separators, upper or lower case hex digits. Note that if the SSID contains postfix '_nomap', the AP should not be used for positioning. For privacy reasons positioning based on a single WLAN AP is not possible; there has to be at least one other matching wlan or cell.","type":"string","pattern":"^(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})|(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2})$"},"powrx":{"description":"Received signal level (dBm) at the terminal (Optional)","type":"integer","minimum":-128,"maximum":0},"band":{"description":"Frequency range (GHz). Allowed values are 2.4, 3.65, and 5. (Possible future values include 4.9, 5.9, 60, and 900.)","type":"number","enum":[2.4,3.65,5]},"timestamp":{"description":"Time of the wlan measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"gps":{"description":"Optionally supply this to improve HERE Tracking's positioning service by\ncontributing the scan data along with a GPS position.\n","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]}}},"telemetry":{"type":"object","properties":{"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nSpecifies the time the device telemetry measurements were taken.\n","type":"integer","minimum":2,"maximum":4102448400000},"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"description":"Timestamp of the position","type":"integer","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"scan":{"type":"object","description":"Radio measurements used for positioning or radio map contribution.\n","properties":{"bt":{"description":"Bluetooth access points","type":"array","maxItems":128,"items":{"description":"Bluetooth measurement. In addition to rss, one of mac, eddystoneId, or iBeaconId is required.","type":"object","required":["rss"],"properties":{"timestamp":{"description":"Time of the measurement (UTC)","type":"string","format":"date-time"},"rss":{"description":"Received signal strength (dBm) at the terminal","type":"integer","minimum":-128,"maximum":0},"mac":{"description":"The MAC address of the Bluetooth access point. MAC-48 address with colon (:) or hyphen (-) separators, upper or lower case hex digits. For privacy reasons positioning based on a single Bluetooth AP is not possible. There must be at least one other matching WLAN or Bluetooth access point. Either MAC, EddystoneId, or iBeaconId is required.","type":"string","pattern":"^(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})|(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2})$"},"eddystoneId":{"description":"Full Identifier as Base64 string. A combination of 10-byte Namespace component and a 6-byte Instance component","type":"string","minLength":24,"maxLength":24},"iBeaconId":{"description":"Full Identifier as Base64 string. A combination of 16-byte UUID + 2-byte major + 2-byte minor","type":"string","minLength":28,"maxLength":28}}}},"country":{"description":"Indicates in which country the WLAN APs are located (in case cell data is not present in radio_observations)","type":"object","required":["mcc"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999}}},"gsm":{"description":"GSM cells (GERAN)","type":"array","maxItems":16,"items":{"description":"GSM measurement","type":"object","required":["mcc","mnc","lac","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"Cell Identifier, 16 bits. Mcc+mnc+lac+cid uniquely identifies the GSM cell.","type":"integer","minimum":0,"maximum":65535},"ta":{"description":"Timing advance (Optional). Expressed in the units of GSM bits equaling to 48/13 μs ~ 1107 meters.","type":"integer","minimum":0,"maximum":63},"rxlevel":{"description":"Received Signal power (dBm) (Optional). Power less than -110dBm should be mapped to -110. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-110,"maximum":-25},"bsic":{"description":"Base Station Identity Code (for instance, color code) (Optional, you must specify a value for this item when you specify a value for bcch).","type":"integer","minimum":0,"maximum":63},"bcch":{"description":"Broadcast Control Channel (Synonymous to ARFCN = Absolute Radio Frequency Channel) (Optional, you must specify a value for this item when you specify a value for bsic).","type":"integer","minimum":0,"maximum":1023},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":16,"items":{"description":"GSM Network measurement","type":"object","required":["bsic","bcch"],"properties":{"bsic":{"description":"Base Station Identity Code (for instance, color code)","type":"integer","minimum":0,"maximum":63},"bcch":{"description":"Broadcast Control Channel (Synonymous to ARFCN = Absolute Radio Frequency Channel)","type":"integer","minimum":0,"maximum":1023},"rxlevel":{"description":"Received Signal power (dBm) (Optional). Power less than -110dBm should be mapped to -110. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-110,"maximum":-25},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":65535}}}}}}},"wcdma":{"description":"WCDMA cells (UTRA-FDD, 3G UMTS)","type":"array","maxItems":16,"items":{"description":"WCDMA measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"UTRAN Cell Identifier, 28 bits (12 bits RNC and 16 bits Cell id). Mcc+mnc+cid uniquely identifies the WCDMA cell, lac is optional.","type":"integer","minimum":0,"maximum":268435455},"uarfcndl":{"description":"Downlink frequency of a UTRA-FDD Serving Cell (Optional, you must specify a value for this item when you specify a value for psc).","type":"integer","minimum":0,"maximum":16383},"psc":{"description":"Primary Scrambling Code (Primary CPICH, Primary Control Pilot Channel) (Optional, you must specify a value for this item when you specify a value for uarfcndl).","type":"integer","minimum":0,"maximum":511},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional).","type":"integer","minimum":46,"maximum":158},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional). Maximum of 8 uarfcndl times maximum of 32 psc.","type":"array","maxItems":256,"items":{"description":"WCDMA Network measurement","type":"object","required":["uarfcndl","psc"],"properties":{"uarfcndl":{"description":"Downlink frequency of a UTRA-FDD Serving Cell","type":"integer","minimum":0,"maximum":16383},"psc":{"description":"Primary Scrambling Code (Primary CPICH, Primary Control Pilot Channel)","type":"integer","minimum":0,"maximum":511},"cid":{"description":"UTRAN Cell Identifier (uc-id) (Optional)","type":"integer","minimum":0,"maximum":268435455},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional).","type":"integer","minimum":46,"maximum":158}}}}}}},"tdscdma":{"description":"TD-SCDMA cell (UTRA-TDD, 3G UMTS TDD)","type":"array","maxItems":16,"items":{"description":"TD-SCDMA measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"lac":{"description":"Location Area Code (Optional)","type":"integer","minimum":1,"maximum":65535},"cid":{"description":"UTRAN Cell Identifier, 28 bits (12 bits RNC and 16 bits Cell id). Mcc+mnc+cid uniquely identifies the TDSCDMA cell, lac is optional.","type":"integer","minimum":0,"maximum":268435455},"ta":{"description":"Timing advance (Optional). Round-Trip distance presented in the units of 4*c/7.68e6 ~156 meters. That is, the scaling factor is 4 times the chip length at chip rate of 7.68 Mchips/s. Note that at chip rates 1.28 Mchips/s and 3.84 Mchips/s you need to scale according to chip length of 7.68 Mchips/s, that is, multiply by 6 or 2 if needed.","type":"integer","minimum":0,"maximum":1530},"uarfcn":{"description":"Carrier frequency of a UTRA-TDD Serving Cell (Optional, you must specify a value for this item when you specify a value for cellparams).","type":"integer","minimum":0,"maximum":16383},"cellparams":{"description":"Cell Parameters ID (CDMA Spreading Code ID) (Optional, you must specify a value for this item when you specify a value for uarfcn).","type":"integer","minimum":0,"maximum":127},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional, you must specify a value for this item when you specify a value for pathloss). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional, you must specify a value for this item when you specify a value for rscp).","type":"integer","minimum":46,"maximum":158},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"type":"array","description":"Network measurements (Optional). Maximum of 8 uarfcndl times maximum of 32 psc.","maxItems":256,"items":{"description":"TD-SCDMA Network measurement","type":"object","required":["uarfcn","cellparams"],"properties":{"uarfcn":{"description":"Carrier frequency of a UTRA-TDD Serving Cell","type":"integer","minimum":0,"maximum":16383},"cellparams":{"description":"Cell Parameters ID (CDMA Spreading Code ID)","type":"integer","minimum":0,"maximum":127},"cid":{"description":"Cell Identifier (uc-id) (Optional)","type":"integer","minimum":0,"maximum":268435455},"rscp":{"description":"Received Signal Code Power = RSCP (dBm) (Optional, you must specify a value for this item when you specify a value for pathloss). Power less than -120dBm should be mapped to -120. Power greater than -25dBm should be mapped to -25.","type":"integer","minimum":-120,"maximum":-25},"pathloss":{"description":"UTRAN path loss (dB) (Optional, you must specify a value for this item when you specify a value for rscp).","type":"integer","minimum":46,"maximum":158}}}}}}},"lte":{"description":"LTE cells (E-UTRA, 4G)","type":"array","maxItems":16,"items":{"description":"LTE measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":16,"items":{"description":"LTE Network measurement","type":"object","required":["pci","earfcn"],"properties":{"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3}}}}}}},"lteCatM":{"description":"LTE Cat-M cells","type":"array","maxItems":16,"items":{"description":"LTE Cat-M measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"nmr":{"description":"Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"NB-IoT network measurement","type":"object","required":["pci","earfcn"],"properties":{"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3}}}},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"rsrp":{"description":"Reference Signal Received Power = RSRP (dBm) (Optional, you must specify a value for this item when you specify a value for rsrq). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"rsrq":{"description":"Reference Signal Received Quality = RSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 3dB should be mapped to 3dB.","type":"number","minimum":-34,"maximum":3},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"nbIot":{"description":"NB-IoT cells","type":"array","maxItems":16,"items":{"description":"NB-IoT measurement","type":"object","required":["mcc","mnc","cid"],"properties":{"cid":{"description":"E-UTRA Cell Identifier, 28 bits (20 bits eNodeB and 8 bits Cell id). Mcc+mnc+cid uniquely identifies the LTE cell, tac is optional.","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel (Optional, you must specify a value for this item when you specify a value for pci)","type":"integer","minimum":0,"maximum":262143},"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"nmr":{"description":"NB-IoT Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"LTE Cat-M network measurement","type":"object","required":["pci","earfcn"],"properties":{"cid":{"description":"E-UTRA Cell Identifier (Optional)","type":"integer","minimum":0,"maximum":268435455},"earfcn":{"description":"Evolved Absolute Radio Frequency Channel","type":"integer","minimum":0,"maximum":262143},"pci":{"description":"Physical Cell Identity","type":"integer","minimum":0,"maximum":503},"nrsrp":{"description":"Narrowband Reference Signal Received Power = NRSRP (dBm) (Optional). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"nrsrq":{"description":"Narrowband Reference Signal Received Quality = NRSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 2.5dB should be mapped to 2.5.","type":"number","minimum":-34,"maximum":2.5}}}},"pci":{"description":"Physical Cell Identity (Optional, you must specify a value for this item when you specify a value for earfcn)","type":"integer","minimum":0,"maximum":503},"nrsrp":{"description":"Narrowband Reference Signal Received Power = NRSRP (dBm) (Optional). Power less than -156dBm should be mapped to -156. Power greater than -44dBm should be mapped to -44.","type":"integer","minimum":-156,"maximum":-44},"nrsrq":{"description":"Narrowband Reference Signal Received Quality = NRSRQ (dB) (Optional). Values less than -34dB should be mapped to -34, and values greater than 2.5dB should be mapped to 2.5.","type":"number","minimum":-34,"maximum":2.5},"ta":{"description":"Timing Advance (Optional). Expressed in the units of 16*Ts (16 Basic time units) = 16/(15000*2048) seconds ~ 156meters. For reference see TS 36.213 and 36.211.","type":"integer","minimum":0,"maximum":1282},"tac":{"description":"Tracking Area Code (Optional)","type":"integer","minimum":0,"maximum":65535},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"cdma":{"description":"CDMA cells","type":"array","maxItems":16,"items":{"description":"CDMA measurement","type":"object","required":["sid","nid","bsid"],"properties":{"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535},"rz":{"description":"Registration zone (Optional)","type":"integer","minimum":0,"maximum":4095},"bsid":{"description":"Base Station ID, BID","type":"integer","minimum":0,"maximum":65535},"pnoffset":{"description":"Pseudonoise offset (Optional, you must specify a value for this item when you specify a value for channel)","type":"integer","minimum":0,"maximum":511},"channel":{"description":"CDMA channel frequency (Optional, you must specify a value for this item when you specify a value for pnoffset)","type":"integer","minimum":0,"maximum":2047},"pilotpower":{"description":"Pilot Power (dBm) (Optional). If Pilot Power is not available directly, it needs to be calculated from Total Power in the band and Pilot Strength with respect to the Total Power. Pilot power less than -142dBm should be mapped to -142. Pilot power greater than -49dBm should be mapped to -49.","type":"integer","minimum":-142,"maximum":-49},"baselat":{"description":"Base station latitude (Optional)","type":"number","minimum":-90,"maximum":90},"baselng":{"description":"Base station longitude (Optional)","type":"number","minimum":-180,"maximum":180},"timestamp":{"description":"Time of the cell measurement (UTC) (Optional)","type":"string","format":"date-time"},"nmr":{"description":"CDMA Network measurements (Optional)","type":"array","maxItems":32,"items":{"description":"CDMA Network measurement","type":"object","required":["pnoffset","channel"],"properties":{"pnoffset":{"description":"Pseudonoise offset","type":"integer","minimum":0,"maximum":511},"channel":{"description":"CDMA channel frequency","type":"integer","minimum":0,"maximum":2047},"frequency":{"description":"Deprecated. Use 'channel' instead.","type":"integer","minimum":0,"maximum":2047},"bsid":{"description":"Base Station ID (Optional)","type":"integer","minimum":0,"maximum":65535},"pilotpower":{"description":"Pilot Power (dBm) (Optional). If Pilot Power is not available directly, it needs to be calculated from Total Power in the band and Pilot Strength with respect to the Total Power. Pilot power less than -142dBm should be mapped to -142. Pilot power greater than -49dBm should be mapped to -49.","type":"integer","minimum":-142,"maximum":-49}}}}}}},"wlan":{"description":"WLAN access points","type":"array","maxItems":128,"items":{"description":"WLAN measurement","type":"object","required":["mac"],"properties":{"mac":{"description":"The MAC address of the WLAN access point. MAC-48 address with colon (:) or hyphen (-) separators, upper or lower case hex digits. Note that if the SSID contains postfix '_nomap', the AP should not be used for positioning. For privacy reasons positioning based on a single WLAN AP is not possible; there has to be at least one other matching wlan or cell.","type":"string","pattern":"^(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})|(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2})$"},"powrx":{"description":"Received signal level (dBm) at the terminal (Optional)","type":"integer","minimum":-128,"maximum":0},"band":{"description":"Frequency range (GHz). Allowed values are 2.4, 3.65, and 5. (Possible future values include 4.9, 5.9, 60, and 900.)","type":"number","enum":[2.4,3.65,5]},"timestamp":{"description":"Time of the wlan measurement (UTC) (Optional)","type":"string","format":"date-time"}}}},"gps":{"description":"Optionally supply this to improve HERE Tracking's positioning service by\ncontributing the scan data along with a GPS position.\n","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]}}}},"required":["timestamp"]},"providerMediatek":{"description":"Assistance data provider MediaTek","type":"string","enum":["mediatek"]},"epoTypeEpo":{"description":"3-30 days prediction orbit (ephemeris)","type":"string","enum":["epo"]},"epoTypeQepo":{"description":"6-hour prediction orbit (ephemeris)","type":"string","enum":["qepo"]},"epoSlice":{"description":"When getting 3-30 days prediction orbit data, it is sliced to 10 separate files, 3 days for\neach file:\n\n* epoSlice 1 for days 1-3,\n* epoSlice 2 for days 4-6,\n* ...\n* epoSlice 10 for days 28-30.\n","type":"integer","minimum":1,"maximum":10},"gnssType":{"description":"GNSS type. `gps` for GPS data only, `gpsAndGlonass` for both GPS and GLONASS assistance data.\n","type":"string","enum":["gps","gpsAndGlonass"]},"mediatekEpoConfig":{"type":"object","title":"MediaTek 3-30 days prediction orbit","properties":{"provider":{"description":"Assistance data provider MediaTek","type":"string","enum":["mediatek"]},"epoType":{"description":"3-30 days prediction orbit (ephemeris)","type":"string","enum":["epo"]},"epoSlice":{"description":"When getting 3-30 days prediction orbit data, it is sliced to 10 separate files, 3 days for\neach file:\n\n* epoSlice 1 for days 1-3,\n* epoSlice 2 for days 4-6,\n* ...\n* epoSlice 10 for days 28-30.\n","type":"integer","minimum":1,"maximum":10},"gnssType":{"description":"GNSS type. `gps` for GPS data only, `gpsAndGlonass` for both GPS and GLONASS assistance data.\n","type":"string","enum":["gps","gpsAndGlonass"]}},"required":["provider","epoType","epoSlice","gnssType"]},"mediatekQepoConfig":{"type":"object","title":"MediaTek 6-hour prediction orbit","properties":{"provider":{"description":"Assistance data provider MediaTek","type":"string","enum":["mediatek"]},"epoType":{"description":"6-hour prediction orbit (ephemeris)","type":"string","enum":["qepo"]},"gnssType":{"description":"GNSS type. `gps` for GPS data only, `gpsAndGlonass` for both GPS and GLONASS assistance data.\n","type":"string","enum":["gps","gpsAndGlonass"]}},"required":["provider","epoType","gnssType"]},"abortFlag":{"type":"boolean","description":"Flag telling if the data upload should be aborted","default":false},"dataCount":{"type":"integer","description":"Number of bytes of the data to download","minimum":1,"maximum":10485760},"dataId":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"dataName":{"type":"string","description":"Large data object name","minLength":1,"maxLength":50},"dataDescription":{"type":"string","description":"Large data object description","minLength":1,"maxLength":1000},"dataOffset":{"type":"integer","description":"Byte offset to the data to be downloaded (inclusive, starts at zero)","minimum":0},"dataSize":{"type":"integer","description":"Total size of the data in bytes","minimum":0},"dataUploadStatus":{"type":"string","description":"State of the data upload","enum":["preparing","pending","ongoing","completed","failed"]},"md5Digest":{"type":"string","description":"MD5 digest of the data (hexadecimal representation)","minLength":32,"maxLength":32},"metadataItem":{"type":"object","properties":{"dataId":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"trackingId":{"description":"ID of the device that produced this data","type":"string","minLength":1,"maxLength":50},"name":{"type":"string","description":"Large data object name","minLength":1,"maxLength":50},"description":{"type":"string","description":"Large data object description","minLength":1,"maxLength":1000},"numberOfParts":{"type":"integer","description":"Number of parts","minLength":1,"maxLength":10000},"size":{"type":"integer","description":"Total size of the data in bytes","minimum":0},"status":{"type":"string","description":"State of the data upload","enum":["preparing","pending","ongoing","completed","failed"]},"createdAt":{"description":"Time when data upload was created","type":"string","format":"date-time"},"completedAt":{"description":"Time when data upload was completed","type":"string","format":"date-time"}},"required":["dataId","trackingId","numberOfParts","status","createdAt"],"description":"Metadata for a large data object","example":{"dataId":"DATA-08343421-e2d6-4abe-8e9a-adeb5361e991","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","name":"My large data","description":"Description for my large data","size":10000,"numberOfParts":5,"status":"completed","createdAt":"2021-05-28T11:40:00Z","completedAt":"2021-05-28T12:10:00Z"}},"numberOfParts":{"type":"integer","description":"Number of parts","minLength":1,"maxLength":10000},"partItem":{"type":"object","properties":{"partNumber":{"type":"integer","description":"Part number for a large data object","minimum":1,"maximum":10000},"size":{"type":"integer","description":"Part size in bytes","minimum":0},"md5":{"type":"string","description":"MD5 digest of the data (hexadecimal representation)","minLength":32,"maxLength":32},"status":{"type":"string","description":"State of the data part upload","enum":["pending","ongoing","completed","failed"]}},"description":"Information about uploaded part","example":{"partNumber":1,"size":1,"md5":"b026324c6904b2a9cb4b88d6d61c81d1","status":"completed"}},"partNumber":{"type":"integer","description":"Part number for a large data object","minimum":1,"maximum":10000},"partSize":{"type":"integer","description":"Part size in bytes","minimum":0},"partStatus":{"type":"string","description":"State of the data part upload","enum":["pending","ongoing","completed","failed"]},"createUploadRequest":{"type":"object","properties":{"name":{"type":"string","description":"Large data object name","minLength":1,"maxLength":50},"description":{"type":"string","description":"Large data object description","minLength":1,"maxLength":1000}},"description":"Data upload creation request","example":{"name":"My large data","description":"Description for my large data"}},"createUploadResponse":{"type":"object","properties":{"dataId":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},"required":["dataId"],"description":"Response to data upload creation request","example":{"dataId":"DATA-08343421-e2d6-4abe-8e9a-adeb5361e991"}},"getMetadataResponse":{"type":"object","properties":{"dataId":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"trackingId":{"description":"ID of the device that produced this data","type":"string","minLength":1,"maxLength":50},"name":{"type":"string","description":"Large data object name","minLength":1,"maxLength":50},"description":{"type":"string","description":"Large data object description","minLength":1,"maxLength":1000},"numberOfParts":{"type":"integer","description":"Number of parts","minLength":1,"maxLength":10000},"size":{"type":"integer","description":"Total size of the data in bytes","minimum":0},"status":{"type":"string","description":"State of the data upload","enum":["preparing","pending","ongoing","completed","failed"]},"createdAt":{"description":"Time when data upload was created","type":"string","format":"date-time"},"completedAt":{"description":"Time when data upload was completed","type":"string","format":"date-time"}},"required":["dataId","trackingId","numberOfParts","status","createdAt"],"description":"Metadata for a large data object","example":{"dataId":"DATA-08343421-e2d6-4abe-8e9a-adeb5361e991","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","name":"My large data","description":"Description for my large data","size":10000,"numberOfParts":5,"status":"completed","createdAt":"2021-05-28T11:40:00Z","completedAt":"2021-05-28T12:10:00Z"}},"listPartsResponse":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"partNumber":{"type":"integer","description":"Part number for a large data object","minimum":1,"maximum":10000},"size":{"type":"integer","description":"Part size in bytes","minimum":0},"md5":{"type":"string","description":"MD5 digest of the data (hexadecimal representation)","minLength":32,"maxLength":32},"status":{"type":"string","description":"State of the data part upload","enum":["pending","ongoing","completed","failed"]}},"description":"Information about uploaded part","example":{"partNumber":1,"size":1,"md5":"b026324c6904b2a9cb4b88d6d61c81d1","status":"completed"}}}},"required":["limit","count","items"],"additionalProperties":false},"listMetadatasResponse":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"dataId":{"type":"string","description":"Large data object identifier","pattern":"^DATA-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"trackingId":{"description":"ID of the device that produced this data","type":"string","minLength":1,"maxLength":50},"name":{"type":"string","description":"Large data object name","minLength":1,"maxLength":50},"description":{"type":"string","description":"Large data object description","minLength":1,"maxLength":1000},"numberOfParts":{"type":"integer","description":"Number of parts","minLength":1,"maxLength":10000},"size":{"type":"integer","description":"Total size of the data in bytes","minimum":0},"status":{"type":"string","description":"State of the data upload","enum":["preparing","pending","ongoing","completed","failed"]},"createdAt":{"description":"Time when data upload was created","type":"string","format":"date-time"},"completedAt":{"description":"Time when data upload was completed","type":"string","format":"date-time"}},"required":["dataId","trackingId","numberOfParts","status","createdAt"],"description":"Metadata for a large data object","example":{"dataId":"DATA-08343421-e2d6-4abe-8e9a-adeb5361e991","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","name":"My large data","description":"Description for my large data","size":10000,"numberOfParts":5,"status":"completed","createdAt":"2021-05-28T11:40:00Z","completedAt":"2021-05-28T12:10:00Z"}}}},"required":["limit","count","items"],"additionalProperties":false},"provisionedDevice":{"type":"object","description":"A JSON object containing the newly created device credentials","properties":{"deviceId":{"description":"Device ID of a provisioned device","type":"string","minLength":1,"maxLength":50},"deviceSecret":{"type":"string","description":"A newly created device secret. A physical device license is a `deviceId` and `deviceSecret` credential pair."}},"required":["deviceId","deviceSecret"],"additionalProperties":false,"example":{"deviceId":"4cdafa38-fdf9-474c-8eb3-72ea276a163a","deviceSecret":"AGIhZGmU1jJS-H1ZfAZuh5U9cswyqquWVrbOKGwKN9s"}},"claimedDevice":{"type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."}},"required":["trackingId"],"additionalProperties":false,"example":{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"}},"batchProvisionedAndClaimedDevice":{"type":"object","description":"A JSON object containing the newly created device credentials","properties":{"deviceId":{"type":"string","description":"A newly created device ID. A physical device license is a `deviceId` and `deviceSecret` credential pair."},"deviceSecret":{"type":"string","description":"A newly created device secret. A physical device license is a `deviceId` and `deviceSecret` credential pair."},"externalId":{"type":"string","description":"Virtual device external ID, only present when provisioning virtual devices."},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."}},"required":["deviceId"],"additionalProperties":false,"example":{"deviceId":"4cdafa38-fdf9-474c-8eb3-72ea276a163a","deviceSecret":"AGIhZGmU1jJS-H1ZfAZuh5U9cswyqquWVrbOKGwKN9s","trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"}},"provisionedAndClaimedDevice":{"type":"object","description":"A JSON object containing the newly created device credentials","properties":{"deviceId":{"type":"string","description":"A newly created device ID."},"deviceSecret":{"type":"string","description":"A newly created device secret. A physical device license is a `deviceId` and `deviceSecret` credential pair."},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."}},"required":["deviceId"],"additionalProperties":false,"example":{"deviceId":"4cdafa38-fdf9-474c-8eb3-72ea276a163a","deviceSecret":"AGIhZGmU1jJS-H1ZfAZuh5U9cswyqquWVrbOKGwKN9s","trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"}},"responseCreateDeviceLicenses":{"type":"object","properties":{"jobId":{"type":"string","format":"uuid","description":"The batch job ID, needed for subsequent requests. Valid for 24 hours."}},"required":["jobId"],"additionalProperties":false,"example":{"jobId":"344a17a4-1b19-4420-bb6f-8400b87071fd"}},"responseJobStatus":{"type":"object","properties":{"status":{"type":"string","description":"The status of the batch job. When the job status is `complete`, use the `/registry/v2/{jobId}/results` endpoint to get the device licenses","enum":["started","complete"]},"percent":{"type":"number","description":"The percentage of the job that was completed at the time of the request.","minimum":0,"maximum":100}},"example":{"status":"started","percent":10},"additionalProperties":false,"required":["status","percent"]},"responseCount":{"type":"object","properties":{"count":{"type":"number","description":"The number of created device licenses for given `appId`","minimum":0},"updatedAt":{"type":"string","description":"Timestamp of the last `count` update"}},"example":{"count":1337,"updatedAt":"2018-04-03 12:08:56.501+00"},"additionalProperties":false,"required":["count","updatedAt"]},"responseJobResults":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"A JSON object containing the newly created device credentials","properties":{"deviceId":{"type":"string","description":"A newly created device ID. A physical device license is a `deviceId` and `deviceSecret` credential pair."},"deviceSecret":{"type":"string","description":"A newly created device secret. A physical device license is a `deviceId` and `deviceSecret` credential pair."},"externalId":{"type":"string","description":"Virtual device external ID, only present when provisioning virtual devices."},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."}},"required":["deviceId"],"additionalProperties":false,"example":{"deviceId":"4cdafa38-fdf9-474c-8eb3-72ea276a163a","deviceSecret":"AGIhZGmU1jJS-H1ZfAZuh5U9cswyqquWVrbOKGwKN9s","trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"}}},"errors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID for the device to which error occurred"},"error":{"type":"object","properties":{"error":{"type":"string","description":"An HTTP error description"},"code":{"type":"integer","description":"An HTTP status code"},"id":{"type":"string","format":"uuid","description":"An error ID that allows you to trace the error details"},"message":{"type":"string","description":"Descriptive text that explains the error"},"details":{"description":"An optional object containing more information about the error"}},"required":["error","code","id"],"example":[{"error":"Unauthorized","code":401,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee","message":"Invalid Authorization, the request lacks valid authentication credentials for the target resource.","details":{"hereErrorCode":401306}}]}}}}}}],"example":{"data":[{"deviceId":"d34d8c7f-6bd5-496a-adef-7bf2395aa456","deviceSecret":"qerjpsdujnewppqnqefvli"},{"deviceId":"c6a22c91-c185-474c-9970-5eea445d92ac","deviceSecret":"xvbnm,do0e,md;ffgdsle,d"}],"errors":[{"id":"my-device","error":{"error":"Internal Server Error","code":500,"id":"5771b3d4-95ae-4959-ac63-fbaa3d5d06ee"}}],"count":3,"pageToken":"027ffffea253d79fc"}},"provisionedDevicesResults":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"deviceId":{"type":"string","description":"The provisioned device ID"},"timestamp":{"type":"integer","description":"Provisioning time in milliseconds elapsed since 1 January 1970 00:00:00 UTC."},"externalId":{"type":"string","description":"Virtual device external ID, only present when the device is virtual"},"appId":{"type":"string","description":"Virtual device application ID, only present when the device is virtual"}},"additionalProperties":false,"required":["deviceId","timestamp"]}}},"required":["data"]}],"example":{"data":[{"deviceId":"d34d8c7f-6bd5-496a-adef-7bf2395aa456","timestamp":1548143359339},{"deviceId":"VRDE-40e87f34-59b9-4bd9-827f-f8ff5a8210e8","externalId":"my-device-1","appId":"jJHUjhytyGJHJFtftgHG","timestamp":1548143359340}],"count":2,"pageToken":"027ffffea253d79fc"}},"licenseInfoResult":{"type":"object","properties":{"licenses":{"type":"array","description":"Developer plan licenses for HERE Tracking","items":{"type":"object","properties":{"appId":{"type":"string","minLength":8,"description":"A project application id."},"realm":{"type":"string","description":"Platform application realm."},"type":{"type":"string","description":"A license type.","enum":["platformApp","platform"]},"expired":{"type":"boolean","description":"True if a license has expired."},"expiryDate":{"type":"string","description":"A license expiration date."},"quota":{"type":"object","properties":{"provisioning":{"type":"number","description":"The number of devices that can still be provisioned."}}},"features":{"type":"array","description":"Features supported by the license plan.","items":{"type":"string"}},"projectId":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"projectHrn":{"type":"string","pattern":"^hrn:here.*$","description":"Project HRN"},"projectName":{"type":"string","minLength":1,"maxLength":50,"description":"Project name"},"projectDescription":{"type":"string","minLength":1,"maxLength":250,"description":"Project description"}}}},"start":{"type":"integer","minimum":0,"default":0,"description":"Start of returned block from a list. Default 0."},"end":{"type":"integer","minimum":0,"default":100,"description":"End of returned block from a list. Default 100."},"total":{"type":"integer","minimum":0,"default":0,"description":"Total number of elements that can be received with current query."}},"required":["licenses","start","end","total"]},"startIndex":{"type":"integer","minimum":0,"default":0,"description":"Start of returned block from a list. Default 0."},"endIndex":{"type":"integer","minimum":0,"default":100,"description":"End of returned block from a list. Default 100."},"total":{"type":"integer","minimum":0,"default":0,"description":"Total number of elements that can be received with current query."},"projectType":{"type":"string","description":"Project type","enum":["tracking"]},"projectTypes":{"type":"array","description":"Project types array","minItems":1,"maxItems":4,"uniqueItems":true,"items":{"type":"string","description":"Project type","enum":["tracking"]}},"projectIds":{"type":"array","description":"Project id list","minItems":1,"maxItems":20,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"}},"responseDeviceCounts":{"type":"object","properties":{"claimedCount":{"type":"integer","minimum":0,"description":"Number or claimed devices in the project"},"provisionedCount":{"type":"integer","minimum":0,"description":"Number or provisioned devices in the project"}},"required":["claimedCount","provisionedCount"],"additionalProperties":false},"indoorPositioning":{"type":"boolean","description":"Flag telling if indoor positioning is enabled for the project."},"eventStream":{"type":"boolean","description":"Flag telling if events output stream is enabled for the project."},"ingestAutoclaim":{"type":"boolean","description":"Flag telling if virtual device autoclaim on input stream ingestions is enabled for the project."},"inputStream":{"type":"boolean","description":"Flag telling if input stream is enabled for the project."},"traceStream":{"type":"boolean","description":"Flag telling if traces output stream is enabled for the project."},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}},"licenseStatus":{"type":"object","description":"License status of the project","properties":{"expired":{"type":"boolean","description":"True if a license has expired."},"expiryDate":{"type":"string","description":"A license expiration date."}},"required":["expired"]},"licenseType":{"type":"string","description":"License type of the project"},"responseProjectFeatures":{"type":"object","properties":{"data":{"type":"object","description":"Project specific data that can be set by a project admin"},"eventStream":{"type":"boolean","description":"Flag telling if events output stream is enabled for the project."},"indoorPositioning":{"type":"boolean","description":"Flag telling if indoor positioning is enabled for the project."},"ingestAutoclaim":{"type":"boolean","description":"Flag telling if virtual device autoclaim on input stream ingestions is enabled for the project."},"inputStream":{"type":"boolean","description":"Flag telling if input stream is enabled for the project."},"licenseStatus":{"type":"object","description":"License status of the project","properties":{"expired":{"type":"boolean","description":"True if a license has expired."},"expiryDate":{"type":"string","description":"A license expiration date."}},"required":["expired"]},"licenseType":{"type":"string","description":"License type of the project"},"traceStream":{"type":"boolean","description":"Flag telling if traces output stream is enabled for the project."}},"required":["eventStream","indoorPositioning","ingestAutoclaim","inputStream","licenseStatus","licenseType","traceStream"],"additionalProperties":false},"responseAllProjectFeatures":{"type":"object","properties":{"data":{"type":"object","description":"Project specific data that can be set by a project admin"},"eventStream":{"type":"boolean","description":"Flag telling if events output stream is enabled for the project."},"indoorPositioning":{"type":"boolean","description":"Flag telling if indoor positioning is enabled for the project."},"ingestAutoclaim":{"type":"boolean","description":"Flag telling if virtual device autoclaim on input stream ingestions is enabled for the project."},"inputStream":{"type":"boolean","description":"Flag telling if input stream is enabled for the project."},"licenseStatus":{"type":"object","description":"License status of the project","properties":{"expired":{"type":"boolean","description":"True if a license has expired."},"expiryDate":{"type":"string","description":"A license expiration date."}},"required":["expired"]},"licenseType":{"type":"string","description":"License type of the project"},"projectId":{"type":"string","minLength":1,"maxLength":50,"description":"Project ID.\nAny HERE Tracking user must be a member of a Tracking project.\nThe project ID can be implicitly resolved if the user calling the API is a member of a single project.\nIf the user is a member of multiple projects, the `projectId` query parameter needs to be specified explicitly.\n"},"traceStream":{"type":"boolean","description":"Flag telling if traces output stream is enabled for the project."}},"required":["eventStream","indoorPositioning","ingestAutoclaim","inputStream","licenseStatus","licenseType","projectId","traceStream"]},"requestBodyProjectFeatures":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","description":"Object describing project features"}}},{"type":"object","properties":{"eventStream":{"type":"boolean","description":"Flag telling if events output stream is enabled. Can be updated only by a HITA user."},"indoorPositioning":{"type":"boolean","description":"Flag telling if indoor positioning is enabled. Can be updated only by a HITA user."},"ingestAutoclaim":{"type":"boolean","description":"Flag telling if virtual device autoclaim on input stream ingestions is enabled. Can be updated only by a HITA user."},"inputStream":{"type":"boolean","description":"Flag telling if input stream is enabled. Can be updated only by a HITA user."},"traceStream":{"type":"boolean","description":"Flag telling if traces output stream is enabled. Can be updated only by a HITA user."}}}]},"publicProjectFeatures":{"type":"object","properties":{"data":{"type":"object","description":"Object describing project features","properties":{"shipments":{"type":"object","description":"Object describing shipments features","properties":{"autoStartLimitAfter":{"type":"integer","description":"Defines time in minutes after the moment of `providedEtd` when shipment is still allowed to auto-start, use `-1` to disable. Default -1.","minimum":-1},"autoStartLimitBefore":{"type":"integer","description":"Defines time in minutes before the moment of `providedEtd` when shipment is already allowed to auto-start, use `-1` to disable. Default -1.","minimum":-1},"enableStateChangeEvents":{"type":"boolean","description":"If true, the shipment state change events are published to cold storage and output stream for all shipments in the project."},"ongoingRetentionPeriod":{"type":"integer","description":"Defines time in hours after a shipment is auto-cancelled if still ongoing. Default 336 (2 weeks).","minimum":0}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"requestBodyResources":{"type":"object","properties":{"filters":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"key":{"enum":["onlyShipments","onlyShipmentPlans"]}},"required":["key"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"aliasType|labelKey"},"value":{"type":"string","minLength":1,"description":"value with wildcards"},"storage":{"enum":["aliases","labels"]}},"required":["key","value","storage"],"additionalProperties":false}]},"minItems":1,"maxItems":10}},"required":["filters"],"additionalProperties":false},"responseResources":{"type":"object","properties":{"limit":{"type":"integer","description":"number of items as specified in request"},"count":{"type":"integer","description":"number of items returned in the response"},"nextPageToken":{"type":"string","description":"token to fetch the next page"},"items":{"type":"array","description":"Array of matching resource ids","items":{"type":"object","description":"matching resource id","properties":{"resourceId":{"type":"string"}},"required":["resourceId"]}},"total":{"type":"integer","description":"total number of items at the moment when the first page was requested"}},"required":["limit","count","items","total"],"additionalProperties":false,"example":{"limit":3,"count":3,"nextPageToken":"skjfgWOF7162712JHAIW8FYBCASK!/EUQHSDkuhedf","items":[{"resourceId":"SHP-ee73df84-0ab1-40fd-aac1-c39deb943de9"},{"resourceId":"SHP-ee73df84-0ab1-40fd-aac1-c39deb943df0"},{"resourceId":"SHP-ee73df84-0ab1-40fd-aac1-c39deb943df1"}],"total":10}},"responseTrackingId":{"type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"externalId":{"type":"string","description":"Virtual device external ID, only present when the device is virtual","minLength":1,"maxLength":50},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"}},"required":["trackingId"],"additionalProperties":false,"example":{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"}},"responseAllAliases":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"trackingId":{"type":"string"},"aliases":{"type":"object","description":"A map of key-value pairs where the key is the type of the alias\nand the value is an array of externalIds.\n"}},"required":["trackingId","aliases"]}}}}],"example":{"data":[{"trackingId":"HERE-c47c0d1d-89fd-4961-b341-3eb109f58d19","aliases":{"cargoId":["123-456"],"engines":["de7a0e9a-2e86-11e8-b20f-6c400892e894","dfee3968-2e86-11e8-b4e0-6c400892e894"]}},{"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6","aliases":{"engines":["5219bfc6-9779-4901-922a-e53a7c01037e"]}}]}},"responseAliases":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"object","description":"A map of key-value pairs where the key is the type of the alias\nand the value is an array of `externalId`s.\n"}}}],"example":{"data":{"cargoId":["123-456"],"engines":["de7a0e9a-2e86-11e8-b20f-6c400892e894","dfee3968-2e86-11e8-b4e0-6c400892e894"]}}},"sensorRuleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"sensorType":{"type":"string","description":"The sensor type.","enum":["attach","battery","humidity","pressure","tamper","temperature","acceleration"]},"sensorThresholdRange":{"type":"object","properties":{"begin":{"type":"number","description":"The lower threshold value."},"end":{"type":"number","description":"The upper threshold value."}},"required":["begin","end"]},"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"shipmentIds":{"type":"array","description":"Array of shipment IDs","items":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},"trackingIds":{"type":"array","description":"Array of tracking IDs (external IDs are also permitted here)","minItems":1,"maxItems":50,"items":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."}},"responseSensorRulesByJson":{"type":"object","description":"Response body contains an array of sensor rule objects, `count` indicates the number of returned sensor rules,\nand `pageToken` is the next page token if available.\n\nIf no sensor rules are found, an object with an empty data array is returned.\n","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"description":"Response body contains a single sensor rule object","type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"type":{"type":"string","description":"The sensor type.","enum":["attach","battery","humidity","pressure","tamper","temperature","acceleration"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"The lower threshold value."},"end":{"type":"number","description":"The upper threshold value."}},"required":["begin","end"]},"threshold":{"type":"object","properties":{"value":{"type":"number","description":"Threshold value"}},"required":["value"]},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","type"]}}}}]},"responseSensorRuleByJson":{"description":"Response body contains a single sensor rule object","type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"type":{"type":"string","description":"The sensor type.","enum":["attach","battery","humidity","pressure","tamper","temperature","acceleration"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"The lower threshold value."},"end":{"type":"number","description":"The upper threshold value."}},"required":["begin","end"]},"threshold":{"type":"object","properties":{"value":{"type":"number","description":"Threshold value"}},"required":["value"]},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","type"]},"responseDevicesAssociatedWithRule":{"type":"object","description":"Response body contains an array of device objects, count indicating the number of returned devices,\nand pageToken if available. If no devices are found, an object with empty data array is returned.\n","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"description":"Response body contains a single device object.\n","type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"externalId":{"type":"string","minLength":1,"maxLength":50,"description":"Virtual device external ID, only present when the device is virtual"},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"}},"required":["trackingId"]}}}}]},"responseShipmentsAssociatedWithRule":{"type":"object","description":"Response body contains an array of shipment IDs, count indicating the number of returned devices,\nand pageToken if available. If no shipments are found, an object with empty data array is returned.\n","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","description":"Array of shipment IDs","items":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}}}}]},"device":{"description":"Response body contains a single device object.\n","type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"externalId":{"type":"string","minLength":1,"maxLength":50,"description":"Virtual device external ID, only present when the device is virtual"},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"}},"required":["trackingId"]},"responseAssociationRule":{"type":"object","properties":{"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"rule":{"oneOf":[{"title":"Detention","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["detention"]},"threshold":{"description":"Detention event is triggered when the asset has been continuously stationary for longer\nthan the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Dwelling","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["dwelling"]},"threshold":{"description":"Dwelling event is triggered when the asset has been continuously inside a geofence\nfor longer than the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Utilization","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["utilization"]},"threshold":{"description":"Utilization event is triggered when the asset starts moving\nindicating that the asset is utilized, and also when the asset stops\nmoving and has been stationary for longer than the threshold duration\nindicating that the asset is unutilized.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Online","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["online"]},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type"],"additionalProperties":false}]}},"required":["ruleId","rule"]},"responseRulesByJson":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"rule":{"oneOf":[{"title":"Detention","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["detention"]},"threshold":{"description":"Detention event is triggered when the asset has been continuously stationary for longer\nthan the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Dwelling","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["dwelling"]},"threshold":{"description":"Dwelling event is triggered when the asset has been continuously inside a geofence\nfor longer than the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Online","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["online"]},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type"],"additionalProperties":false},{"title":"Shipment ETD/ETA change","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentEtaChange"]},"threshold":{"type":"object","properties":{"deviation":{"type":"integer","description":"Shipment ETA change event is triggered if shipment ETD or ETA changes\nmore than deviation seconds. If `segmentEtaChange` is set to `true`\nevent is triggered if segment ETD or ETA changes more than deviation\nseconds.\n","minimum":600,"maximum":2147483647},"segmentEtaChange":{"type":"boolean","description":"If set to `true` the event is triggered from segment level ETD/ETA changes,\notherwise from shipment level ETD/ETA changes. Default is `false`.\n"}},"required":["deviation"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Shipment Schedule","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentSchedule"]},"threshold":{"type":"object","properties":{"before":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is ahead of schedule","minimum":0,"maximum":2147483647},"after":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is behind the schedule","minimum":0,"maximum":2147483647}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Stock","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["stock"]},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"threshold":{"type":"object","properties":{"maxVolume":{"type":"integer","description":"A maximum volume of stock","minimum":0},"minVolume":{"type":"integer","description":"A minimum volume of stock","minimum":0}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","geofenceId","threshold"],"additionalProperties":false},{"title":"Utilization","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["utilization"]},"threshold":{"description":"Utilization event is triggered when the asset starts moving\nindicating that the asset is utilized, and also when the asset stops\nmoving and has been stationary for longer than the threshold duration\nindicating that the asset is unutilized.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false}]}},"required":["ruleId","rule"]}}},"required":["limit","count","items"],"additionalProperties":false},"associationConfig":{"type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":15,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false},"batchCreateBody":{"description":"Body containing arrays of ruleIds and geofenceIds to associate with the device.","type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":15,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false},"batchDeleteBody":{"description":"Body containing arrays of ruleIds and geofenceIds to disassociate from the device.","type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":15,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false},"shipmentAssociationConfig":{"type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":110,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false},"batchShipmentCreateBody":{"description":"Body containing arrays of ruleIds and geofenceIds to associate with the shipment.","type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":110,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false},"batchShipmentDeleteBody":{"description":"Body containing arrays of ruleIds and geofenceIds to disassociate from the shipment.","type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":110,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false},"shipmentRulesBody":{"type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":110,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false},"batchUpdateShipmentAssociationsBody":{"description":"Body containing arrays of ruleIds and geofenceIds to disassociate\n(oldRules) from and associate (newRules) to the shipments identified\nin shipmentIds array.\n","type":"object","properties":{"shipmentIds":{"type":"array","description":"Array of shipment IDs","items":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},"oldRules":{"description":"Rules to be disassociated from the shipments","type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":110,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false},"newRules":{"description":"Rules to be associated to the shipments","type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":110,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false}},"required":["shipmentIds","oldRules","newRules"],"additionalProperties":false},"batchUpdateDeviceAssociationsBody":{"description":"Body containing arrays of ruleIds and geofenceIds to disassociate\n(oldRules) from and associate (newRules) to the devices identified\nin trackingIds array.\n","type":"object","properties":{"trackingIds":{"type":"array","description":"Array of tracking IDs (external IDs are also permitted here)","minItems":1,"maxItems":50,"items":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."}},"oldRules":{"description":"Rules to be disassociated from the devices","type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":15,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false},"newRules":{"description":"Rules to be associated to the devices","type":"object","properties":{"ruleIds":{"type":"array","description":"Array of rule IDs","maxItems":15,"items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"geofenceIds":{"type":"array","description":"Array of geofence IDs","maxItems":15,"items":{"description":"Geofence ID","type":"string","format":"uuid"}}},"required":["ruleIds","geofenceIds"],"additionalProperties":false}},"required":["trackingIds","oldRules","newRules"],"additionalProperties":false},"shipment":{"description":"Response body contains a single shipment object.\n","type":"object","properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},"required":["shipmentId"]},"eventSourceWithoutStock":{"description":"Source of the event.\n","type":"string","enum":["attach","battery","geofence","humidity","pressure","tamper","temperature","acceleration","dwelling","detention","utilization","online","shipmentEtaChange","shipmentSchedule"]},"eventTypeDeviceCount":{"type":"number","description":"Number of devices currently in this event state.\n"},"commonDeviceCounts":{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]},"booleanCount":{"title":"attach, tamper, online","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["attach","tamper","online"]},"TRUE_TO_FALSE":{"type":"number","description":"Number of devices currently in this event state.\n"},"FALSE_TO_TRUE":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","TRUE_TO_FALSE","FALSE_TO_TRUE"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},"rangeCount":{"title":"battery, humidity, pressure, temperature","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["battery","humidity","pressure","temperature"]},"BELOW_RANGE":{"type":"number","description":"Number of devices currently in this event state.\n"},"IN_RANGE":{"type":"number","description":"Number of devices currently in this event state.\n"},"ABOVE_RANGE":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","BELOW_RANGE","IN_RANGE","ABOVE_RANGE"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},"valueCount":{"title":"acceleration","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["acceleration"]},"EVENT":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","EVENT"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},"geofenceCount":{"title":"geofence","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["geofence"]},"INSIDE_GEOFENCE":{"type":"number","description":"Number of devices currently in this event state.\n"},"OUTSIDE_GEOFENCE":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","INSIDE_GEOFENCE","OUTSIDE_GEOFENCE"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},"dwellingCount":{"title":"dwelling","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["dwelling"]},"DWELLING_STARTED":{"type":"number","description":"Number of devices currently in this event state.\n"},"DWELLING_ENDED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","DWELLING_STARTED","DWELLING_ENDED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},"detentionCount":{"title":"detention","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["detention"]},"DETENTION_STARTED":{"type":"number","description":"Number of devices currently in this event state.\n"},"DETENTION_ENDED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","DETENTION_STARTED","DETENTION_ENDED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},"utilizationCount":{"title":"utilization","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["utilization"]},"UTILIZED":{"type":"number","description":"Number of devices currently in this event state.\n"},"UNUTILIZED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","UTILIZED","UNUTILIZED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},"shipmentScheduleCount":{"title":"shipmentSchedule","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["shipmentSchedule"]},"SHIPMENT_EARLY":{"type":"number","description":"Number of devices currently in this event state.\n"},"SHIPMENT_ON_TIME":{"type":"number","description":"Number of devices currently in this event state.\n"},"SHIPMENT_DELAYED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","SHIPMENT_EARLY","SHIPMENT_ON_TIME","SHIPMENT_DELAYED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},"shipmentEtaChangeCount":{"title":"shipmentEtaChange","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["shipmentEtaChange"]},"SHIPMENT_ESTIMATE_CHANGED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","SHIPMENT_ESTIMATE_CHANGED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},"deviceCountsResponseJson":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":1000,"default":1000,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"oneOf":[{"title":"attach, tamper, online","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["attach","tamper","online"]},"TRUE_TO_FALSE":{"type":"number","description":"Number of devices currently in this event state.\n"},"FALSE_TO_TRUE":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","TRUE_TO_FALSE","FALSE_TO_TRUE"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"battery, humidity, pressure, temperature","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["battery","humidity","pressure","temperature"]},"BELOW_RANGE":{"type":"number","description":"Number of devices currently in this event state.\n"},"IN_RANGE":{"type":"number","description":"Number of devices currently in this event state.\n"},"ABOVE_RANGE":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","BELOW_RANGE","IN_RANGE","ABOVE_RANGE"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"acceleration","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["acceleration"]},"EVENT":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","EVENT"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"geofence","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["geofence"]},"INSIDE_GEOFENCE":{"type":"number","description":"Number of devices currently in this event state.\n"},"OUTSIDE_GEOFENCE":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","INSIDE_GEOFENCE","OUTSIDE_GEOFENCE"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"dwelling","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["dwelling"]},"DWELLING_STARTED":{"type":"number","description":"Number of devices currently in this event state.\n"},"DWELLING_ENDED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","DWELLING_STARTED","DWELLING_ENDED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"detention","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["detention"]},"DETENTION_STARTED":{"type":"number","description":"Number of devices currently in this event state.\n"},"DETENTION_ENDED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","DETENTION_STARTED","DETENTION_ENDED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"utilization","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["utilization"]},"UTILIZED":{"type":"number","description":"Number of devices currently in this event state.\n"},"UNUTILIZED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","UTILIZED","UNUTILIZED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"shipmentSchedule","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["shipmentSchedule"]},"SHIPMENT_EARLY":{"type":"number","description":"Number of devices currently in this event state.\n"},"SHIPMENT_ON_TIME":{"type":"number","description":"Number of devices currently in this event state.\n"},"SHIPMENT_DELAYED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","SHIPMENT_EARLY","SHIPMENT_ON_TIME","SHIPMENT_DELAYED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]},{"title":"shipmentEtaChange","allOf":[{"type":"object","properties":{"eventSource":{"type":"string","enum":["shipmentEtaChange"]},"SHIPMENT_ESTIMATE_CHANGED":{"type":"number","description":"Number of devices currently in this event state.\n"}},"required":["eventSource","SHIPMENT_ESTIMATE_CHANGED"]},{"properties":{"total":{"type":"number","description":"Number of devices associated to the respective rule or rules."},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["total"]}]}]}}}}]},"responseCreateGeofence":{"type":"object","properties":{"message":{"type":"string"},"id":{"description":"Geofence ID","type":"string","format":"uuid"}},"required":["id"]},"trainingResponse":{"type":"object","properties":{"trainingStatus":{"type":"object","properties":{"trained":{"description":"True if the POI geofence is trained","type":"boolean"},"metadata":{"type":"object","properties":{"usedWlanApCount":{"description":"The number of WLAN access point used in training","type":"number"},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"timestamp":{"description":"Training data timestamp","type":"integer","minimum":2,"maximum":4102448400000},"coordinate":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Training data position"}},"required":["usedWlanApCount"]}},"required":["trained"]}},"required":["trainingStatus"]},"trainingTestResponse":{"type":"object","properties":{"success":{"type":"boolean"},"reason":{"type":"string"},"metadata":{"type":"object","properties":{"usedWlanApCount":{"description":"The number of WLAN access point used in training","type":"number"},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"timestamp":{"description":"Training data timestamp","type":"integer","minimum":2,"maximum":4102448400000},"coordinate":{"type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"description":"Training data position"}},"required":["usedWlanApCount"]}},"required":["success"]},"resourceId":{"description":"The resource ID, for example `trackingId`, `externalId`, `geofenceId`, etc.\n","type":"string","minLength":1,"maxLength":50},"resourceType":{"description":"The resource type, for example \"device\", \"geofence\".","type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]},"responseLabelByJson":{"type":"object","properties":{"resourceId":{"description":"The resource ID, for example `trackingId`, `externalId`, `geofenceId`, etc.\n","type":"string","minLength":1,"maxLength":50},"resourceType":{"description":"The resource type, for example \"device\", \"geofence\".","type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]},"labels":{"description":"An object containing label key-value pairs.","type":"object"}},"required":["resourceId"]},"responseLabelsByJson":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"resourceId":{"description":"The resource ID, for example `trackingId`, `externalId`, `geofenceId`, etc.\n","type":"string","minLength":1,"maxLength":50},"resourceType":{"description":"The resource type, for example \"device\", \"geofence\".","type":"string","enum":["device","geofence","location","rule","sensorRule","shipment"]},"labels":{"description":"An object containing label key-value pairs.","type":"object"}},"required":["resourceId"]}}},"required":["limit","count","items"],"additionalProperties":false},"externalLocationId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100},"address":{"description":"Location address.","type":"object","properties":{"street":{"description":"Street address","type":"string","maxLength":100},"city":{"description":"City","type":"string","maxLength":100},"postalCode":{"description":"Postal code","type":"string","maxLength":10},"state":{"description":"State","type":"string","maxLength":100},"country":{"description":"Country","type":"string","maxLength":100}}},"locationVersion":{"description":"Location version","type":"integer"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}},"enableEta":{"description":"Controls ETA calculation behavior for this location.\n- always: ETA calculation enabled for both origin and destination\n- never: ETA calculation disabled for both origin and destination\n- origin: ETA calculation enabled only when used as segment origin\n- destination: ETA calculation enabled only when used as segment destination\n\nUseful for locations where arrival/departure time is unpredictable.\n","type":"string","enum":["always","never","origin","destination"],"default":"always"},"responseCreateLocation":{"type":"object","properties":{"locationId":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},"required":["locationId"]},"createLocationBody":{"type":"object","description":"Body for creating a location.","properties":{"name":{"description":"Name of the location.","type":"string","maxLength":50},"description":{"description":"Description of the location.","type":"string","maxLength":1000},"location":{"description":"Location coordinates. If optional `geofenceId` is given, the\ncoordinates from the geofence will be used and location coordinates\nare ignored.\n","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"address":{"description":"Location address.","type":"object","properties":{"street":{"description":"Street address","type":"string","maxLength":100},"city":{"description":"City","type":"string","maxLength":100},"postalCode":{"description":"Postal code","type":"string","maxLength":10},"state":{"description":"State","type":"string","maxLength":100},"country":{"description":"Country","type":"string","maxLength":100}}},"geofenceId":{"description":"Optional geofence ID associated with the location. A geofence with the specified ID must exist.","type":"string","format":"uuid"},"externalLocationId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"enableEta":{"description":"Controls ETA calculation behavior for this location.\n- always: ETA calculation enabled for both origin and destination\n- never: ETA calculation disabled for both origin and destination\n- origin: ETA calculation enabled only when used as segment origin\n- destination: ETA calculation enabled only when used as segment destination\n\nUseful for locations where arrival/departure time is unpredictable.\n","type":"string","enum":["always","never","origin","destination"],"default":"always"}},"additionalProperties":false,"anyOf":[{"required":["location"]},{"required":["geofenceId"]}],"example":{"name":"Rostock Port","description":"Rostock Port Hafenbecken C","location":{"lat":54.155147,"lng":12.12204},"geofenceId":"57713e50-194e-4803-8ca6-1e794e916094"}},"responseLocationBody":{"type":"object","description":"Location object body.","properties":{"locationId":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"externalLocationId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100},"name":{"description":"Name of the location.","type":"string","maxLength":50},"description":{"description":"Description of the location.","type":"string","maxLength":1000},"location":{"description":"Location coordinates.","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"address":{"description":"Location address.","type":"object","properties":{"street":{"description":"Street address","type":"string","maxLength":100},"city":{"description":"City","type":"string","maxLength":100},"postalCode":{"description":"Postal code","type":"string","maxLength":10},"state":{"description":"State","type":"string","maxLength":100},"country":{"description":"Country","type":"string","maxLength":100}}},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"version":{"description":"Location version","type":"integer"},"createdAt":{"description":"Timestamp indicating when this location has been created","type":"string","format":"date-time"},"updatedAt":{"description":"Timestamp indicating when this location has been updated","type":"string","format":"date-time"},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"enableEta":{"description":"Controls ETA calculation behavior for this location.\n- always: ETA calculation enabled for both origin and destination\n- never: ETA calculation disabled for both origin and destination\n- origin: ETA calculation enabled only when used as segment origin\n- destination: ETA calculation enabled only when used as segment destination\n\nUseful for locations where arrival/departure time is unpredictable.\n","type":"string","enum":["always","never","origin","destination"],"default":"always"}},"required":["locationId"],"additionalProperties":false,"example":{"locationId":"LOC-61a3fba0-cb44-405f-816c-c2aec73a1add","name":"Rostock Port","description":"Rostock Port Hafenbecken C","location":{"lat":54.155147,"lng":12.12204},"geofenceId":"57713e50-194e-4803-8ca6-1e794e916094"}},"responseAllLocations":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"type":"object","description":"Location object body.","properties":{"locationId":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"externalLocationId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100},"name":{"description":"Name of the location.","type":"string","maxLength":50},"description":{"description":"Description of the location.","type":"string","maxLength":1000},"location":{"description":"Location coordinates.","type":"object","properties":{"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"address":{"description":"Location address.","type":"object","properties":{"street":{"description":"Street address","type":"string","maxLength":100},"city":{"description":"City","type":"string","maxLength":100},"postalCode":{"description":"Postal code","type":"string","maxLength":10},"state":{"description":"State","type":"string","maxLength":100},"country":{"description":"Country","type":"string","maxLength":100}}},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"version":{"description":"Location version","type":"integer"},"createdAt":{"description":"Timestamp indicating when this location has been created","type":"string","format":"date-time"},"updatedAt":{"description":"Timestamp indicating when this location has been updated","type":"string","format":"date-time"},"metadata":{"description":"Metadata JSON object may contain additional customer specific information\n","type":"object"},"enableEta":{"description":"Controls ETA calculation behavior for this location.\n- always: ETA calculation enabled for both origin and destination\n- never: ETA calculation disabled for both origin and destination\n- origin: ETA calculation enabled only when used as segment origin\n- destination: ETA calculation enabled only when used as segment destination\n\nUseful for locations where arrival/departure time is unpredictable.\n","type":"string","enum":["always","never","origin","destination"],"default":"always"}},"required":["locationId"],"additionalProperties":false,"example":{"locationId":"LOC-61a3fba0-cb44-405f-816c-c2aec73a1add","name":"Rostock Port","description":"Rostock Port Hafenbecken C","location":{"lat":54.155147,"lng":12.12204},"geofenceId":"57713e50-194e-4803-8ca6-1e794e916094"}}},"total":{"type":"integer","description":"Total number of locations for query"}},"required":["limit","count","items"],"additionalProperties":false},"trackingIdOrShipmentId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"responseGetMetadataUser":{"type":"object","properties":{"id":{"type":"string","description":"The HERE Account ID of a user.","pattern":"^HERE-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"]},"responseGetMetadataDevices":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false},"responseGetMetadataGeofences":{"type":"object","properties":{"id":{"description":"Geofence ID","type":"string","format":"uuid"},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false},"responseGetMetadataSensorRules":{"type":"object","properties":{"id":{"description":"Sensor rule ID","type":"string","format":"uuid"},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false},"responseGetMetadataBatchDevices":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false}}},"required":["data"]}]},"responseGetMetadataBatchGeofences":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Geofence ID","type":"string","format":"uuid"},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false}}},"required":["data"]}]},"responseGetMetadataBatchSensorRules":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Sensor rule ID","type":"string","format":"uuid"},"data":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["id","data"],"additionalProperties":false}}},"required":["data"]}],"example":{"data":[{"id":"3b10404d-4e9e-456b-b262-5e98dd39d9c3","data":{"blob":"SEVSRSBUcmFja2luZw=="}},{"id":"3b10404d-4e9e-456b-b262-5e98dd39d9c3","data":{"externalId":"EXT-1234"}}],"count":2,"pageToken":"018ffffea253d64ba"}},"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"rule":{"oneOf":[{"title":"Detention","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["detention"]},"threshold":{"description":"Detention event is triggered when the asset has been continuously stationary for longer\nthan the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Dwelling","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["dwelling"]},"threshold":{"description":"Dwelling event is triggered when the asset has been continuously inside a geofence\nfor longer than the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Online","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["online"]},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type"],"additionalProperties":false},{"title":"Shipment ETD/ETA change","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentEtaChange"]},"threshold":{"type":"object","properties":{"deviation":{"type":"integer","description":"Shipment ETA change event is triggered if shipment ETD or ETA changes\nmore than deviation seconds. If `segmentEtaChange` is set to `true`\nevent is triggered if segment ETD or ETA changes more than deviation\nseconds.\n","minimum":600,"maximum":2147483647},"segmentEtaChange":{"type":"boolean","description":"If set to `true` the event is triggered from segment level ETD/ETA changes,\notherwise from shipment level ETD/ETA changes. Default is `false`.\n"}},"required":["deviation"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Shipment Schedule","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentSchedule"]},"threshold":{"type":"object","properties":{"before":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is ahead of schedule","minimum":0,"maximum":2147483647},"after":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is behind the schedule","minimum":0,"maximum":2147483647}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Stock","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["stock"]},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"threshold":{"type":"object","properties":{"maxVolume":{"type":"integer","description":"A maximum volume of stock","minimum":0},"minVolume":{"type":"integer","description":"A minimum volume of stock","minimum":0}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","geofenceId","threshold"],"additionalProperties":false},{"title":"Utilization","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["utilization"]},"threshold":{"description":"Utilization event is triggered when the asset starts moving\nindicating that the asset is utilized, and also when the asset stops\nmoving and has been stationary for longer than the threshold duration\nindicating that the asset is unutilized.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false}]},"responseRuleByJson":{"type":"object","properties":{"ruleId":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"rule":{"oneOf":[{"title":"Detention","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["detention"]},"threshold":{"description":"Detention event is triggered when the asset has been continuously stationary for longer\nthan the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Dwelling","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["dwelling"]},"threshold":{"description":"Dwelling event is triggered when the asset has been continuously inside a geofence\nfor longer than the threshold duration.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Online","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["online"]},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type"],"additionalProperties":false},{"title":"Shipment ETD/ETA change","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentEtaChange"]},"threshold":{"type":"object","properties":{"deviation":{"type":"integer","description":"Shipment ETA change event is triggered if shipment ETD or ETA changes\nmore than deviation seconds. If `segmentEtaChange` is set to `true`\nevent is triggered if segment ETD or ETA changes more than deviation\nseconds.\n","minimum":600,"maximum":2147483647},"segmentEtaChange":{"type":"boolean","description":"If set to `true` the event is triggered from segment level ETD/ETA changes,\notherwise from shipment level ETD/ETA changes. Default is `false`.\n"}},"required":["deviation"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Shipment Schedule","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["shipmentSchedule"]},"threshold":{"type":"object","properties":{"before":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is ahead of schedule","minimum":0,"maximum":2147483647},"after":{"type":"integer","description":"Allowed time deviation in seconds from the planned ETD/ETA in case the shipment is behind the schedule","minimum":0,"maximum":2147483647}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false},{"title":"Stock","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["stock"]},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"},"threshold":{"type":"object","properties":{"maxVolume":{"type":"integer","description":"A maximum volume of stock","minimum":0},"minVolume":{"type":"integer","description":"A minimum volume of stock","minimum":0}},"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","geofenceId","threshold"],"additionalProperties":false},{"title":"Utilization","type":"object","properties":{"type":{"type":"string","description":"The rule type","enum":["utilization"]},"threshold":{"description":"Utilization event is triggered when the asset starts moving\nindicating that the asset is utilized, and also when the asset stops\nmoving and has been stationary for longer than the threshold duration\nindicating that the asset is unutilized.\n","type":"object","properties":{"durationS":{"type":"integer","description":"Duration in seconds","minimum":0,"maximum":2147483647}},"required":["durationS"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Rule name"},"description":{"type":"string","maxLength":1000,"description":"Rule description"}},"required":["type","threshold"],"additionalProperties":false}]}},"required":["ruleId","rule"]},"responseCreateRule":{"type":"object","properties":{"message":{"type":"string","description":"Set to `created` if the sensor rule creation was successful."},"id":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"}},"required":["id"]},"sensorThresholdValue":{"type":"object","properties":{"value":{"type":"number","description":"Threshold value"}},"required":["value"]},"sensorRule":{"oneOf":[{"title":"Battery","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["battery"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"A minimum battery sensor alarm threshold value. Must be less than end.","minimum":0,"maximum":100},"end":{"type":"number","description":"A maximum battery sensor alarm threshold value. Must be greater than begin.","minimum":0,"maximum":100}},"required":["begin","end"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","range"],"additionalProperties":false},{"title":"Humidity","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["humidity"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"A minimum humidity sensor alarm threshold value. Must be less than end.","minimum":0,"maximum":100},"end":{"type":"number","description":"A maximum humidity sensor alarm threshold value. Must be greater than begin.","minimum":0,"maximum":100}},"required":["begin","end"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","range"],"additionalProperties":false},{"title":"Pressure","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["pressure"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"A minimum pressure sensor alarm threshold value. Must be less than end.","minimum":300,"maximum":1500},"end":{"type":"number","description":"A maximum pressure sensor alarm threshold value. Must be greater than begin.","minimum":300,"maximum":1500}},"required":["begin","end"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","range"],"additionalProperties":false},{"title":"Temperature","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["temperature"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"A minimum temperature sensor alarm threshold value. Must be less than end.","minimum":-70,"maximum":100},"end":{"type":"number","description":"A maximum temperature sensor alarm threshold value. Must be greater than begin.","minimum":-70,"maximum":100}},"required":["begin","end"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","range"],"additionalProperties":false},{"title":"Boolean","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["attach","tamper"]},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type"],"additionalProperties":false},{"title":"Acceleration","type":"object","properties":{"type":{"type":"string","description":"The sensor type.","enum":["acceleration"]},"threshold":{"type":"object","properties":{"value":{"type":"number","description":"An acceleration sensor alarm threshold value.","minimum":2,"maximum":100}},"required":["value"],"additionalProperties":false},"name":{"type":"string","maxLength":50,"description":"Sensor rule name"},"description":{"type":"string","maxLength":1000,"description":"Sensor rule description"}},"required":["type","threshold"],"additionalProperties":false}]},"responseUpdateRule":{"allOf":[{"type":"object","properties":{"message":{"type":"string","description":"The message text is \"updated\" if the sensor rule update was successful."}}},{"description":"Response body contains a single sensor rule object","type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"type":{"type":"string","description":"The sensor type.","enum":["attach","battery","humidity","pressure","tamper","temperature","acceleration"]},"range":{"type":"object","properties":{"begin":{"type":"number","description":"The lower threshold value."},"end":{"type":"number","description":"The upper threshold value."}},"required":["begin","end"]},"threshold":{"type":"object","properties":{"value":{"type":"number","description":"Threshold value"}},"required":["value"]},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","type"]}]},"paginated1000ResponseLimit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":1000},"paginated1000ResponseCount":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":1000},"shadowsUpdateBody":{"type":"object","properties":{"desired":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"description":"Contains values for the device configuration. HERE Tracking uses these values\nfor various application flows.\n","type":"object","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"additionalProperties":false}},"additionalProperties":false}},"required":["desired"],"additionalProperties":false},"requestRetrieveBatch":{"type":"array","description":"An array of trackingIds of devices","minItems":1,"maxItems":100,"items":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"example":["HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6","HERE-b0146d7b-2e46-4cee-bc71-6da03ba2da85"]},"responseRetrieveBatch":{"type":"array","items":{"type":"object","properties":{"body":{"description":"The data that Shadows persists for each device.\n","type":"object","properties":{"desired":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","maximum":4102448400000,"minimum":0,"type":"integer"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to the desired shadow.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}},"reported":{"description":"The `reported` shadow contains the most recent position, sensor readings and settings that the\ndevice has sent. The reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in `system.computed` property of the shadow.\n\nIn case the most recent telemetry did not contain all the possible\nfields, the last known information will remain in the shadow. This means that one can\nsee, for example, the last reported temperature or tracker firmware information in the reported shadow,\neven if the device did not send that information in the latest telemetry.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"description":"Timestamp of the position","type":"integer","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"online":{"description":"Online status of the device. Computed based on the device's reporting rate. If the device has not reported within the time frame of the reporting rate plus five minutes, the device is considered to be offline. If the reporting rate is not specified for the device, a default of 15 minutes is used.","type":"boolean"},"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"lastMovedTimestamp":{"description":"Timestamp referring to the trace point when the asset was last detected moving.\nAsset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"integer"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe timestamp of the newest telemetry sent by the device. Note that this is not necessarily\nthe timestamp of all the reported values in the reported shadow since the shadow retains\nvalues from previous ingestions if the latest telemetry did not conatain them.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}}}},"statusCode":{"type":"integer"},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"},"externalId":{"type":"string","minLength":1,"maxLength":50,"description":"Virtual device external ID, only present when the device is virtual"}}},"example":[{"body":{"desired":{},"reported":{"position":{"lat":40,"lng":30.2,"accuracy":30},"system":{"phoneNumber":"+4917012345"}}},"statusCode":200,"trackingId":"HERE-6da0f871-b4eb-4800-90e6-4bae86a788d6"},{"statusCode":404,"trackingId":"HERE-b0146d7b-2e46-4cee-bc71-6da03ba2da85"}]},"shadowStateResponse":{"anyOf":[{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","maximum":4102448400000,"minimum":0,"type":"integer"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to the desired shadow.\n","maximum":4102448400000,"minimum":2,"type":"integer"}},"title":"desired"},{"description":"The `reported` shadow contains the most recent position, sensor readings and settings that the\ndevice has sent. The reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in `system.computed` property of the shadow.\n\nIn case the most recent telemetry did not contain all the possible\nfields, the last known information will remain in the shadow. This means that one can\nsee, for example, the last reported temperature or tracker firmware information in the reported shadow,\neven if the device did not send that information in the latest telemetry.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"description":"Timestamp of the position","type":"integer","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"online":{"description":"Online status of the device. Computed based on the device's reporting rate. If the device has not reported within the time frame of the reporting rate plus five minutes, the device is considered to be offline. If the reporting rate is not specified for the device, a default of 15 minutes is used.","type":"boolean"},"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"lastMovedTimestamp":{"description":"Timestamp referring to the trace point when the asset was last detected moving.\nAsset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"integer"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe timestamp of the newest telemetry sent by the device. Note that this is not necessarily\nthe timestamp of all the reported values in the reported shadow since the shadow retains\nvalues from previous ingestions if the latest telemetry did not conatain them.\n","maximum":4102448400000,"minimum":2,"type":"integer"}},"title":"reported"}]},"shadowV4":{"type":"object","properties":{"shadow":{"type":"object","properties":{"desired":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"description":"Begin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","type":"string","format":"date-time"},"end":{"description":"End time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","type":"string","format":"date-time"}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"The time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","type":"string","format":"date-time"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"The time of the last update to the desired shadow.\n","type":"string","format":"date-time"}}},"reported":{"description":"The `reported` shadow contains the most recent position, sensor readings and settings that the\ndevice has sent. The reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in `system.computed` property of the shadow.\n\nIn case the most recent telemetry did not contain all the possible\nfields, the last known information will remain in the shadow. This means that one can\nsee, for example, the last reported temperature or tracker firmware information in the reported shadow,\neven if the device did not send that information in the latest telemetry.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the position"}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"online":{"description":"Online status of the device. Computed based on the device's reporting rate. If the device has not reported within the time frame of the reporting rate plus five minutes, the device is considered to be offline. If the reporting rate is not specified for the device, a default of 15 minutes is used.","type":"boolean"},"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"lastMovedTimestamp":{"description":"Timestamp referring to the trace point when the asset was last detected moving.\nAsset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"string","format":"date-time"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"description":"Timestamp for the corrected position","type":"string","format":"date-time"}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"This describes when the reported measurements were taken.\n","type":"string","format":"date-time"}}}},"required":["desired","reported"]},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"},"externalId":{"type":"string","minLength":1,"maxLength":50,"description":"Virtual device external ID, only present when the device is virtual"}},"required":["shadow"]},"responseAllShadowsV4":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":1000},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":1000},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"shadow":{"type":"object","properties":{"desired":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"description":"Begin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","type":"string","format":"date-time"},"end":{"description":"End time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","type":"string","format":"date-time"}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"The time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","type":"string","format":"date-time"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"The time of the last update to the desired shadow.\n","type":"string","format":"date-time"}}},"reported":{"description":"The `reported` shadow contains the most recent position, sensor readings and settings that the\ndevice has sent. The reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in `system.computed` property of the shadow.\n\nIn case the most recent telemetry did not contain all the possible\nfields, the last known information will remain in the shadow. This means that one can\nsee, for example, the last reported temperature or tracker firmware information in the reported shadow,\neven if the device did not send that information in the latest telemetry.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the position"}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"online":{"description":"Online status of the device. Computed based on the device's reporting rate. If the device has not reported within the time frame of the reporting rate plus five minutes, the device is considered to be offline. If the reporting rate is not specified for the device, a default of 15 minutes is used.","type":"boolean"},"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"lastMovedTimestamp":{"description":"Timestamp referring to the trace point when the asset was last detected moving.\nAsset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"string","format":"date-time"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"description":"Timestamp for the corrected position","type":"string","format":"date-time"}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"This describes when the reported measurements were taken.\n","type":"string","format":"date-time"}}}},"required":["desired","reported"]},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"},"externalId":{"type":"string","minLength":1,"maxLength":50,"description":"Virtual device external ID, only present when the device is virtual"}},"required":["shadow"]}}},"required":["limit","count","items"],"additionalProperties":false},"status":{"type":"string","enum":["pending","ongoing","completed","cancelled"]},"shipmentStatus":{"type":"string","enum":["pending","ongoing","completed","cancelled"],"description":"Status of the shipment"},"segmentStatus":{"type":"string","enum":["pending","ongoing","completed","cancelled"],"description":"Status of the segment"},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"name":{"type":"string","maxLength":50},"description":{"type":"string","maxLength":1000},"shipmentName":{"description":"Name of the shipment","type":"string","maxLength":50},"shipmentDescription":{"description":"Description of the shipment","type":"string","maxLength":1000},"shipmentExtOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"autoStart":{"description":"A boolean parameter defining whether the shipment starts upon exiting the first origin\nlocation.\n","type":"boolean"},"subShipment":{"description":"Flag telling if shipment is a subShipment.","type":"boolean"},"segmentName":{"description":"Name of the segment","type":"string","maxLength":50},"segmentDescription":{"description":"Description of the segment","type":"string","maxLength":1000},"dateV4":{"type":"string","format":"date-time"},"origin":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"durationS":{"description":"Segment duration in seconds.","type":"integer","minimum":0},"ruleIds":{"description":"Array of `ruleId`s to associate with the shipment","type":"array","items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"maxItems":10},"locationIds":{"description":"Ids for a location.","type":"object","required":["locationId"],"properties":{"locationId":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extLocationId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"}}},"updateSegmentBody":{"description":"A segment of a shipment.","type":"object","properties":{"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"description":"ID of the tracking device that produces data for the segment","type":"string","minLength":1,"maxLength":50},"providedEtd":{"type":"string","format":"date-time","description":"ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"ETA for the segment"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false,"example":{"name":"Truck transport","description":"From factory to port","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d"}},"createSegmentBody":{"description":"A segment of a shipment.","type":"object","properties":{"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"description":"ID of the tracking device that produces data for this segment","type":"string","minLength":1,"maxLength":50},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"providedEtd":{"description":"ETD for the segment","type":"string","format":"date-time"},"providedEta":{"description":"ETA for the segment","type":"string","format":"date-time"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["transportMode","origin","destination"],"additionalProperties":false,"example":{"name":"Truck transport","description":"From factory to port","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92"}},"shipmentFromBody":{"type":"object","title":"From new","description":"Body for creating a shipment","properties":{"name":{"description":"Name of the shipment","type":"string","maxLength":50},"description":{"description":"Description of the shipment","type":"string","maxLength":1000},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"autoStart":{"default":true,"description":"A boolean parameter defining whether the shipment starts upon exiting the first origin\nlocation.\n","type":"boolean"},"subShipment":{"default":false,"description":"Flag telling if shipment is a subShipment.","type":"boolean"},"ruleIds":{"description":"Array of `ruleId`s to associate with the shipment","type":"array","items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"maxItems":10},"segments":{"description":"Array of objects each defining the origin and destination of the segment.\nThe maximum number of segments in a shipment can have stricter project\nspecific limits than the maximum value documented here.\n","type":"array","minItems":1,"maxItems":100,"items":{"description":"A segment of a shipment.","type":"object","properties":{"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"description":"ID of the tracking device that produces data for this segment","type":"string","minLength":1,"maxLength":50},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"providedEtd":{"description":"ETD for the segment","type":"string","format":"date-time"},"providedEta":{"description":"ETA for the segment","type":"string","format":"date-time"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["transportMode","origin","destination"],"additionalProperties":false,"example":{"name":"Truck transport","description":"From factory to port","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92"}}},"providedEtd":{"description":"ETD for the shipment","type":"string","format":"date-time"},"providedEta":{"description":"ETA for the shipment","type":"string","format":"date-time"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["segments"],"additionalProperties":false,"example":{"name":"From Portugal to Panama","description":"A shipment consisting of four segments","autoStart":true,"subShipment":false,"ruleIds":["712dde2c-20e6-4903-82f1-0beb0dd9e4bd","6d1da24b-5187-42ab-9eb5-1e43c61b6bae"],"segments":[{"name":"Truck transport","description":"From factory to port","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92"},{"name":"Marine transport","description":"From port to another port","transportMode":"sea","trackingId":"VRTR-8b9fd950-ce19-4aaf-98d5-840a76652658","origin":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","destination":"LOC-a2dc2c70-cc3e-4fa5-ac77-4c63558e7f97"},{"name":"Truck transport","description":"From port to storage","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-a2dc2c70-cc3e-4fa5-ac77-4c63558e7f97","destination":"LOC-733deb91-efa3-41b6-9003-92845866b511"}]}},"createShipmentBody":{"type":"object","title":"From new","description":"Body for creating a shipment","properties":{"name":{"description":"Name of the shipment","type":"string","maxLength":50},"description":{"description":"Description of the shipment","type":"string","maxLength":1000},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"autoStart":{"default":true,"description":"A boolean parameter defining whether the shipment starts upon exiting the first origin\nlocation.\n","type":"boolean"},"subShipment":{"default":false,"description":"Flag telling if shipment is a subShipment.","type":"boolean"},"ruleIds":{"description":"Array of `ruleId`s to associate with the shipment","type":"array","items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"maxItems":10},"segments":{"description":"Array of objects each defining the origin and destination of the segment.\nThe maximum number of segments in a shipment can have stricter project\nspecific limits than the maximum value documented here.\n","type":"array","minItems":1,"maxItems":100,"items":{"description":"A segment of a shipment.","type":"object","properties":{"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"description":"ID of the tracking device that produces data for this segment","type":"string","minLength":1,"maxLength":50},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"providedEtd":{"description":"ETD for the segment","type":"string","format":"date-time"},"providedEta":{"description":"ETA for the segment","type":"string","format":"date-time"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["transportMode","origin","destination"],"additionalProperties":false,"example":{"name":"Truck transport","description":"From factory to port","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92"}}},"providedEtd":{"description":"ETD for the shipment","type":"string","format":"date-time"},"providedEta":{"description":"ETA for the shipment","type":"string","format":"date-time"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["segments"],"additionalProperties":false,"example":{"name":"From Portugal to Panama","description":"A shipment consisting of four segments","autoStart":true,"subShipment":false,"ruleIds":["712dde2c-20e6-4903-82f1-0beb0dd9e4bd","6d1da24b-5187-42ab-9eb5-1e43c61b6bae"],"segments":[{"name":"Truck transport","description":"From factory to port","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92"},{"name":"Marine transport","description":"From port to another port","transportMode":"sea","trackingId":"VRTR-8b9fd950-ce19-4aaf-98d5-840a76652658","origin":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","destination":"LOC-a2dc2c70-cc3e-4fa5-ac77-4c63558e7f97"},{"name":"Truck transport","description":"From port to storage","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-a2dc2c70-cc3e-4fa5-ac77-4c63558e7f97","destination":"LOC-733deb91-efa3-41b6-9003-92845866b511"}]}},"responseCreateShipment":{"type":"object","properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},"required":["shipmentId"],"additionalProperties":false,"example":{"shipmentId":"SHP-d306beb9-e110-450e-9f81-3db9de1ac001"}},"updateShipmentBody":{"type":"object","oneOf":[{"description":"Body for updating a shipment","title":"Full shipment","type":"object","properties":{"name":{"description":"Name of the shipment","type":"string","maxLength":50},"description":{"description":"Description of the shipment","type":"string","maxLength":1000},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"autoStart":{"description":"A boolean parameter defining whether the shipment starts upon exiting the first origin\nlocation.\n","type":"boolean"},"subShipment":{"description":"Flag telling if shipment is a subShipment.","type":"boolean"},"status":{"description":"Status of the shipment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"ruleIds":{"description":"Array of `ruleId`s to associate with the shipment","type":"array","items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"maxItems":10},"segments":{"description":"Array of objects each defining the origin and destination of the segment.\nThe maximum number of segments in a shipment can have stricter project\nspecific limits than the maximum value documented here.\n","type":"array","minItems":1,"maxItems":100,"items":{"description":"A segment of a shipment.","type":"object","properties":{"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"description":"ID of the tracking device that produces data for this segment","type":"string","minLength":1,"maxLength":50},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"providedEtd":{"description":"ETD for the segment","type":"string","format":"date-time"},"providedEta":{"description":"ETA for the segment","type":"string","format":"date-time"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["transportMode","origin","destination"],"additionalProperties":false,"example":{"name":"Truck transport","description":"From factory to port","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92"}}},"providedEtd":{"type":"string","format":"date-time","description":"ETD for the shipment"},"providedEta":{"type":"string","format":"date-time","description":"ETA for the shipment"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false},{"description":"Body for updating the tracker used in the shipment","title":"Tracker only","type":"object","properties":{"trackingId":{"description":"ID of the tracking device that produces data for the shipment","type":"string","minLength":1,"maxLength":50}},"additionalProperties":false}]},"updateShipmentFullBody":{"description":"Body for updating a shipment","title":"Full shipment","type":"object","properties":{"name":{"description":"Name of the shipment","type":"string","maxLength":50},"description":{"description":"Description of the shipment","type":"string","maxLength":1000},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"autoStart":{"description":"A boolean parameter defining whether the shipment starts upon exiting the first origin\nlocation.\n","type":"boolean"},"subShipment":{"description":"Flag telling if shipment is a subShipment.","type":"boolean"},"status":{"description":"Status of the shipment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"ruleIds":{"description":"Array of `ruleId`s to associate with the shipment","type":"array","items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"maxItems":10},"segments":{"description":"Array of objects each defining the origin and destination of the segment.\nThe maximum number of segments in a shipment can have stricter project\nspecific limits than the maximum value documented here.\n","type":"array","minItems":1,"maxItems":100,"items":{"description":"A segment of a shipment.","type":"object","properties":{"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"description":"ID of the tracking device that produces data for this segment","type":"string","minLength":1,"maxLength":50},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"providedEtd":{"description":"ETD for the segment","type":"string","format":"date-time"},"providedEta":{"description":"ETA for the segment","type":"string","format":"date-time"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["transportMode","origin","destination"],"additionalProperties":false,"example":{"name":"Truck transport","description":"From factory to port","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92"}}},"providedEtd":{"type":"string","format":"date-time","description":"ETD for the shipment"},"providedEta":{"type":"string","format":"date-time","description":"ETA for the shipment"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false},"updateShipmentTrackerBody":{"description":"Body for updating the tracker used in the shipment","title":"Tracker only","type":"object","properties":{"trackingId":{"description":"ID of the tracking device that produces data for the shipment","type":"string","minLength":1,"maxLength":50}},"additionalProperties":false},"responseSegmentBody":{"description":"Segment details","type":"object","properties":{"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment started"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment ended"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment created"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the segment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the segment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the segment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false,"example":{"segmentId":"SEG-156986fa-1ed9-42ab-a022-9ac1a70ae137","name":"Truck transport","description":"From factory to port","status":"pending","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","startedAt":"2020-05-27T11:40:01Z","endedAt":"2020-05-27T11:40:01Z"}},"segmentsWithShipmentId":{"description":"Segment details with shipmentId","type":"object","properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment started"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment ended"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment created"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the segment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the segment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the segment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}}},"responseRelevantShipments":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"currentExtSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"currentSegmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"currentSegmentStatus":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"currentSegmentStartedAt":{"type":"string","format":"date-time"},"currentSegmentProvidedEtd":{"type":"string","format":"date-time"},"currentSegmentProvidedEta":{"type":"string","format":"date-time"},"currentSegmentCalculatedEtd":{"type":"string","format":"date-time"},"currentSegmentCalculatedEta":{"type":"string","format":"date-time"}},"additionalProperties":false}}},"additionalProperties":false},"responseSegmentsWithShipmentId":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"description":"Segment details with shipmentId","type":"object","properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment started"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment ended"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment created"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the segment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the segment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the segment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}}}}}},"responseShipmentBody":{"description":"Shipment details","type":"object","properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the shipment","type":"string","maxLength":50},"description":{"description":"Description of the shipment","type":"string","maxLength":1000},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"autoStart":{"description":"A boolean parameter defining whether the shipment starts upon exiting the first origin\nlocation.\n","type":"boolean"},"subShipment":{"description":"Flag telling if shipment is a subShipment.","type":"boolean"},"status":{"description":"Status of the shipment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the shipment started"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the shipment has been created"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the shipment ended"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the shipment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the shipment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the shipment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the shipment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"ruleIds":{"description":"Array of `ruleId`s to associate with the shipment","type":"array","items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"maxItems":10},"segments":{"description":"Array containing the segment details","type":"array","items":{"description":"Segment details","type":"object","properties":{"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment started"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment ended"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment created"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the segment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the segment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the segment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false,"example":{"segmentId":"SEG-156986fa-1ed9-42ab-a022-9ac1a70ae137","name":"Truck transport","description":"From factory to port","status":"pending","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","startedAt":"2020-05-27T11:40:01Z","endedAt":"2020-05-27T11:40:01Z"}}},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["shipmentId","autoStart","status","segments"],"additionalProperties":false,"example":{"shipmentId":"SHP-d306beb9-e110-450e-9f81-3db9de1ac001","name":"From Portugal to Panama","description":"A shipment consisting of one segment","autoStart":true,"subShipment":false,"status":"pending","ruleIds":["712dde2c-20e6-4903-82f1-0beb0dd9e4bd","6d1da24b-5187-42ab-9eb5-1e43c61b6bae"],"segments":[{"segmentId":"SEG-156986fa-1ed9-42ab-a022-9ac1a70ae137","name":"Truck transport","description":"From factory to port","status":"pending","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","startedAt":"2020-05-27T11:40:01Z","endedAt":"2020-05-27T11:40:01Z"}]}},"responseAllShipments":{"type":"object","properties":{"limit":{"description":"Maximum number of items as specified in request","type":"integer","minimum":1,"maximum":100},"count":{"description":"Number of items returned in the response","type":"integer","minimum":0,"maximum":100},"nextPageToken":{"description":"Token to fetch the next page (if exists)","type":"string"},"items":{"type":"array","items":{"description":"Shipment details","type":"object","properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the shipment","type":"string","maxLength":50},"description":{"description":"Description of the shipment","type":"string","maxLength":1000},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"autoStart":{"description":"A boolean parameter defining whether the shipment starts upon exiting the first origin\nlocation.\n","type":"boolean"},"subShipment":{"description":"Flag telling if shipment is a subShipment.","type":"boolean"},"status":{"description":"Status of the shipment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the shipment started"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the shipment has been created"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the shipment ended"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the shipment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the shipment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the shipment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the shipment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"ruleIds":{"description":"Array of `ruleId`s to associate with the shipment","type":"array","items":{"type":"string","format":"uuid","description":"Must be a valid UUIDv4.\n"},"maxItems":10},"segments":{"description":"Array containing the segment details","type":"array","items":{"description":"Segment details","type":"object","properties":{"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user. Alternatively, a valid `shipmentId` may be used."},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment started"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment ended"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp indicating when this segment created"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the segment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Calculated ETD for the segment"},"calculatedEta":{"type":"string","format":"date-time","description":"Calculated ETA for the segment"},"etaCalculatedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when ETA was calculated"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false,"example":{"segmentId":"SEG-156986fa-1ed9-42ab-a022-9ac1a70ae137","name":"Truck transport","description":"From factory to port","status":"pending","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","startedAt":"2020-05-27T11:40:01Z","endedAt":"2020-05-27T11:40:01Z"}}},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"required":["shipmentId","autoStart","status","segments"],"additionalProperties":false,"example":{"shipmentId":"SHP-d306beb9-e110-450e-9f81-3db9de1ac001","name":"From Portugal to Panama","description":"A shipment consisting of one segment","autoStart":true,"subShipment":false,"status":"pending","ruleIds":["712dde2c-20e6-4903-82f1-0beb0dd9e4bd","6d1da24b-5187-42ab-9eb5-1e43c61b6bae"],"segments":[{"segmentId":"SEG-156986fa-1ed9-42ab-a022-9ac1a70ae137","name":"Truck transport","description":"From factory to port","status":"pending","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","startedAt":"2020-05-27T11:40:01Z","endedAt":"2020-05-27T11:40:01Z"}]}}},"total":{"type":"integer","description":"Total number of shipments for query"}},"required":["limit","count","items"],"additionalProperties":false,"example":{"limit":100,"count":1,"items":[{"shipmentId":"SHP-d306beb9-e110-450e-9f81-3db9de1ac001","name":"From Portugal to Panama","description":"A shipment consisting of one segment","autoStart":true,"subShipment":false,"status":"pending","segments":[{"segmentId":"SEG-156986fa-1ed9-42ab-a022-9ac1a70ae137","name":"Truck transport","description":"From factory to port","status":"pending","transportMode":"truck","trackingId":"HERE-540bb24b-0d57-4f8c-aeaf-6c91cd0aff8d","origin":"LOC-54531862-f87a-4b70-99a4-0e8224a56be4","destination":"LOC-7b6b15cc-2307-4875-9f66-99deb5227e92","startedAt":"2020-05-27T11:40:01Z","endedAt":"2020-05-27T11:40:01Z"}]}]}},"ingestSegmentBody":{"type":"object","description":"Last known segments for a shipment","properties":{"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"description":"ID of the tracking device that produces data for this segment","type":"string","minLength":1,"maxLength":50},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the segment started"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the segment ended"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the segment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Estimated time of departure for the segment"},"calculatedEta":{"type":"string","format":"date-time","description":"Estimated time of arrival for the segment"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false,"required":["name","transportMode","status","origin","destination"]},"ingestShipmentBody":{"description":"Last known shipment data","type":"object","properties":{"name":{"description":"Name of the shipment","type":"string","maxLength":50},"description":{"description":"Description of the shipment","type":"string","maxLength":1000},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}},"segments":{"description":"Array of objects each defining the origin and destination of the segment.\nThe maximum number of segments in a shipment can have stricter project\nspecific limits than the maximum value documented here.\n","type":"array","minItems":1,"maxItems":100,"items":{"type":"object","description":"Last known segments for a shipment","properties":{"name":{"description":"Name of the segment","type":"string","maxLength":50},"description":{"description":"Description of the segment","type":"string","maxLength":1000},"transportMode":{"description":"Transport mode of the segment","type":"string","enum":["car","truck","sea","air","barge","rail","railTruck","truckRail","bargeTruck","truckBarge","undefined"]},"status":{"description":"Status of the segment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"trackingId":{"description":"ID of the tracking device that produces data for this segment","type":"string","minLength":1,"maxLength":50},"origin":{"description":"Origin location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"destination":{"description":"Destination location of this segment","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the segment started"},"endedAt":{"type":"string","format":"date-time","description":"Timestamp indicating when the segment ended"},"providedEtd":{"type":"string","format":"date-time","description":"User provided ETD for the segment"},"providedEta":{"type":"string","format":"date-time","description":"User provided ETA for the segment"},"calculatedEtd":{"type":"string","format":"date-time","description":"Estimated time of departure for the segment"},"calculatedEta":{"type":"string","format":"date-time","description":"Estimated time of arrival for the segment"},"metadata":{"type":"object","description":"Metadata JSON object\n","example":{"priority":"high"}}},"additionalProperties":false,"required":["name","transportMode","status","origin","destination"]}}},"additionalProperties":false,"required":["segments"]},"requestShipmentIds":{"description":"Request ids for shipments","type":"object","required":["shipments"],"properties":{"shipments":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","oneOf":[{"type":"object","properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}}},{"type":"object","properties":{"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50}}}]}}},"additionalProperties":false},"responseShipmentIds":{"description":"Response containing ids for shipments","type":"object","properties":{"shipments":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["shipmentId","segments"],"properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"status":{"description":"Status of the shipment","type":"string","enum":["pending","ongoing","completed","cancelled"]},"segments":{"type":"array","items":{"type":"object","required":["segmentIndex","segmentId","origin","destination"],"properties":{"segmentIndex":{"description":"Segment index (starting from 0)","type":"integer","minimum":0},"segmentId":{"description":"Segment ID","type":"string","pattern":"^SEG-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extSegmentId":{"description":"Unique identifier for identifying the segment in external systems","type":"string","maxLength":50},"origin":{"description":"Ids for a location.","type":"object","required":["locationId"],"properties":{"locationId":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extLocationId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"}}},"destination":{"description":"Ids for a location.","type":"object","required":["locationId"],"properties":{"locationId":{"description":"Location ID","type":"string","pattern":"^LOC-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extLocationId":{"description":"External location ID in external cloud","type":"string","minLength":1,"maxLength":100},"geofenceId":{"description":"Geofence ID","type":"string","format":"uuid"}}}}}}}}},"errors":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["error"],"properties":{"shipmentId":{"description":"Shipment ID","type":"string","pattern":"^SHP-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"extOrderId":{"description":"Unique identifier for identifying the shipment in external systems","type":"string","maxLength":50},"error":{"description":"Response in case of error","properties":{"title":{"type":"string","description":"Human-readable error description","example":"Input data failed validation"},"status":{"type":"integer","description":"HTTP status code","example":400},"code":{"type":"string","description":"Error code.","example":"E902400306"},"cause":{"type":"string","description":"Human-readable explanation for the error","example":"The input data in question does not comply with validation rules"},"action":{"type":"string","description":"Human-readable description of the action that can be taken to correct the error","example":"Request a valid id"},"correlationId":{"type":"string","description":"Auto-generated id that uniquely identifies the request","example":"4199533b-6290-41db-8d79-edf4f4019a74"},"details":{"type":"array","items":{"type":"object"},"description":"Optional error details"},"error":{"type":"string","description":"Optional human-readable error message"}},"required":["title","status","code","cause","action","correlationId"]}}}}},"additionalProperties":false},"responseTraces":{"description":"The response body contains an array of traces, `count` is the number of\nreturned items and `pageToken` is the next page token if available.\n\nIf no traces are found, an object with an empty data array is returned.\n\nTraces are sorted in descending order based on their timestamps.\n","allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":1000,"default":1000,"description":"The number of items in the response."}}},{"type":"object","properties":{}},{"type":"object","properties":{"data":{"type":"array","items":{"description":"A trace sample reported by the device.","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nSpecifies the time the device telemetry measurements were taken.\n","type":"integer","minimum":2,"maximum":4102448400000},"serverTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThis describes when the measurements were processed by the backend.\n","maximum":4102448400000,"minimum":2,"type":"integer"},"trackingDisabled":{"type":"array","description":"Array containing the properties that were removed from the original device data as per disableTracking property in the device shadow. `position` refers to all positioning data and `sensors` to all reported sensor data.\n","items":{"type":"string","enum":["position","sensors","bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps","accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"]}}}}}}}],"example":{"count":2,"data":[{"timestamp":1451425708571,"position":{"lat":"52.4988217","lng":"13.35170005","alt":"86","accuracy":"25","altaccuracy":"96"},"system":{"client":{"name":"MT2503","model":"AT4H","version":"10.0.16","firmware":"10.1.1","platform":"MT6261","manufacturer":"CONCOX","hasAttachSensor":true,"hasTamperSensor":true,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTemperatureSensor":true},"reportedSensorData":{"pressureHpa":994.342,"batteryLevel":100,"temperatureC":24.48,"deviceIsAttached":true,"deviceIsStationary":true,"deviceIsTampered":false,"relativeHumidity":31.39}},"payload":{},"serverTimestamp":1451425709682},{"timestamp":1451425708216,"position":{"lat":"52.4988217","lng":"13.35170005","alt":"86","accuracy":"25","altaccuracy":"96"},"system":{"reportedSensorData":{"pressureHpa":994.416,"batteryLevel":100,"temperatureC":24.46,"deviceIsAttached":true,"deviceIsStationary":true,"deviceIsTampered":false,"relativeHumidity":31.37}},"payload":{"refAppData":{"nwpos":true,"batteryState":{"level":61,"charging":false,"temperature":26.9}}},"serverTimestamp":1451425710434}],"pageToken":"1490376144514"}},"responseLogin":{"type":"object","properties":{"userId":{"type":"string","description":"The HERE Account ID of a user.","pattern":"^HERE-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"accessToken":{"type":"string"},"expiresIn":{"type":"integer","description":"The lifetime in seconds of the access token.\nFor example 86400 means the token will expire in 24 hours from the time the response was generated.\n"},"refreshToken":{"type":"string"},"tokenType":{"type":"string","description":"The token type is bearer"},"realm":{"type":"string","description":"Current realm ID"}},"example":{"userId":"HERE-12345678-9abc-4def-0123-456789abcdef","accessToken":"h1.2...EyS_b6g3uDcKnpknGWQ","expiresIn":86400,"refreshToken":"5qlkthf8mgl5lsrn8br5vdisco","realm":"here"}},"responseTokenExchange":{"type":"object","properties":{"accessToken":{"type":"string","description":"Project-scoped access token."},"issuedTokenType":{"type":"string","description":"The type of token issued when grantType is \"urn:ietf:params:oauth:grant-type:token-exchange\"."},"tokenType":{"type":"string","description":"The token type is 'Bearer'."},"scope":{"type":"string","description":"Requested scope of the access token. Must be an HRN identifying a project that the identified user has access to."},"expiresIn":{"type":"integer","description":"The lifetime in seconds of the access token.\nFor example 86400 means the token will expire in 24 hours from the time the response was generated.\n"}},"example":{"accessToken":"h1.2...EyS_b6g3uDcKnpknGWQ","issuedTokenType":"urn:ietf:params:oauth:token-type:access_token","tokenType":"Bearer","scope":"hrn:here:authorization::myrealm:project/my-project-0000","expiresIn":86400}},"requestLogin":{"type":"object","properties":{"email":{"type":"string","minLength":1,"description":"The email address of the user"},"password":{"type":"string","minLength":1,"description":"The password of the user"},"realm":{"type":"string","minLength":1,"description":"A case-insensitive requested realm ID"}},"required":["email","password"],"description":"An object containing user's email address, password and (optionally) requested realm ID."},"requestRefresh":{"type":"object","properties":{"accessToken":{"type":"string","minLength":1,"description":"The access token obtained in a previous login"},"refreshToken":{"type":"string","minLength":1,"description":"The refresh token obtained in a previous login"}},"description":"An object containing an accessToken and a refreshToken","required":["accessToken","refreshToken"]},"requestTokenExchange":{"type":"object","properties":{"accessToken":{"type":"string","minLength":1,"description":"HERE Account user access token, obtained from login endpoint."},"scope":{"type":"string","minLength":1,"description":"Requested scope of the access token. Must be an HRN identifying a project that the identified user has access to."}},"required":["accessToken","scope"],"description":"An object containing user access token and requested scope of the access token.","example":{"accessToken":"h1.2...EyS_b6g3uDcKnpknGWQ","scope":"hrn:here:authorization::myrealm:project/my-project-0000"}},"responseListDevices":{"allOf":[{"type":"object","properties":{"pageToken":{"type":"string","description":"A token that can be used to retrieve the next page of the response."},"count":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"The number of items in the response."}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"trackingId":{"type":"string","minLength":1,"maxLength":50,"description":"This is a unique ID associated with the device data in HERE Tracking. The `trackingId` gets assigned to a device when the device is claimed by a user."},"shadow":{"description":"The data that Shadows persists for each device.\n","type":"object","properties":{"desired":{"description":"The desired shadow of the device.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"system":{"type":"object","description":"Contains device configuration settings.\n","properties":{"powerSave":{"description":"Power save mode parameters.","type":"object","properties":{"sendMs":{"description":"The rate at which to send sample results in milliseconds in power save mode. A missing or zero value means power save mode is disabled. If present must be bigger than the value of `system.rate.sendMs`.","type":"number","minimum":0}}},"rate":{"description":"This can be used to specify the rates at which the device performs certain tasks.","type":"object","properties":{"sampleMs":{"description":"The rate at which to sample signals in milliseconds. Must be smaller than the value of `system.rate.sendMs`.","type":"number","minimum":0},"sendMs":{"description":"The rate at which to send sample results in milliseconds","type":"number","minimum":0},"distanceM":{"description":"Send an update if the device has moved farther than the specified distance in meters","type":"number","minimum":0}}},"syncGeofences":{"description":"A boolean value that sets efficient geofencing on or off","type":"boolean"},"detectOutliers":{"description":"A boolean value that sets outlier detection on or off","type":"boolean"},"disableTracking":{"type":"object","description":"Tracking can be disabled and enabled by defining disableTracking object.\nIn order to disable tracking, one must at least provide the begin time of the disabling\nperiod and define either position or sensor properties one wants to disable. One can also\ndisable both position and sensors at the same time. By default tracking is enabled.\n","properties":{"periods":{"description":"Define begin and end of the disabling period. All trace points with timestamp that falls between begin and end times will be disabled according to the settings defined in the position and sensors properties.\n","type":"array","minItems":0,"maxItems":1,"title":"Array of periods","items":{"type":"object","properties":{"begin":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nBegin time of the tracking disabling period.\n\nBegin must be smaller than end. Begin must be greater or equal to current time.\nBegin can be set without end. If there exists already end time which is earlier\nthan given new begin time, the existing end time will be deleted.\n","minimum":2,"maximum":4102448400000},"end":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC\n\nEnd time of the tracking disabling period.\n\nEnd must be greater than begin. End must be greater or equal to current time.\nEnd can be set without begin if begin is already set.\n","minimum":2,"maximum":4102448400000}}}},"position":{"description":"Define position methods to be disabled","oneOf":[{"type":"string","title":"all positioning","enum":["all"],"description":"All positioning data the device sends will be removed before further processing. No geofence and location events will be generated\n"},{"type":"array","minItems":1,"title":"specified positioning methods","items":{"type":"string","enum":["bt","country","gsm","wcdma","tdscdma","lte","cdma","wlan","gps"],"description":"The items specified in the position array will be removed from the ingestion scan object before further processing. Position may be resolved by the remaining scan properties. Some geofence and location events may be generated.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the position property empty string, all positioning data will be re-enabled during the disabling period.\n"}]},"sensors":{"description":"Define sensors to be disabled","oneOf":[{"type":"string","enum":["all"],"title":"all sensors","description":"All sensor data the device sends will be removed before further processing. No sensor events will be generated.\n"},{"type":"array","minItems":1,"title":"specified sensors","items":{"type":"string","enum":["accelerationG","deviceIsAttached","deviceIsStationary","batteryIsCharging","batteryLevel","pressureHpa","relativeHumidity","deviceIsTampered","temperatureC","tiltDegree"],"description":"The items specified in the sensors array will be removed from the ingestion system.reportedSensorData object before further processing. Sensor events will not be generated for the disabled sensors.\n"}},{"type":"string","title":"re-enable","enum":[""],"description":"By setting the sensors property empty string, all sensors data will be re-enabled during the disabling period.\n"}]}}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"lastModifiedGeofenceTimestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to geofences that device is associated\nwith. This value is zero when device hasn't yet been associated with\nany geofence. This is set by HERE Tracking when any geofences\nassociated with the device is modified or removed. Also adding and\nremoving geofence associations update this value.\n","maximum":4102448400000,"minimum":0,"type":"integer"},"sensorAlarmConfig":{"description":"The device sensors alarm configuration.\n","type":"object","properties":{"alertTemperatureCMin":{"type":"number","description":"A lower threshold value for temperature in degrees Celsius."},"alertTemperatureCMax":{"type":"number","description":"An upper threshold value for temperature in degrees Celsius."},"alertRelativeHumidityMin":{"type":"number","description":"A lower threshold value for relative humidity percentage."},"alertRelativeHumidityMax":{"type":"number","description":"An upper threshold value for relative humidity percentage."},"alertAccelerationGMin":{"type":"number","description":"A lower threshold value for acceleration in g-forces."},"alertAccelerationGMax":{"type":"number","description":"An upper threshold value for acceleration in g-forces."},"alertTiltDegreeMin":{"type":"number","description":"A lower threshold value for tilt in degrees."},"alertTiltDegreeMax":{"type":"number","description":"An upper threshold value for tilt in degrees."},"alertPressureHpaMin":{"type":"number","description":"A lower threshold value for pressure in hectopascals."},"alertPressureHpaMax":{"type":"number","description":"An upper threshold value for pressure in hectopascals."},"alertBatteryLevelPMin":{"type":"number","description":"A lower threshold value for battery level percentage."},"alertBatteryLevelPMax":{"type":"number","description":"An upper threshold value for battery level percentage."},"isAttachAlertEnabled":{"type":"boolean","default":false,"description":"True if attach sensor alert in device is enabled."},"isTamperAlertEnabled":{"type":"boolean","default":false,"description":"True if tamper sensor alert in device is enabled."}}},"wlanConnectivityEnabled":{"description":"A boolean value that sets wlan connectivity on or off","type":"boolean"},"wlanConfigurations":{"description":"An array of objects that holds wlan configurations","type":"array","minItems":0,"maxItems":10,"items":{"type":"object","properties":{"securityMode":{"description":"Selected security mode","type":"string","enum":["none","wpa2psk"]},"ssid":{"description":"Name given to a WLAN that is used by the client to access a WLAN network. Please note that the SSID is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity.","type":"string","minLength":1,"maxLength":32},"password":{"description":"WLAN password. Please note that the password is stored to the device unencrypted. Do not use secure private networks, such as Intranet, for tracker WLAN connectivity. Password is required if security mode is other then 'none'.","type":"string","minLength":8,"maxLength":63},"ssidIsHidden":{"description":"Flag that informs if SSID is hidden","type":"boolean"}},"additionalProperties":false,"required":["securityMode","ssid"]}},"sensorLoggingEnabled":{"description":"Flag that sets sensor logging on or off","type":"boolean"},"sensorLoggingConfigurations":{"description":"An array of objects that holds sensor logging configurations","type":"array","minItems":0,"maxItems":5,"items":{"type":"object","properties":{"type":{"description":"Type of single sensor logging configuration","type":"string","enum":["acceleration","pressure","temperature","humidity","gnss"]},"samplingFrequency":{"description":"Sampling frequrency of single sensor loggin configuration (in milliseconds)","type":"number","minimum":1}},"additionalProperties":false,"required":["type"]}},"sensorLoggingTag":{"description":"Tag for the logged sensor data.","type":"string","minLength":1,"maxLength":50}},"required":["stateVersion","lastModifiedGeofenceTimestamp"]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe time of the last update to the desired shadow.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}},"reported":{"description":"The `reported` shadow contains the most recent position, sensor readings and settings that the\ndevice has sent. The reported shadow may also contain additional properties generated by HERE\nTracking based on the device-ingested telemetry.\nSuch properties are stored in `system.computed` property of the shadow.\n\nIn case the most recent telemetry did not contain all the possible\nfields, the last known information will remain in the shadow. This means that one can\nsee, for example, the last reported temperature or tracker firmware information in the reported shadow,\neven if the device did not send that information in the latest telemetry.\n","type":"object","properties":{"payload":{"type":"object","description":"A free format JSON object.\nThe maximum size is 1000B.\n"},"position":{"type":"object","description":"The device location","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"alt":{"description":"Altitude in meters (referenced to the WGS-84 ellipsoid) negative or positive.","type":"number"},"altaccuracy":{"description":"Uncertainty of the altitude estimate in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"confidence":{"description":"Confidence level in percent for the accuracy/uncertainty. If not specified, the default is 68 (this corresponds to a 68% probability that the true position is within the accuracy/uncertainty radius of the position; the higher the number, the greater the confidence level).","type":"integer","minimum":50,"maximum":95},"heading":{"description":"GPS/GNSS heading in degrees, clockwise from true north. You must specify a value for this item when you specify a value for speed.","type":"integer","minimum":0,"maximum":359},"floor":{"description":"The building where the measurements were taken","type":"object","required":["id","name","level"],"properties":{"level":{"description":"The floor in the building in integer format","type":"number","minimum":-999,"maximum":999},"id":{"description":"The building id","type":"string","minimum":1,"maximum":100},"name":{"description":"The building name","type":"string","minimum":1,"maximum":255}}},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"satellitecount":{"description":"Number of GPS/GNSS satellites used for the calculation of the position fix. ('gnss' position type only)","type":"integer","minimum":1,"maximum":50},"speed":{"description":"GPS/GNSS speed of the device (m/s). One must specify a value for this item when one specifies a value for heading.","type":"integer","minimum":0},"type":{"description":"Position type, 'gnss' (satellite based), 'cell' or 'wlan' (network based)","type":"string"},"wlancount":{"description":"The total number of observed WLAN APs in the scan used for producing the position. ('wlan' position type only)","type":"integer","minimum":1,"maximum":254},"timestamp":{"description":"Timestamp of the position","type":"integer","minimum":2,"maximum":4102448400000}},"required":["lat","lng","accuracy"]},"system":{"allOf":[{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The phone number of the device's SIM card in the international E.164 format. All the country codes should be prefixed a with \"+\" instead of \"00\".\n","example":"+491234567890"},"imsi":{"type":"string","pattern":"^[0-9]{1,15}$","description":"The IMSI of the device's SIM card.\n","example":"123456789012345"},"iccid":{"type":"string","minLength":18,"maxLength":22,"description":"SIM card integrated circuit card identifier (ICCID)"},"client":{"description":"Information about the client device.\n","type":"object","properties":{"manufacturer":{"description":"Manufacturer of the device (hardware)","type":"string","minLength":2,"maxLength":50},"model":{"description":"Model of the device (hardware)","type":"string","minLength":1,"maxLength":50},"firmware":{"description":"Device firmware version information","type":"string","minLength":1,"maxLength":150},"name":{"description":"Name of the client software accessing the HERE API","type":"string","minLength":3,"maxLength":50},"version":{"description":"Version of the client software in format X.Y.Z, where X [0..255] is a major, Y [0..255] is a minor, and Z [0..65535] is a build version number. Increase the version/build number for each release of the client.","type":"string","minLength":3,"maxLength":60},"platform":{"description":"Software platform information of the device, for example operating system name and version.","type":"string","minLength":3,"maxLength":50},"modules":{"description":"Software information of all updateable chips.","type":"array","maxItems":10,"items":{"description":"Software information of an updateable chip.","type":"object","properties":{"manufacturer":{"type":"string","description":"Manufacturer name","minLength":2,"maxLength":50},"model":{"type":"string","description":"Model or chip name","minLength":1,"maxLength":50},"firmwareVersion":{"type":"string","description":"Installed firmware version","minLength":3,"maxLength":60}}}},"diskquota":{"description":"Available disk quota in kilobytes.","type":"number","minimum":0},"diagnosticscode":{"description":"Device diagnostics code.","type":"number"},"homenetwork":{"description":"Information about subscriber home network - 3GPP MCC+MNC or 3GPP2 SID+NID. Dual-SIM devices can provide information on both subscriptions.","type":"array","maxItems":2,"items":{"description":"Network information. Either MCC + MNC or SID + NID attribute pair is required.","type":"object","properties":{"mcc":{"description":"Mobile Country Code","type":"integer","minimum":200,"maximum":999},"mnc":{"description":"Mobile Network Code","type":"integer","minimum":0,"maximum":999},"sid":{"description":"System Id, SID","type":"integer","minimum":1,"maximum":32767},"nid":{"description":"Network Id, NID","type":"integer","minimum":0,"maximum":65535}}}},"hasAttachSensor":{"type":"boolean","description":"True if a device has a sensor to detect if the device is attached to or detached from an object."},"hasNoBattery":{"type":"boolean","description":"False if a device has a battery."},"hasHumiditySensor":{"type":"boolean","description":"True if a device has a sensor to measure humidity."},"hasPressureSensor":{"type":"boolean","description":"True if a device has a sensor to measure pressure."},"hasTamperSensor":{"type":"boolean","description":"True if a device has a sensor to detect if device is disassembled."},"hasTemperatureSensor":{"type":"boolean","description":"True if a device has a sensor to measure temperature."},"hasAccelerometerSensor":{"type":"boolean","description":"True if a device has a sensor to measure acceleration."},"accelerometerSensorRange":{"description":"Specifies the range of measurable acceleration, representation\nunit g (9.8 m/s^2). If more than one accelerometer is available,\neach element in the list will represent individual accelerometer.\nEach value represents a single \"+/-\" range.\nFor example, value 2 means that sensor is capable to measure\nacceleration within the range of [-2 g, +2 g].\n","type":"array","maxItems":5,"items":{"type":"integer","minimum":-1000,"maximum":1000}}},"example":{"manufacturer":"Samsung","model":"SM-G930F","firmware":"heroltexx...","name":"HERE Tracker","version":"1.6.1","platform":"Android","diskquota":256,"diagnosticscode":0,"homenetwork":[],"hasAttachSensor":true,"hasNoBattery":false,"hasHumiditySensor":true,"hasPressureSensor":true,"hasTamperSensor":true,"hasTemperatureSensor":true,"hasAccelerometerSensor":true,"accelerometerSensorRange":[2]}},"stateVersion":{"description":"The version of the state of a device. This should be incremented only by HERE Tracking.\n","type":"integer","minimum":0},"reportedSensorData":{"description":"The last known device sensor data reported by the device.\n","type":"object","properties":{"accelerationG":{"type":"number","description":"A g-force value of acceleration.","minimum":-100,"maximum":100},"deviceIsAttached":{"type":"boolean","description":"True if device is attached to an object."},"deviceIsStationary":{"type":"boolean","description":"True if device hasn't detected movement."},"batteryIsCharging":{"type":"boolean","description":"True if device battery is charging."},"batteryLevel":{"type":"integer","description":"A value of percentage battery level.","minimum":0,"maximum":100},"pressureHpa":{"type":"number","description":"A value of pressure in hectopascal.","minimum":300,"maximum":1500},"relativeHumidity":{"type":"number","description":"A value of relative humidity in percent.","minimum":0,"maximum":100},"deviceIsTampered":{"type":"boolean","description":"True if device is tampered."},"temperatureC":{"type":"number","description":"A value of temperature in celcius.","minimum":-70,"maximum":100},"tiltDegree":{"type":"number","description":"A value of tilt in degrees."}}},"mode":{"description":"Tracker mode status of the device.\nWhen a tracker is in normal mode, it can send telemetry and, for\nexample, use its GNSS receiver if it has one.\nA tracker switches into flight mode once it detects that it's in an\nairplane, and leaves that mode once the airplane lands.\nTransport mode has to be triggered by the user, and it's used,\nfor example, during shipping from continent to another.\nSleep mode is used when a tracker is stored in a warehouse, and\nit's triggered by entering or leaving some defined geofence.\nPower save mode can be enabled with `system.powerSave.sendMs`\nproperty in the desired shadow and when enabled the device enters\npower save mode when the device is not moving.\n","type":"string","enum":["unknown","normal","flight","transport","sleep","powerSave"]}},"description":"Contains device-reported sensor data and device configuration settings.\n`stateVersion` property contains the version of the last\nknown `desired` state seen by the device.\n"},{"type":"object","properties":{"computed":{"description":"Values computed by HERE Tracking based on other data available.","properties":{"online":{"description":"Online status of the device. Computed based on the device's reporting rate. If the device has not reported within the time frame of the reporting rate plus five minutes, the device is considered to be offline. If the reporting rate is not specified for the device, a default of 15 minutes is used.","type":"boolean"},"moving":{"description":"Asset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"boolean"},"lastMovedTimestamp":{"description":"Timestamp referring to the trace point when the asset was last detected moving.\nAsset is considered moving if the positions of two consecutive trace points differ more\nthan the combined positioning accuracy + 100 meters.\n","type":"integer"},"outlier":{"description":"Indicates that HERE Tracking detected position to be a possible outlier.\n","type":"object","properties":{"reason":{"description":"Reason why position was considered to be an outlier.","type":"string"},"correctedPosition":{"description":"HERE Tracking estimate of more correct position.","type":"object","properties":{"accuracy":{"description":"Uncertainty circle radius in meters (degree of confidence according to the 'confidence' parameter).","type":"number","minimum":0},"lat":{"description":"Latitude in WGS-84 format, decimal representation ranging from -90 to 90.","type":"number","minimum":-90,"maximum":90},"lng":{"description":"Longitude in WGS-84 format, decimal representation ranging from -180 to 180.","type":"number","minimum":-180,"maximum":180},"timestamp":{"type":"integer","description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.","minimum":2,"maximum":4102448400000}},"required":["accuracy","lat","lng"]}},"required":["reason"]}}}}}]},"timestamp":{"description":"Milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n\nThe timestamp of the newest telemetry sent by the device. Note that this is not necessarily\nthe timestamp of all the reported values in the reported shadow since the shadow retains\nvalues from previous ingestions if the latest telemetry did not conatain them.\n","maximum":4102448400000,"minimum":2,"type":"integer"}}}}},"externalId":{"type":"string","minLength":1,"maxLength":50,"description":"Virtual device external ID, only present when the device is virtual"},"appId":{"type":"string","minLength":8,"description":"Virtual device application ID, only present when the device is virtual"}}}}}}]}},"securitySchemes":{"ApiKey":{"type":"apiKey","in":"query","name":"apiKey","description":"A key generated specifically to authenticate API requests.\n\nFor more information on how to get an API key, see the\n[Identity & Access Management Developer Guide](https://www.here.com/docs/bundle/identity-and-access-management-developer-guide/page/README.html).\n"},"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\nUsers are authenticated using an OAuth 1.0 bearer token obtained using the `/users/v2/login` endpoint.\n\nDevices are authenticated using an OAuth 1.0 bearer token obtained using the `/v2/token` endpoint.\n\n**Make a request using the bearer token for authentication**\n\nMake a request with an `Authorization` header containing the obtained bearer token.\n\nExample:\n\n```\n Authorization: Bearer h1.yxPIksZ0ViLq77f1Nh-9cg.NVgGBZVlCU8G7kjV_...\n```\n\n> **Note:** For the available authentication options, see the [Identity & Access Management Guide](https://www.here.com/docs/bundle/identity-and-access-management-developer-guide/page/README.html).\n"},"UserToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"This token is obtained using user's realm, username and password and then further scoped to a specific project.\n\nFirst obtain access token from [/users/v2/login endpoint](#tag/Users/paths/~1users~1v2~1login/post).\nThen use [/users/v2/tokenExchange endpoint](#tag/Users/paths/~1users~1v2~1tokenExchange/post) to convert\nyour user access token into a project-scoped user access token.\n\nOnce done, make a request with an `Authorization` header containing the scoped access token.\n\nExample:\n\n```\n Authorization: Bearer h1.xikjhDyJsE17VLhPXiu.fm3WsNOunstXH78RvU8_...\n```\n"},"ClientToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"This token is obtained using application's OAuth 2.0 credentials (key + secret) and then scoped to a specific project.\n\nFollow [instructions here](https://www.here.com/docs/bundle/identity-and-access-management-developer-guide/page/topics/plat-token.html)\nto create your application credentials and obtain the token using OLP CLI. With an exception\nthat when getting the token you need to provide also project's HRN value:\n\n```\n olp api token get --scope {PROJECT_HRN}\n```\n\nOnce done, make a request with an `Authorization` header containing the scoped access token.\n\nExample:\n\n```\n Authorization: Bearer h1.PGEVzQmaoW5pyBYUlWu.SQoSCF7qpToEFMHgSlJ_...\n```\n"},"DeviceToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"This access token is obtained from [/v2/token endpoint](#tag/Ingestion/paths/~1v2~1token/post) using a signed request.\n\n> **Note:** Only a small subset of our endpoints support this token type and is only useful for hardware devices.\n> You probably won't need this.\n"},"signedRequest":{"type":"http","scheme":"oauth","description":"HERE Tracking requires that you sign your requests for tokens. The signature method uses the OAuth 1.0 standard. For more information on this standard, see the [OAuth Core 1.0](https://oauth.net/core/1.0/) specification.\n\n> **Note:** You must create a new signature for each token request to HERE Tracking. Signatures can only be used once.\n\n**Create the Signature Base String**\n\nThe first step in creating a signature is to create the signature base string. This string contains the parameters to use when generating the signature.\n\n*1. To begin, make sure you have the information listed in the following table.*\n\n| Parameter | Description |\n| ------------------------ | -----------------------------------------|\n| oauth\\_consumer\\_key | The device ID for which you want to generate a token. |\n| oauth\\_signature\\_method | Always use \"HMAC-SHA256\". |\n| oauth\\_timestamp | The number of seconds since the Unix epoch at the point the request is generated. This must be within 10 seconds of the timestamp returned by the `/v2/timestamp` endpoint. |\n| oauth\\_nonce | A unique string for this signature. The string cannot have been used in a previous signature. Each token generation request to HERE Tracking must have a unique signature, and the value in this parameter is what is used to ensure the signature is unique. |\n| oauth\\_version | Always use \"1.0\". |\n\n*2. Combine these values into a single string by following these steps:*\n\n 1. URL encode every key and value.\n 2. Sort the list of key-value pairs alphabetically by key.\n 3. Concatenate each key/value pair, separating each with an ampersand character (\"&\").\n\nThe result is a parameter string that looks like this (line breaks are added for legibility):\n\n ```\n oauth_consumer_key=47164fb0-b7b3-49e8-891b-650270b82cf2\n &oauth_nonce=LIIpk4\n &oauth_signature_method=HMAC-SHA256\n &oauth_timestamp=1513634609\n &oauth_version=1.0\n ```\n\n*3. Combine the HTTP method, base URL, and parameter string into a single string called the \"base string\". This will be the string from which the signature is generated. The base string is in this format:*\n\n ```\n POST&https://tracking.api.here.com/v2/token&\n ```\n\n The base string consists of:\n\n 1. The HTTP method in caps (POST) followed by an ampersand (\"&\")\n 2. The URL of the HERE Tracking token endpoint followed by an ampersand (\"&\")\n 3. The URL-encoded parameter string.\n\n For example (line breaks are added for legibility):\n\n ```\n POST\n &https%3A%2F%2Ftracking.api.here.com%2Fv2%2Ftoken\n &oauth_consumer_key%3D47164fb0-b7b3-49e8-891b-650270b82cf2%26\n oauth_nonce%3DLIIpk4%26oauth_signature_method%3DHMAC-SHA256%26\n oauth_timestamp%3D1513634609%26oauth_version%3D1.0\n ```\n\n > **Note:** The URL-encoded base string should contain exactly two ampersands (\"&\").\n\n**Create the signature**\n\nThe signing key used to sign the base string is the `deviceSecret` followed by an ampersand (\"&\").\n\nCreate the signature by passing the signature base string and the signing key to the `HMAC-SHA256` hashing algorithm and converting the result to a `base64` string. Then, use the signature to request a token.\n\n**Request the token**\n\nMake a `POST` request to this endpoint with an `Authorization` header constructed from the above parameters and the generated signature.\n\nExample:\n\n```\n Authorization: OAuth oauth_consumer_key=\"47164fb0-b7b3-49e8-891b-650270b82cf2\",\n oauth_signature_method=\"HMAC-SHA256\",\n oauth_timestamp=\"1513634609\",\n oauth_nonce=\"LIIpk4\",\n oauth_version=\"1.0\",\n oauth_signature=\"pQ9EJX14L736B%2Br7uZl4yQlO6Xw%3D\"\n```\n"}}}}