XDM API Changelog

XDM API Changelog

May 15, 2026

Added Endpoints

 

Looking at the existing changelog, the section numbers follow the document's table of contents. I need to check the actual OpenAPI spec to find where these groups fall.Here's the updated changelog with proper section locations:


May 26, 2026

Added Endpoints

9.2 POST /api/external/v1/firmware/list

Location: Section 9.2

Description: Retrieve a paged list of firmwares with optional filtering.

Details:

  • Request Body: application/json

  • Response: 200 (success)

Supports filtering by version and notes fields, extended from the base paginated request contract.


9.3 GET /api/external/v1/firmware/getFirmwareByTypeAndId

Location: Section 9.3

Description: Retrieve firmware details by type and ID.

Details:

  • Parameters: id (integer), groupType (integer)

  • Response: 200 (success)


9.4 GET /api/external/v1/firmware/download

Location: Section 9.4

Description: Download a firmware file by ID and group type.

Details:

  • Parameters: id (integer), groupType (integer)

  • Response: 200 (success), 404 (not found)


9.5 PUT /api/external/v1/firmware

Location: Section 9.5

Description: Update an existing firmware entry.

Details:

  • Request Body: application/json

  • Response: 200 (success)

Allows updating firmware metadata including notes, availability, visibility, assigned hardware versions, and dealer assignments.


9.6 POST /api/external/v1/firmware/import

Location: Section 9.6

Description: Import new firmware entries into the system.

Details:

  • Response: 200 (success)


17.4 PUT /api/external/v3/settingsOverrides/{deviceUid}/local

Location: Section 17.4

Description: Update device settings overrides using localSettingId and localGroupId from the user settings template.

Details:

  • Path Parameter: deviceUid (string)

  • Request Body: application/json

  • Response: 200 (success)

This endpoint allows updating settings overrides for a specific device using local IDs sourced directly from the user settings template structure, rather than global identifiers.


19.1 POST /api/external/v1/sms/send

Location: Section 19.1

Description: Send an SMS message to one or more devices.

Details:

  • Request Body: application/json

  • Response: 200 (success)

Accepts a list of device UIDs, SMS type, message body, and an optional addSignature flag.


19.2 POST /api/external/v1/sms/sendSdk

Location: Section 19.2

Description: Send an SMS message to one or more SDK devices.

Details:

  • Request Body: application/json

  • Response: 200 (success)

Extends the standard SMS send contract with an optional connectionParameters field for SDK-specific connection settings.


19.3 POST /api/external/v1/sms/preview

Location: Section 19.3

Description: Preview an SMS message before sending.

Details:

  • Request Body: application/json

  • Response: 200 (success)

Accepts the same request contract as the send endpoint — device UIDs, SMS type, message body, and an optional signature flag — allowing callers to verify message content prior to dispatch.


23.1 DELETE /api/external/v1/userTemplatesFiles/temp/{fileName}

Location: Section 23.1

Description: Delete a temporary template file by filename.

Details:

  • Path Parameter: fileName (string)

  • Response: 200 (success)


23.2 GET /api/external/v1/userTemplatesFiles/temp/{fileName}

Location: Section 23.2

Description: Retrieve a temporary template file by filename.

Details:

  • Path Parameter: fileName (string)

  • Response: 200 (success), 204 (no content)


23.3 GET /api/external/v1/userTemplatesFiles/stored/{fileName}

Location: Section 23.3

Description: Retrieve a stored template file by filename.

Details:

  • Path Parameter: fileName (string)

  • Response: 200 (success), 204 (no content)


23.4 POST /api/external/v1/userTemplatesFiles/temp

Location: Section 23.4

Description: Upload or update a temporary file associated with a template element.

Details:

  • Request Body: application/json

  • Response: 200 (success)

Accepts fileData (Base64-encoded content), fileName, elementId, acceptedTypes, and maxSize. Intended for staging files before they are committed to a template element.


Also worth noting — Section 24 (UserTemplatesGatewayExternal) has a new supporting endpoint GET /api/external/v1/userTemplates/{templateId}/forDuplication which returns template data prepared for use with the existing duplicate endpoint (Section 21.2).

6.12 POST /api/external/v4/customCommands

Location: Section 6.12

Description: Added v4 endpoint for sending custom commands to multiple devices using device UIDs.

Details:

  • Request Body: application/json

  • Response: 200 (success), 400 (validation errors), 403 (unauthorized), 500 (internal error)

This endpoint introduces version 4 of custom commands functionality.
Unlike previous versions, each command item now includes its own device UID and optional output index, which is required for XG devices.
The endpoint supports sending custom commands to multiple devices in a single request with an updated request/response contract.

6.13 GET /api/external/v4/customCommands/{uid}/responses

Location: Section 6.13

Description: Retrieve custom command responses for a specific device by UID.

Details:

  • Path Parameter: uid (string)

  • Request Body: application/json

  • Response: 200 (success), 400 (validation errors), 403 (unauthorized), 500 (internal error)

This endpoint introduces version 4 of custom command response retrieval using device UID instead of IMEI.
The response contract was updated to support the new v4 custom command response model.

6.14 GET /api/external/v4/customCommands/{uid}/history

Location: Section 6.14

Description: Retrieve sent custom command history for a specific device by UID.

Details:

  • Path Parameter: uid (string)

  • Request Body: application/json

  • Response: 200 (success), 400 (validation errors), 403 (unauthorized), 500 (internal error)

This endpoint introduces version 4 of custom command history retrieval using device UID instead of IMEI.
The endpoint returns paged command history data using the updated v4 response contract.

Jan 1, 2026

Added Endpoints

6.11 POST /api/external/v4/devicesSdk/filter 

Location: Section 6.11

Description: Added v4 endpoint for filtering SDK devices.

Details:

  • Request Body: application/json

  • Response: 200 (success), 400 (validation errors), 403 (unauthorized), 500 (internal error)

This endpoint introduces version 4 of device SDK filtering and extends the existing v1 and v3 filter functionality with the latest improvements to the request/response contract. 

 

Jan 7, 2026

Updated Endpoints

6.4 POST /api/external/v1/devicesSdk/cancelUpdate

6.6 POST /api/external/v3/devicesSdk/cancelUpdate

Added validation that permits inserting multiple devices in a single request as long as they belong to the same dealer. Devices from different dealers can no longer be mixed in one request.
This aligns the behavior with other endpoints and improves audit functionality.

 

20.2 PUT /api/external/v1/userTemplates/{templateId}/categories/ {categoryId}/elementGroups/{elementGroupId}/elements/{elementId}

Added support for submitting files in Base64 format.
File-type elements now support an additional filename field, which is required when submitting files.

Example request body for filename upload:

{ "id": 12345, "value": "SGVsbG8gd29ybGQh", "filename": "new file.txt" }

 

20.3 PUT /api/external/v1/userTemplates/{templateId}/elements/multiple

Added support for submitting files in Base64 format.
File-type elements now support an additional filename field, which is required when submitting files.

Example request body for filename upload:

[ { "id": 12345, "value": "SGVsbG8gd29ybGQh", "filename": "new file.txt" } ]

 

Oct 3, 2025

Added Endpoints

 

15.1 POST /api/external/v1/rollouts/create

Location: Section 15.1

Description: Endpoint to create a new rollout.

Details:

  • Request Body: application/json

  • Auth: Authorized dealer users only

  • Response: 200 (success), 400 (validation errors), 403 (unauthorized), 500 (internal error)

 

15.2 GET /api/external/v1/rollouts/{rolloutId}

Location: Section 15.2

Description: Retrieve details of a specific rollout.

Details:

  • Path Parameter: rolloutId (GUID)

  • Auth: Authorized dealer users only

  • Response: 200 (success), 400, 403, 404 (not found), 500

 

15.3 DELETE /api/external/v1/rollouts/{rolloutId}

Location: Section 15.3

Description: Delete an existing rollout.

Details:

  • Path Parameter: rolloutId (GUID)

  • Response: 200 (success), 400, 403, 500

 

15.4 GET /api/external/v1/rollouts/{rolloutId}/approvals

Location: Section 15.4

Description: Retrieve approvals and their status for a rollout.

Details:

  • Path Parameter: rolloutId (GUID)

  • Response: 200 (success), 400, 403, 500

 

15.5 GET /api/external/v1/rollouts/devices

Location: Section 15.5

Description: Retrieve device states for a rollout with filtering options.

Details:

  • Request Body: application/json

  • Response: 200 (success), 400, 403, 500

 

15.6 GET /api/external/v1/rollouts

Location: Section 15.6

Description: Retrieve filtered rollouts and their data.

Details:

  • Request Body: application/json

  • Response: 200 (success), 400, 403, 500

 

15.7 GET /api/external/v1/rollouts/device/commands

Location: Section 15.7

Description: Retrieve commands and their latest status for a rollout device.

Details:

  • Request Body: application/json

  • Response: 200 (success), 400, 403, 500

 

15.8 GET /api/external/v1/rollouts/device/command/states

Location: Section 15.8

Description: Retrieve states of a specific device command.

Details:

  • Request Body: application/json

  • Response: 200 (success), 400, 403, 500

 

15.9 POST /api/external/v1/rollouts/{rolloutId}/release

Location: Section 15.9

Description: Release a rollout that is ready.

Details:

  • Path Parameter: rolloutId (GUID)

  • Response: 200 (success), 400, 403, 500

 

15.10 POST /api/external/v1/rollouts/{rolloutId}/terminate

Location: Section 15.10

Description: Terminate an active rollout.

Details:

  • Path Parameter: rolloutId (GUID)

  • Response: 200 (success), 400, 403, 500

 

15.11 POST /api/external/v1/rollouts/{rolloutId}/approve

Location: Section 15.11

Description: Approve a rollout.

Details:

  • Path Parameter: rolloutId (GUID)

  • Response: 200 (success), 400, 403, 500

 

15.12 POST /api/external/v1/rollouts/remove/devices

Location: Section 15.12

Description: Remove devices from an existing rollout.

Details:

  • Request Body: application/json

  • Response: 200 (success), 400, 403, 500

 

Sep 1, 2025

Created Endpoints

POST /api/external/v1/userTemplates/duplicate

Location: Section 21.2

Description: Endpoint to duplicate existing settings template

Details:

  • Request Body: application/json

  • Auth: Authorized dealer users only

  • Response: 200 (success), 400 (validation errors), 403 (unauthorized), 500 (internal error)

NAME

TYPE

DESCRIPTION

NAME

TYPE

DESCRIPTION

settingTemplateId

integer

ID of an already existing settings template

name

string

Name of a new settings template

notes

string

Notes for a new settings template

dealerId

integer

Dealer ID of the new settings template owner

 

DELETE /api/external/v1/userTemplates/{templateId}

Location: Section 21.5

Description: Endpoint to delete existing settings template

Details:

  • Path Parameter: id (int32)

  • Auth: Authorized dealer users only

  • Response: 200 (success), 400 (validation errors), 403 (unauthorized), 500 (internal error)

NAME

TYPE

DESCRIPTION

NAME

TYPE

DESCRIPTION

templateId

integer

ID of an already existing settings template

Aug 20, 2025

Updated Endpoints

20.3 POST /api/external/v1/userTemplates/{templateId}/categories/{categoryId}/elementGroups

Location: Section 20.3

Description: Endpoint to create a new element group

Details:

  • Request Body: application/json

  • Auth: Authorized dealer users only

  • Now allows for submission of a file in base64 format. Introduced new field: filename for each file type elements.

  • Response: 200 (success), 400 (validation errors), 403 (unauthorized), 500 (internal error)

 

 Apr 23, 2025

Added Endpoints

15.2 POST /api/external/v1/scripts

Location: Section 15.2

Description: Endpoint to create a new script

Details:

  • Request Body: application/json

  • Auth: Authorized dealer users only

  • Allows for submission of a new script with source code and configuration parameters.

  • Response: 200 (success), 400 (validation errors), 403 (unauthorized), 500 (internal error)

 

15.3 GET /api/external/v1/scripts/{id}

Location: Section 15.3

Description: Retrieve script details by ID

Details:

  • Path Parameter: id (int32)

  • Auth: Authorized dealer users only

  • Returns script metadata and content

  • Response: 200 (success), 400, 403, 404 (not found), 500

 

15.4 PUT /api/external/v1/scripts/{id}

Location: Section 15.4

Description: Update an existing script

Details:

  • Path Parameter: id (int32)

  • Request Body: application/json

  • Auth: Authorized dealer users only

  • Replaces script content and configuration

  • Response: 200 (success), 400, 403 (unauthorized or released), 500

 

15.5 DELETE /api/external/v1/scripts/{id}

Location: Section 15.5

Description: Delete a script by ID

Details:

  • Path Parameter: id (int32)

  • Auth: Authorized dealer users only

  • Removes the script from the system

  • Response: 200 (success), 403, 404 (not found), 500

 

15.6 POST /api/external/v1/scripts/Release/{id}

Location: Section 15.6

Description: Release a script

Details:

  • Path Parameter: id (int32)