Milestone API Gateway - Password update from 3rd Party System to Milestone XProtect Management Client

We are looking to use some scripts thru the Milestone API gateway and had some questions pertaining to how to use and set up what we need. Technical Support was able to answer some of the questions but questions 5 thru 7 they referred me to ask here. Any assistance would be much appreciated. We are on XProtect Corporate v25r3. Below is the complete list of questions we asked:

1. Does our version of Milestone XProtect support API access for this workflow? Answer: Yes via the API Gateway
2. Is the Milestone API Gateway already enabled in our environment? If not, what are the steps to enable it? Answer: Yes in versions 2025 R2 and higher it gets installed for sure when running the installer wizard, for you to verify if it is you may access Control Panel> Programs and Features> Right Click the XProtect VMS [your version] with a blue diamond :small_blue_diamond: > Select change> Carefully select ‘change’ components and not ‘remove or uninstall’ > click next and see if the checkbox for the API Gateway component is checked, if it’s not then you may check it and click next to install it , then click finish
3. What API Gateway URL should we use for the script? Answer: You may find it via the Management Client > Tools > Registered Services> Gateway> the URL for your API gateway it should be listed and visible from there (it looks something like this: https://<management_server_address>/api/idp/ )
4. Can we create a dedicated service account for this instead of using a full admin account? Answer: Yes, you may test with a Basic user account or a Windows account with limited permissions, making sure the role it belongs to has the required logon read and edit permissions for the tasks required, for instance:

  • Overall Security: Logon (Allow).

  • Hardware: Read (Allow), Edit (Allow) — Edit is required to execute the ChangePasswordHardware method.

  • Cameras: Read (Allow).

  1. What minimum permissions would that account need to:
    o list hardware and cameras,
    o read hardware driver settings/MAC addresses,
    o read stored camera passwords using ‘ReadPasswordHardware’,
    o update stored camera passwords using ‘ChangePasswordHardware’,
    o check task status?

This is a good question, to confirm if the minimum required permissions are the afore listed please post the question via Milestone Developer’s team via our Developer forum (normal response time is between 24 to 48 hours): https://developer.milestonesys.com/s/ for a Milesone Software Develpment engineer to help us confirm,

  1. Does ‘ChangePasswordHardware’ with ‘updatePasswordOnDevice:False’ update only the password stored in Milestone, without pushing the password change to the physical camera? Answer: Yes, it sounds like it, but it’s the 1st time I see such a parameter I’d also ask Milestone Development to confirm,
  2. Are there any camera driver/model limitations or bulk update limits we should know about before running this against camera groups?

I Could not find a specific forum or post or KB answering that question, so I google-searched it and found the following possible considerations:

Limitations and Best Practices (Bulk Limits):

  • Asynchronous Tasks: Hardware password changes are handled as asynchronous tasks. Your script should not assume the change is instant; it must poll the Task Status endpoint to verify successful completion.

Batching / Rate Limiting: We strongly recommend against sending hundreds of requests simultaneously, as this can create a deadlock in the SQL database. You may structure your script to process the task in batches.

Hello Kelly,

It is hard for us to answer this question, because role settings are different among XProtecct editions. You may know how to setup on Management Client but let me explain it once again.

Open Management Client as admin group user, and go to Security and click Roles.
Right click “Add Role” and create a new one.
Select the role. Go to Overall Security tab, then you can customize role settings - this settings are not the same in all editions so please figure out what the best for you is.

Let me get back to you later.

Yes. Please see this documentation page.

Let me tell you about the history of the method. Long time ago, we didn’t have this option updatePasswordOnDevice, and we needed to change a device password on XProtect, and on the device. Once the password synched on both - on the device and XProtect, then the device on XProtect started working again.

Later, Milestone Developement added the option. So you can select to chage it on device or not.

One thing that you need be careful, this option updatePasswordOnDevice=true is available for most drivers but not all drivers. Thus if it does not work on your device driver, then you need to change the password in old style - change it on device and XProtect.