Download OpenAPI specification:
The Autoliv Safety Platform connects in-vehicle safety hardware to the people and systems that need to act when something goes wrong.
A safety device fitted to a vehicle watches continuously for crash and airbag-deployment events. The moment one happens, the device reports it here — with its location and the binary event-data recording it captured — so the event is preserved, the right people are alerted, and the device itself is kept up to date in the field. This API is the single interface behind that flow: it is what the device talks to, what an operator's back-end integrates with, and what the companion mobile experience is built on.
The exact set of operations you can see and call depends on the credentials you have been issued. Anything visible in this reference is available to you; operations outside your entitlement are simply not listed.
Every request other than sign-in must carry Authorization: Bearer <token>. A token identifies both who is calling and which organization they belong to, and the platform resolves that organization on every request.
Data is isolated by organization end to end. Devices, events, and firmware are stamped with the organization that owns them, and a caller only ever reads or writes rows belonging to their own organization — a resource owned by another organization is reported as forbidden or simply not found. There is no cross-organization access, by design.
/v1/, /v2/). A published version's contract never changes; breaking changes ship as a new version alongside the old one.application/json, except binary transfers such as firmware images and event-data recordings, which use application/octet-stream.error and message. Expect 400 for invalid input, 401 for a missing or invalid token, 403 when the token is valid but not entitled to the resource, 404 when it does not exist, and 409 for a conflict such as re-reporting an event that has already been recorded.Add event notification with grace period timer. For DEPLOY event: The notification will be scheduled with a grace period timer and will be sent after the grace period to emergency contacts. For non-DEPLOY events: The notification will be added to the database without a grace period timer.
| eventId required | string (Eventid) |
| eventType required | string (EventType) Enum: "DEPLOY" "OFFLINE_DEPLOY" "NEAR_DEPLOY" "NEAR_OTHER_EVENT" "OTHER_EVENT" Enumeration of possible event types for crash notifications. |
GeoLocation (object) or (string or null) Default: null |
{- "eventId": "string",
- "eventType": "DEPLOY",
- "geoLocation": null
}{- "gracePeriodStartedSuccess": true,
- "gracePeriodStatus": "Started",
- "gracePeriodStartTimeUnix": 0,
- "gracePeriodDuration": 0
}Records a deployment or near-deployment event reported by a device. The event is the reference for any subsequent EDR data upload and device state update.
| eventId required | string (Eventid) |
| deviceId required | string (Deviceid) |
| eventType required | string (EventType) Enum: "DEPLOY" "OFFLINE_DEPLOY" "NEAR_DEPLOY" "NEAR_OTHER_EVENT" "OTHER_EVENT" Enumeration of possible event types for crash notifications. |
Gpslocation (string) or (Gpslocation (string or null)) (Gpslocation) Default: null GPS location as 'latitude,longitude' |
{- "eventId": "string",
- "deviceId": "string",
- "eventType": "DEPLOY",
- "gpsLocation": null
}{- "success": true,
- "message": "string",
- "gracePeriodStatus": null,
- "gracePeriodStartTimeUnix": null,
- "gracePeriodDuration": null
}Stores the binary EDR payload recorded by the device so the event can be analysed. The event must be the same sent previously from [post] /v1/events request.
| eventId required | string <UUID> Event id |
Binary event data payload
Generate a SAS token for downloading a blob with 1 hour expiry
| blobPath required | string (Blobpath) Path to the blob in storage |
{- "blobPath": "string"
}{- "sasToken": "string",
- "expiresAt": "2019-08-24T14:15:22Z"
}Test endpoint to send a single SMS message directly.
| phoneNumber required | string (Phonenumber) Phone number to send SMS to |
| name required | string (Name) Name of the recipient |
| message required | string (Message) Message to send |
{- "phoneNumber": "string",
- "name": "string",
- "message": "string"
}Add event notification with grace period timer. For DEPLOY event: The notification will be scheduled with a grace period timer and will be sent after the grace period to emergency contacts. For non-DEPLOY events: The notification will be added to the database without a grace period timer.
| eventId required | string (Eventid) |
| eventType required | string (EventType) Enum: "DEPLOY" "OFFLINE_DEPLOY" "NEAR_DEPLOY" "NEAR_OTHER_EVENT" "OTHER_EVENT" Enumeration of possible event types for crash notifications. |
GeoLocation (object) or (string or null) Default: null |
{- "eventId": "string",
- "eventType": "DEPLOY",
- "geoLocation": null
}{- "gracePeriodStatus": "Started",
- "gracePeriodStartTimeUnix": 0,
- "gracePeriodDuration": 0
}Authenticates a user with Google or Apple ID token and returns Autoliv access and refresh tokens.
Note: This endpoint does not require authentication. This endpoint also validates token signatures.
| id_token required | string (Id Token) |
| provider required | string (Provider) |
{- "id_token": "string",
- "provider": "string"
}{- "access_token": "string",
- "refresh_token": "string",
- "token_type": "Bearer",
- "expires_in": 0,
- "organization_name": null
}Uses a refresh token to generate a new access token. The refresh token is single-use and will be invalidated after use.
| refresh_token required | string (Refresh Token) |
{- "refresh_token": "string"
}{- "access_token": "string",
- "refresh_token": "string",
- "token_type": "Bearer",
- "expires_in": 0
}Get the FOTA update information for a device
| deviceId required | string Device ID |
| firmwareVersion | string Firmware version of the ECU |
{- "nextVersion": null,
- "isUpdateAvailable": true,
- "description": null
}Returns whether a firmware update is available, based on the device's current firmware version.
| firmwareVersion | string Current firmware version on device |
{- "nextVersion": null,
- "isUpdateAvailable": true,
- "description": null
}Downloads firmware binary for organization principals using a strict
contract based on firmwareVersion.
Released firmware version can be downloaded by version name.
| firmwareVersion | string Firmware version to download |
Get a list of all available firmware versions
{- "firmwareVersions": [
- {
- "id": 0,
- "version": "string",
- "requiredVersionIdentifier": null,
- "filePath": null,
- "releaseDate": "2019-08-24T14:15:22Z",
- "description": null,
- "uploadedBy": null,
- "createdAt": null
}
]
}Upload a firmware file and store metadata in database
| version | string Firmware version |
| releaseDate | string <DateTime> Release date of the firmware |
| description | string Description of the firmware |
| requiredVersionIdentifier | integer Required version ID to upgrade from (optional) |
The firmware file binary data
{- "id": 0,
- "version": "string",
- "releaseDate": "2019-08-24T14:15:22Z",
- "filePath": "string",
- "description": "string",
- "requiredVersionIdentifier": null,
- "uploadedBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "message": "string"
}Updates device information and assigns it to current user or creates new device if it doesn't exist
| deviceId required | string Device id |
| numberOfInflations required | integer (Numberofinflations) |
| numberOfMaxInflations required | integer (Numberofmaxinflations) |
| productActivationState required | string (ProductActivationState) Enum: "active" "inactive" Enumeration of possible product activation states |
| minutesOfUsage required | integer (Minutesofusage) |
| deployedState required | string (DeployedState) Enum: "deployed" "not_deployed" Enumeration of possible deployed states for the device |
| firmwareVersion required | string (Firmwareversion) |
{- "numberOfInflations": 0,
- "numberOfMaxInflations": 0,
- "productActivationState": "active",
- "minutesOfUsage": 0,
- "deployedState": "deployed",
- "firmwareVersion": "string"
}{- "success": true,
- "message": "string",
- "data": null
}Retrieves a list of all devices in the system
{- "devices": [
- {
- "deviceId": "string",
- "hardwareVersion": null,
- "firmwareVersion": null,
- "latestAvailableVersion": null,
- "numberOfInflations": 0,
- "numberOfMaxInflations": 0,
- "productActivationState": "inactive",
- "minutesOfUsage": 0,
- "deployedState": "not_deployed",
- "isUpdateAvailable": null,
- "createdAt": "2019-08-24T14:15:22Z",
- "lastActivity": null,
- "usersDevices": [ ]
}
], - "count": 0
}Creates the device if it does not exist, otherwise updates it, so the recorded state matches the physical device. Call it on registration, after a deployment, after a firmware update, or as a periodic sync. The call is idempotent.
| deviceId required | string Device id |
| numberOfInflations required | integer (Numberofinflations) |
| numberOfMaxInflations required | integer (Numberofmaxinflations) |
| productActivationState required | string (ProductActivationState) Enum: "active" "inactive" Enumeration of possible product activation states |
| minutesOfUsage required | integer (Minutesofusage) |
| deployedState required | string (DeployedState) Enum: "deployed" "not_deployed" Enumeration of possible deployed states for the device |
| firmwareVersion required | string (Firmwareversion) |
{- "numberOfInflations": 0,
- "numberOfMaxInflations": 0,
- "productActivationState": "active",
- "minutesOfUsage": 0,
- "deployedState": "deployed",
- "firmwareVersion": "string"
}{- "success": true,
- "message": "string",
- "data": null
}Associates an inflator with the current authenticated user device.
Organization principals must use POST /v1/inflators with a required
deviceId.
| inflatorId required | string (Inflatorid) |
{- "inflatorId": "string"
}{- "message": "string"
}Validates inflator ID format and checks if it exists in the database. Available to mobile app and PTW principals; OEM partner tokens are rejected.
| inflatorId required | string Inflator ID to validate |
{- "isValid": true,
- "isUsed": "true"
}Links a validated inflator to a device, typically after an inflator is replaced during servicing, so the component history stays accurate. Associating the same inflator with the same device is idempotent.
| inflatorId required | string (Inflatorid) |
| deviceId required | string (Deviceid) |
{- "inflatorId": "string",
- "deviceId": "string"
}{- "message": "string"
}delete the information of a user's ICE contact information.
| contactIds required | string The contact ids |
[- {
- "contactName": "string",
- "phoneNumber": "string",
- "preferredLanguage": null,
- "userId": null,
- "emergencyContactId": null,
- "createdAt": null
}
]Gets the information of a user's ICE contact details.
[- {
- "contactName": "string",
- "phoneNumber": "string",
- "preferredLanguage": null,
- "userId": null,
- "emergencyContactId": null,
- "createdAt": null
}
]Add the information of a user's ICE (In Case of Emergency) contact information. Users can have up to 3 emergency contacts.
| contactName required | string (Contactname) |
| phoneNumber required | string (Phonenumber) |
Preferredlanguage (string) or (Preferredlanguage (string or null)) (Preferredlanguage) Default: null |
[- {
- "contactName": "string",
- "phoneNumber": "string",
- "preferredLanguage": null
}
][- {
- "contactName": "string",
- "phoneNumber": "string",
- "preferredLanguage": null,
- "userId": null,
- "emergencyContactId": null,
- "createdAt": null
}
]Creates an internal portal comment for a user, event, device, or firmware version. Any authenticated portal user can create comments. To create a reply, include the parent comment id in the request.
| targetType required | string (CommentTargetType) Enum: "User" "Event" "Device" "FirmwareVersion" Allowed comment target types. |
| targetId required | string (Targetid) [ 1 .. 100 ] characters |
Parentcommentid (string) or (Parentcommentid (string or null)) (Parentcommentid) Default: null | |
| body required | string (Body) non-empty |
{- "targetType": "User",
- "targetId": "string",
- "parentCommentId": null,
- "body": "string"
}{- "commentId": "ee0469af-2fa1-4b7e-b5f1-8e711a95821b",
- "targetType": "User",
- "targetId": "string",
- "parentCommentId": null,
- "authorId": "string",
- "authorName": "string",
- "body": null,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": null,
- "deletedAt": null
}Updates the body of an active portal comment. SafetyPortal.Admin users can update any comment. Other portal users can only update their own comments.
| commentId required | string Comment id. |
| body required | string (Body) non-empty |
{- "body": "string"
}{- "commentId": "ee0469af-2fa1-4b7e-b5f1-8e711a95821b",
- "targetType": "User",
- "targetId": "string",
- "parentCommentId": null,
- "authorId": "string",
- "authorName": "string",
- "body": null,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": null,
- "deletedAt": null
}Retrieves active portal comments for all items of a given target type,
ordered by creation time. Supports pagination via page and pageSize
query parameters. Valid target types are User, Event, Device, and FirmwareVersion.
| targetType required | string Comment target type. |
| page | integer Page number (default 1). |
| pageSize | integer Number of comments per page (default 100, max 1000). |
{- "comments": [
- {
- "commentId": "ee0469af-2fa1-4b7e-b5f1-8e711a95821b",
- "targetType": "User",
- "targetId": "string",
- "parentCommentId": null,
- "authorId": "string",
- "authorName": "string",
- "body": null,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": null,
- "deletedAt": null
}
], - "count": 0,
- "totalCount": 0,
- "page": 0,
- "pageSize": 0
}Retrieves active portal comments for a target item ordered by creation time. Valid target types are User, Event, Device, and FirmwareVersion.
| targetType required | string Comment target type. |
| targetId required | string Comment target identifier. |
{- "comments": [
- {
- "commentId": "ee0469af-2fa1-4b7e-b5f1-8e711a95821b",
- "targetType": "User",
- "targetId": "string",
- "parentCommentId": null,
- "authorId": "string",
- "authorName": "string",
- "body": null,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": null,
- "deletedAt": null
}
], - "count": 0
}Retrieves all users in the system. This is an administrative endpoint that requires authentication from the PTW Admin Portal. Only tokens issued by the configured PTWAdminPortalIssuer are allowed.
{- "users": [
- {
- "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
- "name": null,
- "email": null,
- "createdAt": null,
- "lastSeenAt": null,
- "organizationName": null,
- "usersDevices": [ ]
}
], - "count": 0
}Creates a new user and associates it with the provided id. Available to mobile app and PTW principals; OEM partner tokens are rejected.
Name (string) or (Name (string or null)) (Name) Default: null | |
Email (string) or (Email (string or null)) (Email) Default: null |
{- "name": null,
- "email": null
}{- "name": null,
- "email": null,
- "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
- "provider": "string"
}