here.com – tracking
HERE Tracking is a cloud product designed to address location tracking problems for a wide range of Location IoT industry verticals.
HERE Tracking also includes end-user mobile and web applications that can be used to demonstrate the product.
- Homepage
- https://api.apis.guru/v2/specs/here.com:tracking/2.1.191.json
- Provider
- here.com:tracking / tracking
- OpenAPI version
- 3.0.0
- Spec (JSON)
- https://api.apis.guru/v2/specs/here.com/tracking/2.1.191/openapi.json
- Spec (YAML)
- https://api.apis.guru/v2/specs/here.com/tracking/2.1.191/openapi.yaml
Tools (218)
Extracted live via the executor SDK.
-
aliases.deleteAliasesV2TrackingIdDeletes all aliases of a device identified by the
trackingId.Note that one needs to supply an HTTP header
x-confirmwith the valuetrueto force the deletion. If the header is not provided, the request will fail. -
aliases.deleteAliasesV2TrackingIdTypeDeletes all aliases of a specified type for a device identified by the
trackingId.Note that one needs to supply an HTTP header
x-confirmwith the valuetrueto force the deletion. If the header is not provided, the request will fail. -
aliases.deleteAliasesV2TrackingIdTypeExternalIdDeletes the specified alias.
-
aliases.getAliasesV2Gets all aliases of a project.
If
typequery parameter is provided, the response will contain only aliases of the given type.If
externalIdquery parameter is specified, the response will contain only aliases that match the given external ID. The following wildcards can be used: '*' matches any number of any characters, '?' matches a single character.If
afterquery parameter is provided, the successful response will only contain aliases that were created after the specified timestamp. ParametersafterandpageTokenare mutually exclusive and cannot be provided at the same time.The returned results are sorted in ascending order by the alias creation time. *
-
aliases.getAliasesV2HealthGets service health
-
aliases.getAliasesV2TrackingIdTypeGets all aliases of a specified type for a device identified by the
trackingId. -
aliases.getAliasesV2VersionGets service version
-
aliases.putAliasesV2TrackingIdBatchCreates a set of aliases for a device identified by the
trackingId. An alias must be unique within a project. -
aliases.putAliasesV2TrackingIdTypeExternalIdCreates an alias for the
trackingId. An alias must be unique within a project. -
aliases.v2.getAliasesV2TrackingIdGet0010uutlGets the
trackingIdassociated with an alias. -
aliases.v2.getAliasesV2TrackingIdGet00na56krGets all aliases of a device identified by the
trackingId.If the request is supplied with a
typequery parameter, the response will contain only aliases of the given type. -
associations.deleteAssociationsV3TrackingIdGeofencesGeofenceIdDeletes an association between the geofence
geofenceIdand the devicetrackingId. -
associations.deleteAssociationsV3TrackingIdRulesRuleIdDeletes an association between the rule
ruleIdand the devicetrackingId. -
associations.deleteAssociationsV3TrackingIdSensorsSensorRuleIdDeletes the association between the sensor rule
sensorRuleIdand the devicetrackingId. -
associations.getAssociationsV3GeofencesGeofenceIdGets all devices associated with the geofence
geofenceId. -
associations.getAssociationsV3HealthGets service health
-
associations.getAssociationsV3RulesRuleIdGets all devices associated with the rule
ruleId. -
associations.getAssociationsV3SensorsSensorRuleIdGets all devices associated with the sensor rule
sensorRuleId. -
associations.getAssociationsV3TrackingIdGeofencesGets a list of geofences associated with the device
trackingId. -
associations.getAssociationsV3TrackingIdRulesGets a list of rules associated with the device
trackingId. -
associations.getAssociationsV3TrackingIdSensorsGets a list of sensor rules associated with the device
trackingId. -
associations.getAssociationsV3VersionGets service version
-
associations.postAssociationsV3DevicesTrackingIdBatchCreateAssociates rules with the device
trackingId. -
associations.postAssociationsV3DevicesTrackingIdBatchDeleteDisassociates rules from the device identified by
trackingId. -
associations.putAssociationsV3DevicesBatchUpdateUpdates rules associated with devices.
-
associations.putAssociationsV3TrackingIdGeofencesGeofenceIdAssociates the device with
trackingIdto the geofence withgeofenceId. Whenever the device enters or exits the associated geofence, an event is generated. -
associations.putAssociationsV3TrackingIdRulesRuleIdAssociates the device with
trackingIdto the rule withruleId. Whenever the device behaviour triggers the rule, an event is generated. -
associations.putAssociationsV3TrackingIdSensorsSensorRuleIdAssociates the device with
trackingIdto the sensor rule withsensorRuleId.A single device can only have one sensor rule per sensor type associated.
The associated sensor rule settings will be automatically synchronised to the
system.sensorAlarmConfigsection of the devicedesired shadow.Every time the associated sensor rule gets triggered by the device ingestion, an event will be generated.
-
bulkJobs.getBulkjobsV4DeviceUploadsGets the bulk upload job IDs for a project. The jobs and their results are available for one week.
-
bulkJobs.getBulkjobsV4DeviceUploadsJobIdResultsGets bulk upload results
-
bulkJobs.getBulkjobsV4DeviceUploadsJobIdStatusGets bulk upload status and progress
-
bulkJobs.getBulkjobsV4HealthGets service health
-
bulkJobs.getBulkjobsV4VersionGets service version
-
bulkJobs.patchBulkjobsV4DeviceUploadsJobIdUpdates bulk upload status. In case current status is pending or ongoing, user can perform action
cancel, which cancels the bulk upload processes of the job that are still in the pending state. In case current status is completed, failed or cancelled, user can perform actionacknowledgedwhich can be used to mark the job acknowledged. -
bulkJobs.postBulkjobsV4DeviceUploadsStarts bulk upload process
-
c2C.deleteC2cV4ConnectorsConnectorIdDeletes the connector
connectorId. -
c2C.deleteC2cV4ConnectorsConnectorIdExtDevicesBatchRemoves a batch of external devices from the connector
connectorId. -
c2C.deleteC2cV4ConnectorsConnectorIdExtDevicesExternalDeviceIdRemoves the external device
externalDeviceIdfrom the connectorconnectorId. -
c2C.getC2cV4ConnectorsGets a list of cloud-to-cloud connectors for the project
projectId. -
c2C.getC2cV4ConnectorsConnectorIdGets connector info for the connector
connectorId. -
c2C.getC2cV4ConnectorsConnectorIdExtDevicesGets all external devices under the connector
connectorId. -
c2C.getC2cV4ConnectorsExtDevicesExternalDeviceIdGets identifiers for connectors to which an external device belongs.
-
c2C.getC2cV4DriversGets all cloud-to-cloud drivers that a user is authorized to use.
-
c2C.getC2cV4HealthGets service health
-
c2C.getC2cV4VersionGets service version
-
c2C.postC2cV4CallbackExternal clouds can call this endpoint through their callback mechanism to report device updates. The format of the payload is driver specific.
-
c2C.postC2cV4ConnectorsRegisters a cloud-to-cloud connector between the HERE Tracking project
projectIdand an external cloud using the cloud-to-cloud driverdriverIdand the external cloud access credentials. -
c2C.postC2cV4ConnectorsConnectorIdExtDevicesAdds external devices to the connector
connectorId. -
c2C.postC2cV4DriversDriverIdVerifyExternal cloud credentials to be validated for structure and fields provided. Verify external cloud authentication status.
-
c2C.putC2cV4ConnectorsConnectorIdUpdates the connector
connectorIdinfo. -
deviceAssociations.getDeviceAssociationsV2HealthGets service health
-
deviceAssociations.getDeviceAssociationsV2TrackingIdGeofencesGets all geofences associated with the device with
trackingId. -
deviceAssociations.getDeviceAssociationsV2VersionGets service version
-
events.getEventsV3Gets all events for all devices and shipments of the project. The results are listed in descending order based on the timestamp.
An event is uniquely identified by
trackingId-ruleId-timestampkey, with an exception of dwelling and stock rule events. Dwelling events also needgeofenceIdto be specified, whereas for stock eventstrackingIdis not applicable.A time range can be defined with
beforeandaftertimestamps. The response will contain an array of events that were recorded within the range.If the request is supplied with
eventSourcequery parameter, the response will contain events generated by the defined source only.If the request is supplied with
eventTypequery parameter, the response will contain events of the specified type only.If the request is supplied with
ruleIdquery parameter, the response will only contain events for the specified rule ID.If the request is supplied with
initialStatequery parameter, the response will contain events having the specified initial state.All the aforementioned query parameters can be combined together.
-
events.getEventsV3HealthGets service health
-
events.getEventsV3StatusesGets all events statuses for all devices and shipments of the project. An event status of a device is the most recent event of any rule or geofence the device is associated with. The same applies for shipments.
The response contains a list of event status objects and each object has the following properties:
trackingIdorshipmentId: a device ID or a shipment IDruleId: an associated rule or geofence IDeventSource: the rule typeeventType: an event type of the latest event of the rule (same as the "event state")timestamp: a time since when the device has been in this event state
The array is sorted by the following fields in the following order:
trackingId,eventSource,timestamp,ruleId,geofenceId.A time range can be defined with
beforeandaftertimestamps. The response will contain event statuses that were recorded within the range.If the request is supplied with
eventSourcequery parameter, the response results will be limited to the specified rule types only.If the request is supplied with
ruleIdquery parameter, the response results will be limited to the specified rule IDs only.If the request is supplied with
trackingIdquery parameter, the response results will be limited to the specified devices only. AlsoshipmentIdcan be used as atrackingId.If the request is supplied with
eventTypequery parameter, the response results will be limited to the specified type only.If the request is supplied with
geofenceIdquery parameter, it will only affect dwelling event statuses filtering, limiting the results to the specified geofence only. Other event types are not affected by this setting. Note that for the event statuses of geofence type, theruleIdis thegeofenceId.If the request is supplied with
shipmentsquery parameter, the response results will be limited either to shipments (shipments=true) or devices (shipments=false) only. Otherwise, ifshipmentsquery parameter is not specified, response results will include both devices and shipments.All the aforementioned query parameters can be combined together.
-
events.getEventsV3StatusesDeviceCountsThis API call counts the number of devices and shipments that are currently in the different event states per rule or per event source (that is per rule type).
An event state of a device is the event type of the most recent device event. It indicates a state the device is currently in, in relation to a rule the device is associated with.
For example, the event state can be either
INSIDE_GEOFENCEorOUTSIDE_GEOFENCEin case the event source isgeofence; orBELOW_RANGE,IN_RANGEorABOVE_RANGEin case the event source isbatteryrule.A device can be in several different event states at the same time when it has more than one rule associated with it. For example, a device can be at the same time in
INSIDE_GEOFENCEandABOVE_RANGEevent states.The same applies for shipments.
The
groupByquery parameter defines how the results are grouped.The default value for the
groupByparameter isruleId. The response contains a list of objects, one per each rule, that are associated to at least one device or shipment of the project. Each object has the following properties:ruleId: a rule IDeventSource: the rule type- every distinct event state (applicable for the rule type) and the number of devices in this state
total: the total number of devices associated to the rule
When the
groupByparameter value iseventSource, the response contains a list of objects, one per event source (that is per each rule type), that are associated to at least one device or shipment of the project. Each object has the following properties:eventSource: a rule type- every distinct event state (applicable for the rule type) and the number of devices in this state.
One device is counted only once per
eventTypestate, but in case a single device is associated to multiple rules of the same type, it will be counted separately for each event state. total: the total number of devices associated to the rule type. A single device is counted only once.
For example, a device A is associated to 2 geofences and is inside one and outside the other. A device B is associated to 3 geofences and is outside all of them. With the request query parameter set as
groupBy=eventSource, the response body will contain the following result item:If the request is supplied with
eventSourcequery parameter, the response results will be limited to the specified rule types only.If the request is supplied with
ruleIdquery parameter, the response results will be limited to the specified rule IDs only.If the request is supplied with
trackingIdquery parameter, the response results will be limited to the specified devices only. AlsoshipmentIdcan be used as atrackingId.If the request is supplied with
geofenceIdquery parameter, it will only affect dwelling event statuses filtering, limiting the results to the specified geofence only. Other event types are not affected by this setting. Note that for the event statuses of geofence type, theruleIdis thegeofenceId.If the request is supplied with
shipmentsquery parameter, the response results will be limited either to shipments (shipments=true) or devices (shipments=false) only. Otherwise, ifshipmentsquery parameter is not specified, response results will include both devices and shipments.All the aforementioned query parameters can be combined together.
{ "eventSource": "geofence", "INSIDE_GEOFENCE": 1, "OUTSIDE_GEOFENCE": 2, "total": 2}. -
events.getEventsV3TrackingIdGets all events for a device or a shipment. A device is identified by the
trackingId. For shipments,shipmentIdcan be used as atrackingId.The results are listed in descending order based on the timestamp.
An event is uniquely identified by
trackingId-ruleId-timestampkey, with an exception of dwelling and stock rule events. Dwelling events also needgeofenceIdto be specified, whereas for stock eventstrackingIdis not applicable.A single event can be fetched using
ruleId,beforeandafterquery parameters.A time range can be defined with
beforeandaftertimestamps. The response will contain an array of events that were recorded within the range.If the request is supplied with
eventSourcequery parameter, the response will contain events generated by the defined source only.If the request is supplied with
eventTypequery parameter, the response will contain events of the specified type only.If the request is supplied with
ruleIdquery parameter, the response will only contain events for the specified rule ID.If the request is supplied with
initialStatequery parameter, the response will contain events having the specified initial state.All the aforementioned query parameters can be combined together.
-
events.getEventsV3VersionGets service version
-
geofenceAssociations.deleteGeofenceAssociationsV2GeofenceIdTrackingIdDeletes an association between the geofence
geofenceIdand the devicetrackingId. -
geofenceAssociations.getGeofenceAssociationsV2GeofenceIdDevicesReturns all devices associated with the geofence
geofenceId. -
geofenceAssociations.getGeofenceAssociationsV2HealthGets service health
-
geofenceAssociations.getGeofenceAssociationsV2VersionGets service version
-
geofenceAssociations.putGeofenceAssociationsV2GeofenceIdTrackingIdAssociates the device with
trackingIdto the geofence withgeofenceId. Whenever the device enters or exits the associated geofence, an event is generated. -
geofences.deleteGeofencesV2Deletes all geofences of a project.
If a geofence is associated with a stock rule, the rule will also be deleted.
Note that one needs to supply an HTTP header
x-confirmwith the valuetrueto force the deletion. If the header is not provided, the request will fail. -
geofences.deleteGeofencesV2GeofenceIdDeletes a single geofence identified by the
geofenceId. -
geofences.getGeofencesV2Gets all geofences of a project. Results can be filtered by using the query parameters. Indoor geofences with the
floorproperties may be filtered byfloor[id], which specifies the ID of the venue associated with the geofence. -
geofences.getGeofencesV2GeofenceIdGets details of a single geofence identified by the
geofenceId. -
geofences.getGeofencesV2HealthGets service health
-
geofences.getGeofencesV2VersionGets service version
-
geofences.postGeofencesV2One can specify a geofence as a circle, as a polygon or as POI (Point of Interest). One can also assign a name and a description to each geofence to help identify them.
Circle
Specify coordinates of the center point of the circle and a radius in meters.
Polygon
Specify an array of points. A minimum of three points is required.
NOTE: If the array of points does not describe a closed polygon, the polygon is automatically closed between the last and first points.
Indoor geofence
Circular and polygonal geofences can be both outdoors and indoors. To create a
circularindoorgeofence, add thefloorproperty to the request body.POI geofence
Specify location details of a POI geofence for its initial creation.
After the POI geofence has been created, it will need to be trained. The POI geofence boundary is defined using radio measurements. The POI geofence is trained using a telemetry that a device has ingested while being at this desired point of interest.
For a trained POI geofence, an associated device is considered to be inside the geofence when the radio measurements of the device-ingested telemetry and the training data match.
Successful requests have the HTTP status 201 and the response body provides the ID of the created geofence.
{ "name": "Home", "type": "circle", "definition": { "center": { "lat": 52.5308398, "lng": 13.38490035 }, "radius": 100 }, "description": "Small area around my house." }{ "name": "Work", "type": "polygon", "definition": { "points": [{ "lat": 52.5308398, "lng": 13.38490035 }, { "lat": 52.530443, "lng": 13.38482003 }, { "lat": 52.5308298, "lng": 13.38492235 }] }, "description": "The area around work." }{ "name": "Office indoor", "type": "circle", "definition": { "center": { "lat": 52.5308398, "lng": 13.38490035 }, "radius": 20, "floor": { "level": 2, "id": "DM_1234", "name": "Office floor 2" } }, "description": "Floor 2 of the office." }{ "name": "POI room in the office", "type": "poi", "definition": { "location": { "room": ROOM_201, "address": Invalidenstrasse 116, "country": Germany, "position": { "lat": 52.5308398, "lng": 13.38490035 } }, "floor": { "level": 2, "id": "DM_1234", "name": "Office floor 2" } }, "description": "A room where goods should be delivered." } -
geofences.postGeofencesV2GeofenceIdPoiTrainingTrains the POI geofence
geofenceIdusing a device telemetry. The POI geofence boundary is defined using radio measurements. The geofence is trained using a telemetry that the device withtrackingIdhas ingested during the specified time range, while being at this point of interest. Only telemetries that have been ingested during the last 24 hours can be used in the training.Optionally, a WLAN scan be used for the training.
-
geofences.postGeofencesV2TrainingTestChecks if a POI geofence training is possible with the given request parameters.
The request body contains a training data sample in form of either a device tracking ID along with a specific time range for the ingested device telemetry or a WLAN scan.
-
geofences.putGeofencesV2GeofenceIdUpdates the geofence
type,name,descriptionordefinitionproperty. The old geofence will be replaced by the new one, and hence the full set of the geofence properties must be provided in the request body.POIgeofence type cannot be changed tocircleorpolygonand vice versa.If the update was successful, the response will contain the updated geofence details.
-
ingestion.getV2HealthGets service health
-
ingestion.getV2TimestampReturns the current server time in seconds since the UNIX epoch. The server time is used to check the validity of the OAuth 1.0 header of a device data ingestion request. Devices must synchronise with the server time to avoid a clock skew.
Note that in the data ingestion request the timestamp is specified in milliseconds.
-
ingestion.getV2VersionGets service version
-
ingestion.getV3HealthGets service health
-
ingestion.getV3VersionGets service version
-
ingestion.postV2Devices can use this end point to ingest data into HERE Tracking, in the same way as via the
/v3endpoint.A device uses its access token obtained via the the
/v2/tokenendpoint to send telemetry – GPS position, sensor readings, WLAN or Bluetooth scans - to HERE Tracking.By default the request is synchronous and the response will be the device
desiredshadow. If the request is set to be asynchronous, the response will be empty.The device position gets resolved based on the
positionandscanobjects provided in the request body (see the objects definitions for details). If onlypositionis provided, it will be used as the device position. If onlyscanis provided, the position will be resolved asynchronously via the HERE Positioning API after returning a response. If both are provided,scanis resolved to a position via the HERE Positioning API, and the better of the two positions (provided vs. resolved) will be selected. If neitherpositionnorscanis provided, or if the HERE Positioning API is not able to resolve the position, the device position will be left empty.The
reportedshadow will be updated with the device latest position information, sensor readings and settings ingested by the device. The reported shadow may also contain additional properties generated by HERE Tracking based on the device-ingested telemetry. Such properties are stored in thesystem.computedproperty of the shadow. The device shadow can be queried via theshadows/v2/{trackingId}endpoint.The data ingested by the device will be available as a device trace via the
traces/v2/{trackingId}endpoint. -
ingestion.postV2TokenAuthenticates a device to HERE Tracking and requests a device access token.
A device must provide a valid device access token when it sends telemetry to HERE Tracking. Tokens can be obtained upon a successful device authentication.
The device token requests must be signed. The signature method uses the OAuth 1.0 standard. For more information on this standard, see the specification.
Tokens can be requested only by claimed devices. A claimed device license, that is
deviceIdanddeviceSecretcredential pair, is used for creating a signed token request.See the Authentication section for details on how to generate a signed token request. A new signature must be created for each device access token request. Signatures can only be used once.
-
ingestion.postV3Devices can use this end point to ingest data into HERE Tracking.
A device uses its access token obtained via the the
/v2/tokenendpoint to send telemetry – GPS position, sensor readings, WLAN or Bluetooth scans - to HERE Tracking.Also device owners use this end point to ingest data on behalf of a device.
The device can be either a real or a virtual device. A real device is identified by a
trackingIdassigned to it when the device was claimed. A virtual device is identified by an external device ID and the owner's projectappId.In case the ingestion is done by a device owner, the owner should first authenticate himself with HERE Tracking and obtain a user access token via the
/users/v2/loginendpoint. The user access token will then be used in this API call.By default the request is synchronous and the response will be the device
desiredshadow. If the request is set to be asynchronous, the response will be empty.The device position gets resolved based on the
positionandscanobjects provided in the request body (see the objects definitions for details). If onlypositionis provided, it will be used as the device position. If onlyscanis provided, the position will be resolved asynchronously via the HERE Positioning API after returning a response. If both are provided,scanis resolved to a position via the HERE Positioning API, and the better of the two positions (provided vs. resolved) will be selected. If neitherpositionnorscanis provided, or if the HERE Positioning API is not able to resolve the position, the device position will be left empty.The
reportedshadow will be updated with the device latest position information, sensor readings and settings ingested by the device. The reported shadow may also contain additional properties generated by HERE Tracking based on the device-ingested telemetry. Such properties are stored in thesystem.computedproperty of the shadow. The device shadow can be queried via theshadows/v2/{trackingId}endpoint.The data ingested by the device will be available as a device trace via the
traces/v2/{trackingId}endpoint. -
ingestion.postV3BatchDevice owner use this endpoint to ingest data to HERE Tracking on behalf of multiple devices.
A single request can contain data for multiple devices. The devices can be either real or virtual. A real device is identified by a
trackingIdassigned to it when the device was claimed. A virtual device is identified by an external device ID and the owner's projectappId.Prior to making the request, the device owner should first authenticate himself with HERE Tracking and obtain a user access token. The user access token will then be used in this API call.
For more information on the device position resolution, and the device shadow and trace updates, see the
/v3endpoint description. -
labels.deleteLabelsV4ResourceTypeResourceIdDeletes all labels of the resource
resourceId. -
labels.deleteLabelsV4ResourceTypeResourceIdKeyDeletes all the labels that have the key
keyof the resourceresourceId. -
labels.deleteLabelsV4ResourceTypeResourceIdKeyValueDeletes the label
key-valueof the resourceresourceId. -
labels.getLabelsV4HealthGets service health
-
labels.getLabelsV4ResourceTypeGets all labels of the resource type
resourceTypewithin a project.The
fieldsparameter specifies which fields should be added to the response body (for example,resourceId).The
labelsquery parameter is specified as a label filter, and only the matching results will be returned:"?labels[priority]=high&labels[group]=group1&fields=resourceId,labels" "?labels[group]=*" *
-
labels.getLabelsV4ResourceTypeKeysGets all label keys of the resource type
resourceType. -
labels.getLabelsV4ResourceTypeKeysKeyValuesGets all values of the label
keyfor the resource typeresourceType. -
labels.getLabelsV4ResourceTypeResourceIdGets all labels of the resource
resourceId. -
labels.getLabelsV4VersionGets service version
-
labels.putLabelsV4ResourceTypeResourceIdBatchCreates a set of labels for the resource
resourceId. -
labels.putLabelsV4ResourceTypeResourceIdKeyValueCreates a label for the resource
resourceId. -
largedata.deleteLargedataV4DataIdDeletes large data object.
-
largedata.getLargedataV4DataIdDataDownloads a part of large data.
The data to be downloaded is identified with
dataId.offsetquery paremeter specifies the first byte of the data, andcountindicates how many bytes of the data is to be downloaded starting from and including theoffset. The default value foroffsetis zero and the forcountit is the total size of the data.The size of one downloaded data part must be between 1 byte and 10 MB.
-
largedata.getLargedataV4DataIdMetadataGets metadata for a large data object.
-
largedata.getLargedataV4DataIdPartsGets information about uploaded parts for a large data object.
-
largedata.getLargedataV4DevicesTrackingIdMetadataGets metadata listing for all large data objects for a given device.
-
largedata.getLargedataV4HealthGets service health
-
largedata.getLargedataV4VersionGets service version
-
largedata.postLargedataV4Creates a new multipart large data upload. Response contains
dataId, which is the created large data object identifier. -
largedata.postLargedataV4DataIdAfter all parts have been uploaded, this operation completes the upload.
When the upload has been completed, it is no longer possible to upload new parts to it but the uploaded data can be downloaded.
This request has an optional
abortquery parameter (the default value isfalse) for aborting the upload instead of successfully completing it. If the upload is aborted, all of its parts and data are removed from HERE Tracking. -
largedata.putLargedataV4DataIdPartsPartNumberUploads a part of large data. The part is identified with
dataIdand a part number.Part upload has the following limits:
- The part numbers must start from 1, be no greater than 10000 and be consecutive.
- The size of one uploaded data part must be between 1 byte and 1 MB.
- Parts re-uploaded with the same
partNumberare overridden. - Only
application/octet-streamContent-Type is supported.
Parts can be uploaded in any order, the
partNumberdetermines their position in the total data.The optional
md5query parameter can be used to provide the MD5 digest for the uploaded data part. If it is specified and does not match to the received data, HERE Tracking returns HTTP status 400.If the data upload is still in preparing state, HERE Tracking returns HTTP status 409.
-
locations.deleteLocationsV4Deletes all locations of the project.
Note that one needs to supply an HTTP header
x-confirmwith the valuetrueto force the deletion. If the header is not provided, the request will fail. -
locations.deleteLocationsV4LocationIdDeletes the location
locationId.NOTE: A location can not be deleted if the location is referred by any shipment or shipment plan.
-
locations.getLocationsV4Gets all locations of the project.
-
locations.getLocationsV4HealthGets service health
-
locations.getLocationsV4LocationIdGets details of the location
locationId. -
locations.getLocationsV4VersionGets service version
-
locations.postLocationsV4Creates a new location. A location consists of latitude/longitude coordinate pair and/or geofenceId. A name, description, and address of the location may be provided.
-
locations.putLocationsV4LocationIdUpdates the location
locationIddetails. A location consists of latitude/longitude coordinate pair and/or geofenceId. A name, description, and address of the location may be provided. The old location definition will be replaced, meaning that full location body should be provided. After a successful update, the response provides the updated location details. -
metadata.deleteMetadataV2DevicesTrackingIdDeletes all the metadata of the device or a shipment identified by the
trackingIdor theshipmentId. -
metadata.deleteMetadataV2GeofencesGeofenceIdDeletes all the metadata of the geofence identified by the
geofenceId. -
metadata.deleteMetadataV2SensorRulesSensorRuleIdDelete all the metadata of the sensor rule identified by the
sensorRuleId. -
metadata.getMetadataV2DevicesTrackingIdGets metadata of a device or a shipment identified by the
trackingIdor theshipmentId. -
metadata.getMetadataV2GeofencesGeofenceIdGets metadata of the geofence identified by the
geofenceId. -
metadata.getMetadataV2HealthGets service health
-
metadata.getMetadataV2SensorRulesSensorRuleIdGets metadata of the sensor rule identified by the
sensorRuleId. -
metadata.getMetadataV2VersionGets service version
-
metadata.postMetadataV2DevicesBatchGets a batch of metadata of multiple devices or shipments. The device or shipment IDs are specified in the request body.
-
metadata.postMetadataV2GeofencesBatchGets a batch of metadata of multiple geofences. The geofences IDs are specified in the request body.
-
metadata.postMetadataV2SensorRulesBatchGets a batch of metadata of multiple sensor rules. The sensor rules IDs are specified in the request body.
-
metadata.putMetadataV2DevicesTrackingIdUpdates the metadata object of the device or a shipment identified by the
trackingIdor theshipmentId. The metadata specified in the request body is merged with the existing metadata object (or gets created if no metadata object exists); new keys are added, and the values of the existing keys are updated with the new data. Adding 'null' value for a key deletes it from the metadata object. Successful response body contains the updated metadata object. -
metadata.putMetadataV2GeofencesGeofenceIdUpdates the metadata object of the geofence identified by the
geofenceId. The metadata specified in the request body is merged with the existing metadata object (or gets created if no metadata object exists); new keys are added, and the values of the existing keys are updated with the new data. Adding 'null' value for a key deletes it from the metadata object. Successful response body contains the updated metadata object. -
metadata.putMetadataV2SensorRulesSensorRuleIdUpdates the metadata object of the sensor rule identified by the
sensorRuleId. The metadata specified in the request body is merged with the existing metadata object (or gets created if no metadata object exists); new keys are added, and the values of the existing keys are updated with the new data. Adding 'null' value for a key deletes it from the metadata object. Successful response body contains the updated metadata object. -
notifications.deleteNotificationsV3RegistrationChannelIdUnregisters from notifications and deletes the notification channel
channelId. -
notifications.deleteNotificationsV3RegistrationsDeletes all the notification channels. This would result in unregistering from all the notifications.
Note that one needs to supply an HTTP header
x-confirmwith the valuetrueto force the deletion. If the header is not provided, the request will fail. -
notifications.getNotificationsV3HealthGets service health
-
notifications.getNotificationsV3RegistrationChannelIdGets details of the notification channel
channelId. -
notifications.getNotificationsV3RegistrationsGets a list of all registered notification channels.
-
notifications.getNotificationsV3VersionGets service version
-
notifications.postNotificationsV3RegistrationsUser can subscribe to notifications of all events triggered by device telemetry and rules and geofences.
To get notified about some specific events only, one can set up
ruleId,eventSource,eventTypeandinitialStatefilters for a notification channel. -
notifications.putNotificationsV3RegistrationChannelIdUpdates the
url,ruleId,eventSource,eventTypeandinitialStateparameters of the notification channelchannelId. If a property is not provided in the request body, its value will be updated to null. When updating a webhook channel, theurlparameter must be provided.After a successful update, the response provides the updated notification channel details.
-
registry.deleteRegistryV2DevicesDeviceOrExternalIdDeactivates a provisioned device. This operation will deactivate the device license (
deviceIdanddeviceSecret). Deactivated devices cannot be claimed anymore.NOTE: The device must be unclaimed before it can be deactivated.
-
registry.deleteRegistryV2TrackingIdUnclaims 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.
-
registry.getRegistryV2AppIdDevicesLists all the devices provisioned by a user project identified by the
appId. -
registry.getRegistryV2AppIdLicenseCountGets a number of provisioned device licenses for a user project identified by the
appId. -
registry.getRegistryV2DevicesDeviceOrExternalIdGets the
trackingIdfor a claimed device by itsdeviceId. -
registry.getRegistryV2HealthGets service health
-
registry.getRegistryV2JobIdResultsGets results of a previously created multiple device license request batch job upon its successful completion.
-
registry.getRegistryV2JobIdStatusChecks the progress of a previously created multiple device license request batch job.
-
registry.getRegistryV2LicensesGets a list of projects the user is a member of, along with the license information details for each project.
-
registry.getRegistryV2TrackingIdGets the
deviceIdof a claimed device by itstrackingId. -
registry.getRegistryV2VersionGets service version
-
registry.postRegistryV2AppIdDevicesStarts a batch job to create licenses for either physical devices or virtual devices. Virtual devices are meant for cloud-to-cloud use case.
A physical device license is a
deviceIdanddeviceSecretcredential pair. The batch job creates a number of physical device licenses specified by thecountparameter in the request body. The response contains an array ofdeviceIdanddeviceSecretpairs.Virtual devices are identified with an external device ID and the requestor's project
appId. The virtual device external ID is application-specific and the user is free to allocate it as user finds suitable. The external IDs for the virtual devices to be created are specified in thedevicesarray in request body. For virtual devices the response contains only an array ofdeviceIds, but nodeviceSecrets.The
autoclaimparameter can only be used when creating virtual devices. Ifautoclaim=true, the created virtual devices are immediately claimed by the requesting user account. In this case the response contains also tracking IDs for the claimed devices. -
registry.postRegistryV2AppIdOneDeviceDevice license is a
deviceIdanddeviceSecretcredential pair. The created credentials will be returned in the response body.If
autoclaimquery parameter is set totrue, the created device will also be claimed by the same user account. -
registry.postRegistryV4ResourcesResourceTypeFindGets all resources of the resource type
resourceType. -
registry.putRegistryV2DevicesDeviceOrExternalIdClaims a device, associating a device to a user account. The user who claimed a device is the device owner, which is different from the device vendor.
Unclaimed devices cannot login or send any data to HERE Tracking. A claimed device data is stored in HERE Tracking and is available to the device owner's project, which the device has been claimed to.
When a device is claimed, it gets assigned a
trackingId. This is a unique ID associated with the device data in HERE Tracking.trackingIdis different from thedeviceId. ThedeviceIdis permanently associated with the hardware, while thetrackingIdis associated with the device data. If the device is later sold or transferred, thedeviceIdremains the same but thetrackingIdchanges in case the device is reclaimed. This way the new owner cannot access the old data.If the user is a member of multiple projects, the target project ID needs to be specified in the
projectIdquery parameter (note that this is different from theappId).Only users with a valid HERE Tracking license are authorized to claim new devices. Claimed devices are associated with the owner application ID, and the total device count is kept up-to-date for billing purposes.
-
reports.getReportsV4HealthGets service health
-
reports.getReportsV4ReportIdGets the report creation status and makes queries to fetch the actual reports. Each report request can have a different set of query parameters.
Note that in the report context an asset is a device.
Examples
To get a report on assets dwelling times in the specified geofence during the report period, create a request specifying the following:
reportId: ID of a report created for a dwelling rulemeasure: 'duration'groupBy: 'asset'geofenceId: geofence ID
To get a report on how many times assets were in detention on average during each week of the report period, create a request specifying the following:
reportId: ID of a report created for a detention rulemeasure: 'occurrence'method: 'average'groupBy: 'asset'interval: 'week'
-
reports.getReportsV4VersionGets service version
-
reports.postReportsV4Starts a report creation.
The request body contains a rule ID, and the report start and end time. The report will be created based on the event data generated by the rule and devices associated to it.
The supported rule types are:
- dwelling
- detention
- utilization
Note that both the report start and end timestamps must be earlier than the current time, and no newly ingested data will be automatically added to the report after its creation.
The created report ID will be provided in the response.
The generated report is available for one week, after which it will expire and will need to be recreated. If there is an already existing report matching the request parameters, its
reportIdwill be returned in the response and no new report will be generated. -
rules.deleteRulesV4Deletes all rules of the project.
Note that one needs to supply an HTTP header
x-confirmwith the valuetrueto force the deletion. If the header is not provided, the request will fail. -
rules.deleteRulesV4RuleIdDeletes a rule identified by the
ruleId. -
rules.getRulesV4Gets all rules definitions.
-
rules.getRulesV4HealthGets service health
-
rules.getRulesV4RuleIdGets details of a single rule identified by the
ruleId. -
rules.getRulesV4VersionGets service version
-
rules.postRulesV4Creates a rule of the specified rule
typeand with the definedthreshold. After the rule has been created, it needs to be associated to a device to get activated.Detention rule
For a rule of the
detentiontype the threshold is defined as a duration in seconds. ADETENTION_STARTEDevent gets triggered when the device has remained stationary for longer than the threshold duration. ADETENTION_ENDEDevent will be generated when the device starts moving again.Utilization rule
For a rule of the
utilizationtype the threshold is defined as a duration in seconds. AnUNUTILIZEDevent will be generated when the device has been stationary for longer than the threshold duration, andUTILIZEDevent gets triggered when the device starts moving again after having been stationary.Dwelling rule
For a rule of the
dwellingtype the threshold is defined as a duration in seconds. ADWELLING_STARTEDevent gets triggered when a dwelling time of the device inside any device-associated geofence exceeds the threshold duration. When the device exits the geofence, aDWELLING_ENDEDevent will be generated.Online rule
For a rule of the
onlinetype there is no threshold defined. ATRUE_TO_FALSEevent gets triggered when the device is late for the planned ingestion schedule by more than 5 minutes. AFALSE_TO_TRUEevent is generated when the device starts ingesting again after having been offline. The planned ingestion schedule needs to be configured in the devicedesired shadow(thedesired.system.rate.sendMsproperty).Stock rule
For a rule of the
stocktype the threshold is defined asminVolumeand/ormaxVolumevalues. When creating a stock rule, also a geofence ID needs to be specified. When the number of devices inside the specified geofence exceedsmaxVolume, anOVERSTOCKevent will be generated. Similarly, when the number of devices inside the specified geofence gets belowminVolume, anUNDERSTOCKevent will be generated. When the number of devices inside the specified geofence is betweenminVolumeandmaxVolume, aNORMAL_VOLUMEevent will be generated. Note that the stock rule only gets triggered for devices that are associated to the specified geofence.Shipment schedule rule
For a rule of the
shipmentScheduletype there arebeforeandafterdeviation time thresholds from the planned shipment ETD/ETA. ASHIPMENT_EARLYevent gets triggered when the shipment is ahead of schedule by the number ofbeforeseconds. ASHIPMENT_DELAYEDevent gets triggered when the shipment is behind schedule by the number ofafterseconds. ASHIPMENT_ON_TIMEevent gets triggered when the shipment is on time.When a rule has been successfully created, the response body will contain the created rule ID.
-
rules.putRulesV4RuleIdUpdates the name, description and threshold of the rule
ruleId. The rule type cannot be updated. If some of the these properties are not provided in the request body, their values will be set to null.If the rule has been updated successfully, the response will contain the updated rule details.
-
sensors.deleteSensorsV3Deletes all sensor rules of a project.
Note that one needs to supply an HTTP header
x-confirmwith the valuetrueto force the deletion. If the header is not provided, the request will fail. -
sensors.deleteSensorsV3SensorRuleIdDeletes a sensor rule identified by the
sensorRuleId. -
sensors.getSensorsV3Gets all sensor rules definitions.
-
sensors.getSensorsV3HealthGets service health
-
sensors.getSensorsV3SensorRuleIdGets details of a single sensor rule identified by the
sensorRuleId. -
sensors.getSensorsV3VersionGets service version
-
sensors.postSensorsV3Creates a sensor rule of the specified rule type. After the sensor rule has been created, it needs to be associated to a device to get activated.
For a sensor rule of the battery, humidity, pressure and temperature type, a
rangeparameter needs to be specified, defining both upper and lower thresholds for the sensor readings. When the device ingests data, the reported sensor reading is compared to the defined range and in case in or out of range transition has taken place, an event gets triggered.For a sensor rule of the acceleration type, a
thresholdparameter needs to be specified, defining the acceleration threshold value. Every time the device reports its accelerometer sensor reading being above the threshold, an event gets triggered.For a sensor rule of the attach and tamper types, no additional parameters need to be specified. The attach sensor detects whether the device is attached to some object (for example to an asset). The tamper sensor detects whether the device cover is open or closed. When the cover is open, the device is considered to be tampered with. Every time the device reports getting attached, detached, tampered with or left with the cover closed (that is, not tampered with), an event gets triggered.
When a sensor rule has been successfully created, the response body will contain the created rule ID.
-
sensors.putSensorsV3SensorRuleIdUpdates the sensor rule
sensorRuleIdname, description and range or threshold. The sensor rule type cannot be updated. If some of the these properties are not provided in the request body, their values will be set to null. If the sensor rule has been updated successfully, the response will contain the updated rule details. -
shadows.deleteShadowsV2TrackingIdDeletes the device shadow of the
trackingIddevice.By default, all the values of the
desiredandreportedshadow objects will be cleared, leaving them empty.If either
desiredorreportedquery parameter is set tofalse, that part of the shadow remains as it is. -
shadows.getShadowsV2HealthGets service health
-
shadows.getShadowsV2TrackingIdGets the
trackingIddevice shadow that contains bothreportedanddesiredshadows.If a
shipmentIdis used instead of atrackingId, it will return a shadow of the device that was most recently active for the shipment. If the shipment is still pending or it has been cancelled or completed, an empty shadow will be returned. -
shadows.getShadowsV2TrackingIdStateGets the
reportedordesiredstate object of the devicetrackingId, that is thereportedordesireddevice shadow. -
shadows.getShadowsV2TrackingIdStateSelectorGets a value of a single property of either
desiredorreportedstate objects of a device. One can use JSON selectors to specify the target property or reference it by name. In case the property contains an object, the entire object will be returned in the response.The JSON selector can be nested like this:
payload/time/minutes -
shadows.getShadowsV2VersionGets service version
-
shadows.getShadowsV4Gets all device shadows of a project.
-
shadows.postShadowsV2BatchGets device shadows for multiple devices. One can get shadows for a maximum of 100 devices per request.
In case
afterparameter is provided, only the device shadows that were modified on or after the specified timestamp will be retrieved. -
shadows.putShadowsV2TrackingIdUpdates the
trackingIddevice desired shadow.The device shadow consists of
reportedanddesiredshadows. Only thedesiredshadow can be updated via this endpoint. Thereportedshadow is updated automatically when the device sends telemetry to the ingestion endpoint. -
shipmentReports.getShipmentReportsV4HealthGets service health
-
shipmentReports.getShipmentReportsV4ShipmentReportIdMetricGet the shipment report metric by using the
shipmentReportIdand ametricparameters.Shipment report metrics can be requested only after the shipment report generation has been completed.
-
shipmentReports.getShipmentReportsV4ShipmentReportIdStatusUse the
shipmentReportIdas a path parameter for fetching the status of the generation of the shipment report. -
shipmentReports.getShipmentReportsV4ShipmentReportIdSummaryAfter the shipment report generation is completed, use the
shipmentReportIdas a path parameter for fetching the summary of the shipment report.The summary contains general information about the locations, shipments, shipment plans, segments, and segment plans which were used in the generation of the shipment report. It also includes the time when the shipment report generation started, and when it ended.
-
shipmentReports.getShipmentReportsV4VersionGets service version
-
shipmentReports.postShipmentReportsV4This endpoint starts the shipment report generation. One can specify which shipments to include in the shipments report by using the filters in the request body. The response contains the generated shipment report ID
shipmentReportId.After the shipment report generation has been requested, the status of the shipment report generation can be checked by using the
/shipment-reports/v4/{shipmentReportId}/statusendpoint. -
shipments.deleteShipmentsV4Deletes all the shipments of the project.
Note that one needs to supply an HTTP header
x-confirmwith the valuetrueto force the deletion. If the header is not provided, the request will fail. -
shipments.deleteShipmentsV4PlansDeletes all shipment plans of the project. Any shipments instantiated from the plans will persist, but the references to the parent plans will be removed.
Note that one needs to supply an HTTP header
x-confirmwith the valuetrueto force the deletion. If the header is not provided, the request will fail. -
shipments.deleteShipmentsV4PlansShipmentPlanIdDeletes a shipment plan identified by the
shipmentPlanId.Any shipment instantiated from the plan will persist, but the reference to the parent plan will be removed.
-
shipments.deleteShipmentsV4ShipmentIdDeletes a shipment identified by the
shipmentId. All the data related to the shipment (such as events, associations) will be removed. -
shipments.getShipmentsV4Gets all shipments of the project.
-
shipments.getShipmentsV4HealthGets service health
-
shipments.getShipmentsV4PlansGets all shipment plans of the project.
-
shipments.getShipmentsV4PlansShipmentPlanIdGets details of a shipment plan identified by the
shipmentPlanId. -
shipments.getShipmentsV4PlansShipmentPlanIdSegmentPlanIdGets details of a segment plan identified by the
segmentPlanId. -
shipments.getShipmentsV4ShipmentIdGets details of a specific shipment identified by the
shipmentId. -
shipments.getShipmentsV4ShipmentIdSegmentIdGets details of a segment identified by the
segmentId. -
shipments.getShipmentsV4TrackingIdSegmentsGets all segments that are assigned to the device with
trackingIdorshipmentId. -
shipments.getShipmentsV4VersionGets service version
-
shipments.patchShipmentsV4PlansShipmentPlanIdUpdates details of a shipment plan identified by the
shipmentPlanId. This is a partial update, meaning that only the provided fields will be updated. IfruleIdsfield is specified, it will replace the existing rules currently associated with the shipment plan.Note:
segmentscannot be edited through this API. Changing the order of the segments in a plan would cause shipments created from earlier versions of the plan diverge from a shipment instantiated from the new plan with different segment structure. Individual segments can still be updated via theshipments/v4/plans/{shipmentPlanId}/{segmentPlanId}endpoint. -
shipments.patchShipmentsV4PlansShipmentPlanIdSegmentPlanIdUpdates details of a segment plan identified by the
segmentPlanId.This is a partial update, meaning that only the provided fields will be updated.
Note: Updating
originanddestinationis prohibited to prevent breaking the chain of locations. -
shipments.patchShipmentsV4ShipmentIdUpdates details of a shipment identified by the
shipmentId. This is a partial update, meaning that only the provided fields will be updated, except when updating segments, the whole segments will be replaced fully.Changing the status of the shipment affects the statuses of the segments. The following status changes are allowed:
pending→ongoing- changes the status of the first segment to
ongoing
- changes the status of the first segment to
pending→cancelled- changes the status of all segments to
cancelled
- changes the status of all segments to
ongoing→cancelled- cancels the current
ongoingsegment and all the succeeding segments
- cancels the current
ongoing→completed- completes the current
ongoingsegment and cancels all the succeeding segments
- completes the current
Note:
segmentsandautoStartcan be updated via this API call only if the shipment is inpendingstate. -
shipments.patchShipmentsV4ShipmentIdSegmentIdUpdates details of a segment identified by the
segmentId.This is a partial update, meaning that only the provided fields will be updated.
Changing the status of a segment affects the statuses of other segments in the shipment. The following status changes are allowed:
pending→ongoing- changes previous
pendingsegments tocancelled - changes previous
ongoingsegment tocompleted(only for the immediate predecessor of this segment) - changes previous
ongoingsegment tocancelled(for segments that are not immediate predecessors of this segment) - previous segments in
cancelledorcompletedstates are not affected
- changes previous
pending||ongoing→cancelled- no changes for other segments
ongoing→completed- next segment with status
pendingis changed toongoing
- next segment with status
Note:
trackingIdcan be updated through this API call only if the segment is inpendingstate. -
shipments.postShipmentsV4Creates a new shipment. A shipment consists of segments each representing a part of the logistics journey. A segment spans from a location to another and each segment may be assigned a different tracking device.
The segments of the shipment must form a continuous chain of locations, that is the origin of a segment must match the destination of a previous segment.
-
shipments.postShipmentsV4PlansCreates a new shipment plan. A shipment plan is a structure that holds information about a recurring shipment. Like a shipment, a shipment plan also consists of segments each representing a part of the logistics journey. A segment spans from a location to another and each segment may be assigned a different tracking device. The segments of the shipment must form a continuous chain of locations, that is the origin of a segment must match the destination of a previous segment.
In addition to shipments, a predefined duration can be assigned to each segment in the plan. This information will be used to calculate the Estimated Time of Departure (ETD) and Estimated Time of Arrival (ETA) when instantiating a shipment from a shipment plan.
-
traces.deleteTracesV2TrackingIdDeletes all the device
trackingIdtraces.This will also trigger deletion of the entire event history of the device.
-
traces.getTracesV2HealthGets service health
-
traces.getTracesV2TrackingIdGets all traces of the device
trackingIdthat were recorded within the specified time range. The range is defined withbeforeandafterparameters. The returned traces are sorted in descending order based on their timestamps.NOTE: By default, the
afterparameter value is 0, and thebeforeparameter is set to the current system time. Always make sure to specifybeforeandafterparameters explicitly, as otherwise it may take a very long time for the API call to complete.If the
trackingIdis substituted with a validshipmentId, the response contains a composition of traces of each shipment segment. Traces are only fetched for those segments that are either inongoingorcompletedstate.The
outliersparameter can be used to select only traces that have been marked as outliers (if the parameter value istrue), or only traces that have not been marked as outliers (if the parameter value isfalse). If theoutliersparameter is not present, all the traces will be returned.The
countandpageTokenparameters are used for pagination. -
traces.getTracesV2VersionGets service version
-
transitions.getTransitionsV2DevicesTrackingIdGets all transitions that were recorded within a specific time range. Define the range with
beforeandafterparameters. The returned transitions are listed in descending order based on their timestamps.Note:
By default, the
afterparameter value is 0, and thebeforeparameter is set to the current system time. Always make sure to specifybeforeandafterparameters explicitly, as otherwise it may take a very long time for an API call to complete.The
countandpageTokenparameters are used for pagination. -
transitions.getTransitionsV2HealthGets service health
-
transitions.getTransitionsV2VersionGets service version
-
users.getUsersV2DevicesGets all devices claimed by a project.
-
users.getUsersV2HealthGets service health
-
users.getUsersV2VersionGets service version
-
users.postUsersV2LoginAuthenticates a user with an email and a password and gets a user access token upon the successful authentication. The user email must be registered with a valid . Optionally user can provide requested realm ID.
-
users.postUsersV2RefreshGets a new valid user access token for a given previous access token and a refresh token.
-
users.postUsersV2TokenExchangeTakes user access token, requested scope and returns project-scoped user access token.
-
openapi.previewSpecPreview an OpenAPI document before adding it as a source
-
openapi.addSourceAdd an OpenAPI source and register its operations as tools