IndoorAtlas Data REST API allows to access user's positioning data:
Conditions for Usage / Data Storage Opt-In
You can only get data of those positioning sessions from the Data API that have been created using an Apikey that has opt-in for storing data. Please see more in Creating Applications and API Keys.
Usage
- Fetch a list of users daily positioning session identifiers (sdkSetupId) and the related metadata.
- Using the sdkSetupIds, make requests to get session summaries and geolocation data.
- Metadata includes venue identities (venueIds), i.e., the venues user has visited during the positioning session. See more about accessing Venue metadata from Venue REST API.
API Keys
You need to create an API key with Data API scope enabled. Use that as the key
query string parameter in all requests to Data API. See details in Creating Applications and API Keys
Rate Limit
The default Data API rate limit is 10000 requests per hour. If you think this is not enough for your application, please contact our support.
Mapping TraceId from SDK to SDK Setup ID
In your app you can request a TraceId which identifies the user positioning session (from initializing the SDK to tearing down the SDK). You can map the TraceID to SDKSetupId, by taking the UUID part of the TraceID.
Example:
TraceID : a74d626e-4c50-11ec-908a-516c56d128a2.1637666982962.206 --> SDKSetupID: a74d626e-4c50-11ec-908a-516c56d128a2 |
Examples
Requesting a list of daily sdk setup identities (sdkSetupId) and related metadata of sessions for given day (year/month/day) and apikey ($APIKEY).
curl "https://data-api.indooratlas.com/public/v1/sdk-sessions/2018/9/1?key=$APIKEY"
[
{
"apikeyId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"bundleId": "com.example.app",
"idaUuid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"sdkSetupId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"venueIds": [
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"
]
},
{
"apikeyId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"bundleId": "com.example.app",
"idaUuid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"sdkSetupId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"venueIds": [
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"
]
}
]
Requesting session event data for given sdk setup id ($SDK_SETUP_ID) and user's apikey ($APIKEY). An optional query parameter (newerThan) can be given to request only events newer than given time (epoch time in seconds). This is useful for e.g. real-time dashboards.
curl "https://data-api.indooratlas.com/public/v1/sdk-sessions/$SDK_SETUP_ID/events?key=$APIKEY"
curl "https://data-api.indooratlas.com/public/v1/sdk-sessions/$SDK_SETUP_ID/events?key=$APIKEY&newerThan=1587038568"
[
{
"content": {
"context": {
"indooratlas": {
"floorPlan": {
"id": null
},
"venue": {
"id": null
}
}
},
"location": {
"accuracy": 34,
"altitude": 0,
"bearing": 0,
"coordinates": {
"lat": 65.0607161,
"lon": 25.4407358
},
"floorCertainty": 0.3333333432674408,
"floorNumber": 0
}
},
"ts": "2018-09-01T06:27:53.226Z",
"type": "OUTPUT"
},
{
"content": {
"context": {
"indooratlas": {
"floorPlan": {
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"
},
"venue": {
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"
}
}
},
"location": {
"accuracy": 24,
"altitude": 12,
"bearing": 200.9311065673828,
"coordinates": {
"lat": 65.06072753049021,
"lon": 25.440664564774256
},
"floorCertainty": 0.9601538181304932,
"floorNumber": 3
}
},
"ts": "2018-09-01T06:27:53.240Z",
"type": "OUTPUT"
},
{
"content": {
"location": {
"accuracy": 16,
"altitude": 12,
"bearing": 146.44210815429688,
"coordinates": {
"lat": 65.0607469870066,
"lon": 25.440710648741646
},
"floorCertainty": 0.9996431469917297,
"floorNumber": 3
}
},
"ts": "2018-09-01T06:27:54.072Z",
"type": "OUTPUT"
},
]