DMS Swagger GUI
NorthBound CPE Management Interface
The Swagger UI provides a user-friendly way to interact with our NorthBound (NB) APIs for CPE (Customer Premises Equipment) management. It allows you to visualize and interact with the API’s resources without needing to understand the underlying implementation logic. This makes it straightforward for both backend implementation and client-side consumption.
Swagger is a powerful tool that simplifies API usage by providing a well-organized interface for developers to explore available endpoints and test them. Below, you'll find essential details on how to make the most of our Swagger-based NB API documentation.
Swagger GUI URL: https://your_ACS/v1/doc
OpenAPI URL: https://your_ACS/v1/doc/swagger.json
Understanding Swagger:
- Swagger is an open-source framework for designing, building, and documenting RESTful APIs.
- It simplifies API development and usage by providing a clean and interactive interface.
- Developers can explore available endpoints, send requests, and view responses, making it an invaluable tool for API integration.
- Our Swagger-based documentation empowers you to efficiently manage and interact with your CPEs through NB APIs.
Explore our API documentation, test endpoints, and streamline your CPE management with Swagger!
Accessing Swagger

To access the Swagger GUI, use the provided Swagger GUI URL in your web browser. This interface offers a comprehensive overview of the available endpoints, request parameters, and response structures.
Interacting with Endpoints

Swagger allows you to interact with various endpoints, such as the "GetParameterValues" example shown below:

- To test an endpoint, select the "Try it out" button.
- Modify the
cpe_idparameter with the CPE's serial number value. - Add a list of CWMP requested parameters, which can include full or partial CWMP paths.
Viewing API Responses

After executing a request, Swagger displays the response, allowing you to view the values read from the CPE. The response body provides valuable data for further analysis or integration into your systems.

Generated requests and authorization
If you want to use any of the further presented examples you'll need to manually add your DMS credentials (login, password) into your cURL commands as follows:
-u login:password \
Said cURLs should look like that:

Otherwise, generated cURL commands will return "Error 401 Access Denied" when executed.
Next will be a section with all presented methods grouped by their mutual functionality.
Users
ChangeOwnPassword
POST /method/ChangeOwnPassword
This method changes the password of the calling user. It cannot be used to change another user's password: the request does not accept a username, and a request containing one is rejected with 422 Unprocessable Content.
The caller can be identified by either of the authentication methods supported by the API:
- HTTP Basic authentication. The username is taken from the
Authorizationheader, and the password in the header must matchcurrent_passwordin the request body. - The
jwtcookie. The username is taken from the token'susernameclaim.
If both authentication methods are used and identify different users, the request is rejected with 403 Access forbidden. The current password is always required and verified before it is changed, including for an already authenticated session.
The new password must:
- contain at least 8 characters;
- contain at least one capital letter;
- contain at least one number or special character;
- differ from the current password.
A password that does not meet these requirements is rejected with 400 Bad request, and the response identifies the unmet requirement.
After a successful password change, the current JWT is revoked and the jwt cookie is cleared. Sign in again using the new password. A client using Basic authentication must use the new password in subsequent requests.
The method requires the users storage to be configured through USER_STORAGE_URL. If it is not configured, the method returns 503 Service Unavailable.
Request parameters:
{
"current_password": "string",
"new_password": "string"
}
Example:
Request
curl -X POST 'https://your_ACS/v1/method/ChangeOwnPassword' \
-u 'login:current_password' \
-H 'Content-Type: application/json' \
-d '{
"current_password": "current_password",
"new_password": "New_password1"
}'
Response
{
"result": {
"code": 200,
"message": "OK",
"details": "Password was changed"
}
}
Scenario Service
Methods for direct CPE interaction.
Common arguments:
"search_options":
- "cpe_id": "string"; CPE Serial number
- "cid": "string"; Reserved field for custom identificator of CPE - for example, customer ID, login, customer account number, depending on your use cases
- "cid2": "string"; Reserved field for custom identificator of CPE - for example, customer ID, login, customer account number, depending on your use cases
- "cid3": "string"; Reserved field for custom identificator of CPE - for example, customer ID, login, customer account number, depending on your use cases
- "mac": "string"; CPE device mac address
- "location": "string"; CPE device location identifier
- "data_model": "string"; Data model that is used by CPE device
- "vendor": "string"; Company that manufacturing or selling device
- "ip_address": "string"; CPE device IP address
- "model": "string"; CPE device model
- "hw_version": "string"; Hardware version of CPE device
- "sw_version": "string"; Version of firmware installed on CPE device
- "upstream_id": "string"; Serial number of device that has higher hierarchy in network relation
- "protocol": "string"; Name of the protocol that is used by CPE device
- "first_seen": "int" or "string" First time the CPE device interacted with ACS presented as unix timestamp; can be given as an integer int or as a string using comparison operators with the following structure: ">int", "<int", "!int"
- "last_seen": "int" or "string" Last time the CPE device interacted with ACS presented as unix timestamp; can be given as an integer int or as a string using comparison operators with the following structure: ">int", "<int", "!int"
"command_options":
-
"async": boolean;
- true - run scenario, don't wait for response, return task ID. For example of usage see Asynchronous Scenario. Use task ID (env_id) in method GetResult
- false (default) - run scenario, wait for response, return scenario result
-
"no_cnr": boolean;
- true - don't send Connection Request
- false (default) - send Connection Request
-
"multiple": boolean;
- true - If multiple CPEs are found, run scenario on all of them
- false (default) - check for only one CPE
Default run Scenario schema:
CPE - Customer Premises Equipment
ACS - Automatic Configuration Server
OSS - Operation Support System
Common Response Parameters:
- 200 - OK
{
"result": {
"message": "string",
"code": 200,
"env_id": "string",
"details": [
{
"key": "string",
"value": "value of any type"
}
]
}
}
- 400 - Bad Request
{
"error": "string"
}
- 401 - Authentication is missing or invalid
- 500 - Internal Server Error
{
"error": "string"
}
Method-specific parameters:
GetParameterValues
POST /method/GetParameterValues
This method is used for getting the value of one or more CPE Parameters.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": [ # A list of TR-069 parameters to request values of
"String"
]
}
Response Parameters:
{
"result": {
"message": "string",
"code": 200,
"env_id": "string",
"details": [
{
"key": "string", # TR-069 key
"value": "value of any type" # value of corresponding key
}
]
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/GetParameterValues
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 126
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": [
"InternetGatewayDevice.ManagementServer."
]
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:02:48 GMT
Content-Type: application/json
Content-Length: 1412
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "InternetGatewayDevice.ManagementServer.ConnReqAllowedJabberIDs",
"value": ""
},
{
"key": "InternetGatewayDevice.ManagementServer.ConnReqXMPPConnection",
"value": ""
},
{
"key": "InternetGatewayDevice.ManagementServer.ConnectionRequestPassword",
"value": ""
},
{
"key": "InternetGatewayDevice.ManagementServer.ConnectionRequestURL",
"value": "http://cpe-emulator:8082/CPE/dms/ACSURL/http%3A//edgeproxy%3A7547/TR69/DMS_DEVICE"
},
{
"key": "InternetGatewayDevice.ManagementServer.ConnectionRequestUsername",
"value": "XsTI2F"
},
{
"key": "InternetGatewayDevice.ManagementServer.ManageableDeviceNotificationLimit",
"value": 15
},
{
"key": "InternetGatewayDevice.ManagementServer.ManageableDeviceNumberOfEntries",
"value": 0
},
{
"key": "InternetGatewayDevice.ManagementServer.ParameterKey",
"value": ""
},
{
"key": "InternetGatewayDevice.ManagementServer.Password",
"value": ""
},
{
"key": "InternetGatewayDevice.ManagementServer.PeriodicInformEnable",
"value": true
},
{
"key": "InternetGatewayDevice.ManagementServer.PeriodicInformInterval",
"value": 86400
},
{
"key": "InternetGatewayDevice.ManagementServer.PeriodicInformTime",
"value": [
1,
1,
1,
0,
0,
0
]
},
{
"key": "InternetGatewayDevice.ManagementServer.URL",
"value": "http://edgeproxy:7547"
},
{
"key": "InternetGatewayDevice.ManagementServer.UpgradesManaged",
"value": false
},
{
"key": "InternetGatewayDevice.ManagementServer.Username",
"value": "usr0p3nf1b3r"
}
]
}
}
SetParameterAttributes
POST /method/SetParameterAttributes
This method is used for modification the attributes of one or more CPE Parameters.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": [
{
"Name": "string", # A name of TR-069 parameter
"NotificationChange": true, # change Notification
"Notification": 0, # Notification mode
"AccessListChange": true, # change Access Mode
"AccessList": [ # list of Access Modes
"string"
]
}
]
}
Access modes:
- “Subscriber”: Indicates write access by an interface controlled on the subscriber LAN. Includes any and all such LAN-side mechanisms, which MAY include but are not limited to TR-064 (LAN-side DSL CPE Configuration Protocol), UPnP, the device’s user interface, client-side telnet, and client-side SNMP.
Notification modes:
- 0: Notification off. The CPE need not inform the ACS of a change to the specified Parameter(s).
- 1: Passive notification. Whenever the specified Parameter value changes, the CPE MUST include the new value in the ParameterList in the Non-HEARTBEAT Inform message that is sent the next time a Session is established to the ACS.
- 2: Active notification. Whenever the specified Parameter value changes, the CPE MUST initiate a Session to the ACS, and include the new value in the ParameterList in the associated Inform message.
- 3: Passive lightweight notification. Whenever the specified Parameter value changes, the CPE MUST include the new value in the ParameterList in the next Lightweight Notification message that is sent.
- 4: Passive notification with passive lightweight notification. This combines the requirements of the values 1 (Passive notification) and 3 (Passive lightweight notification). The two mechanisms operate independently.
- 5: Active lightweight notification. Whenever the specified Parameter value changes, the CPE MUST include the new value in the ParameterList in the associated Lightweight Notification message and send that message.
- 6: Passive notification with active lightweight notification. This combines the requirements of the values 1 (Passive notification) and 5 (Active lightweight notification). The two mechanisms operate independently.
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/SetParameterAttributes
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 250
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": [
{
"AccessList": [],
"Notification": 1,
"NotificationChange": true,
"Name": "InternetGatewayDevice.ManagementServer.PeriodicInformInterval",
"AccessListChange": false
}
]
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:02:49 GMT
Content-Type: application/json
Content-Length: 247
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "data",
"value": [
{
"methodName": "SetParameterAttributesResponse",
"is_response": true,
"body": {},
"ID": "3fc89dbd-7744-4d47-8fe0-297df8560dda",
"cwmpVersion": "",
"namespace": ""
}
]
}
]
}
}
ChangeDUState
POST /method/ChangeDUState
This method MAY be used by an ACS to trigger the explicit state transitions of Install, Update, and Uninstall for a Deployment Unit (DU), i.e. installing a new DU, updating an existing DU, or uninstalling an existing DU.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": {
"Operations": {
"Install": [
{
"URL": "string",
"UUID": "string",
"Username": "string",
"Password": "string",
"ExecutionEnvRef": "string"
}
],
"Update": [
{
"UUID": "string",
"Version": "string",
"URL": "string",
"Username": "string",
"Password": "string"
}
],
"Uninstall": [
{
"UUID": "string",
"Version": "string",
"ExecutionEnvRef": "string"
}
]
},
"CommandKey": "string"
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/ChangeDUState
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 402
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": {
"Operations": {
"Update": [
{
"URL": "http://your.url.com",
"Username": "",
"Password": "",
"Version": "",
"UUID": ""
}
],
"Install": [
{
"URL": "http://your.url.com",
"Username": "",
"Password": "",
"UUID": "",
"ExecutionEnvRef": ""
}
],
"Uninstall": [
{
"Version": "sss",
"UUID": "",
"ExecutionEnvRef": ""
}
]
},
"CommandKey": ""
}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:02:51 GMT
Content-Type: application/json
Content-Length: 238
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "data",
"value": [
{
"methodName": "ChangeDUStateResponse",
"is_response": true,
"body": {},
"ID": "546e2eeb-068c-4791-bf2b-601e8f765edd",
"cwmpVersion": "",
"namespace": ""
}
]
}
]
}
}
FactoryReset
POST /method/FactoryReset
This method resets the CPE to its factory default state, and calls for use with extreme caution.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/FactoryReset
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 85
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": {}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:02:52 GMT
Content-Type: application/json
Content-Length: 237
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "data",
"value": [
{
"methodName": "FactoryResetResponse",
"is_response": true,
"body": {},
"ID": "3ebc3799-214f-4690-bff5-e879d6aa45a3",
"cwmpVersion": "",
"namespace": ""
}
]
}
]
}
}
GetResult
POST /method/GetResult
Method for getting the result of a scenario by env ID. Useful for async operation.
Request parameters:
{
"env_id": "string", # Scenario ID returned by an RPC method
"timeout": 0 # Timeout in seconds to get the result
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/GetResult
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 57
Content-Type: application/json
body:
{
"env_id": "00000-OOOOOOO-0000000-OOOOOOO",
"timeout": 5
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:03:38 GMT
Content-Type: application/json
Content-Length: 56
Connection: keep-alive
body:
{
"result": {
"code": 204,
"message": "Polling time is over"
}
}
DeleteObject
POST /method/DeleteObject
This method is used by an ACS to delete an instance of a Multi-Instance Object.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": {
"ObjectName": "string",
"ParameterKey": "string"
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/DeleteObject
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 196
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": {
"ObjectName": "InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.2.",
"ParameterKey": ""
}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:02:53 GMT
Content-Type: application/json
Content-Length: 96
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "Status",
"value": 0
}
]
}
}
AddObject
POST /method/AddObject
This method is used by an ACS to create a new instance of a Multi-Instance Object.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": {
"ObjectName": "string",
"ParameterKey": "string"
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/AddObject
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 194
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": {
"ObjectName": "InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.",
"ParameterKey": ""
}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:02:54 GMT
Content-Type: application/json
Content-Length: 131
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "InstanceNumber",
"value": 2
},
{
"key": "Status",
"value": 0
}
]
}
}
ScheduleDownload
POST /method/ScheduleDownload
This method MAY be used by the ACS to cause the CPE to download a specified file from the designated location and apply it within either one or two specified time windows.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": {
"CommandKey": "string",
"FileType": "1 Firmware Upgrade Image",
"URL": "string",
"Username": "string",
"Password": "string",
"FileSize": 0,
"TargetFileName": "string",
"TimeWindowList": [
{
"WindowStart": 0,
"WindowEnd": 0,
"WindowMode": "3 When Idle",
"UserMessage": "string",
"MaxRetries": 0
}
]
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/ScheduleDownload
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 366
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": {
"Username": "",
"URL": "http://your.url.com",
"TargetFileName": "",
"FileType": "1 Firmware Upgrade Image",
"FileSize": 200,
"TimeWindowList": [
{
"WindowMode": "1 At Any Time",
"WindowEnd": 0,
"WindowStart": 0,
"MaxRetries": -1,
"UserMessage": ""
}
],
"Password": "",
"CommandKey": ""
}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:02:55 GMT
Content-Type: application/json
Content-Length: 316
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "data",
"value": [
{
"methodName": "DownloadResponse",
"is_response": true,
"body": {
"Status": 1,
"StartTime": "0001-01-01T00:00:00Z",
"CompleteTime": "0001-01-01T00:00:00Z"
},
"ID": "c2baae8d-b310-40c1-95a8-23c115763425",
"cwmpVersion": "",
"namespace": ""
}
]
}
]
}
}
Reboot
POST /method/Reboot
This method causes the CPE to reboot, and calls for use with extreme caution.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": "string" # Reboot description string
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/Reboot
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 96
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": "RebootByDMS"
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:02:56 GMT
Content-Type: application/json
Content-Length: 231
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "data",
"value": [
{
"methodName": "RebootResponse",
"is_response": true,
"body": {},
"ID": "ee56d5b4-8bbb-4219-b2dd-cf056472a06f",
"cwmpVersion": "",
"namespace": ""
}
]
}
]
}
}
SetParameterValues
POST /method/SetParameterValues
This method is used for modifying the value of one or more CPE Parameters.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": [
{
"Name": "string",
"Value": "value of any type",
"Type": "string"
}
]
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/SetParameterValues
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 183
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": [
{
"Name": "InternetGatewayDevice.ManagementServer.ParameterKey",
"Value": "test",
"Type": "string"
}
]
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:02:57 GMT
Content-Type: application/json
Content-Length: 96
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "Status",
"value": 1
}
]
}
}
SmartSPV
POST /method/SmartSPV
This method is used for modifying the value of one or more CPE Parameters instead of standard SetParameterValues. If the modifying by SetParameterValues was unsuccessful, you can use this method. In this method parameters are set one by one, and if necessary, the boolean values are changes to integer.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": [
{
"Name": "string",
"Value": "value of any type",
"Type": "string"
}
]
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/SmartSPV
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 296
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {
"async": false,
"timeout": 300,
"multiple": false,
"no_cnr": false
},
"parameters": [
{
"Name": "InternetGatewayDevice.ManagementServer.PeriodicInformEnable",
"Value": 1
}
]
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Wed, 24 Jul 2024 08:23:48 GMT
Content-Type: application/json
Content-Length: 575
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "code",
"value": 200
},
{
"key": "message",
"value": "Success"
},
{
"key": "applied_params",
"value": [
{
"param": {
"ParameterKey": "Update parameters",
"ParameterList": [
{
"Name": "InternetGatewayDevice.ManagementServer.PeriodicInformEnable",
"Value": 1,
"Type": "None"
}
]
},
"message": "SPV response with status 1",
"lastResult": [
{
"methodName": "SetParameterValuesResponse",
"is_response": true,
"body": {
"Status": 1
},
"ID": "069b409f-2f1c-4f41-b720-eaab3e28a0eb",
"cwmpVersion": "",
"namespace": ""
}
]
}
]
},
{
"key": "failed_params",
"value": []
}
]
}
}
CancelTransfer
POST /method/CancelTransfer
This method MAY be used by the ACS to cause the CPE to cancel a file transfer initiated by an earlier Download, ScheduleDownload, or Upload method call.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": "string"
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/CancelTransfer
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 95
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": "CommandKey"
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:02:58 GMT
Content-Type: application/json
Content-Length: 239
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "data",
"value": [
{
"methodName": "CancelTransferResponse",
"is_response": true,
"body": {},
"ID": "2e0118c7-2289-41e8-8154-250bcc57aa7b",
"cwmpVersion": "",
"namespace": ""
}
]
}
]
}
}
GetParameterAttributes
POST /method/GetParameterAttributes
This method is used for getting the attributes of one or more CPE Parameters.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": [
"string"
]
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/GetParameterAttributes
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 126
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": [
"InternetGatewayDevice.ManagementServer."
]
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:02:59 GMT
Content-Type: application/json
Content-Length: 1778
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "InternetGatewayDevice.ManagementServer.ConnReqAllowedJabberIDs",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.ConnReqXMPPConnection",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.ConnectionRequestPassword",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.ConnectionRequestURL",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.ConnectionRequestUsername",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.ManageableDeviceNotificationLimit",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.ManageableDeviceNumberOfEntries",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.ParameterKey",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.Password",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.PeriodicInformEnable",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.PeriodicInformInterval",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.PeriodicInformTime",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.URL",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.UpgradesManaged",
"value": {
"Notification": 0,
"AccessList": null
}
},
{
"key": "InternetGatewayDevice.ManagementServer.Username",
"value": {
"Notification": 0,
"AccessList": null
}
}
]
}
}
ScheduleInform
POST /method/ScheduleInform
This method MAY be used by an ACS to request the CPE to schedule a one-time Inform method call (separate from its periodic Inform method calls) sometime in the future.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": {
"DelaySeconds": 0,
"CommandKey": "string"
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/ScheduleInform
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 125
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": {
"DelaySeconds": 20,
"CommandKey": "Test"
}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:03:00 GMT
Content-Type: application/json
Content-Length: 239
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "data",
"value": [
{
"methodName": "ScheduleInformResponse",
"is_response": true,
"body": {},
"ID": "01bad1c6-8d96-4e05-a4c7-d76378dbec9f",
"cwmpVersion": "",
"namespace": ""
}
]
}
]
}
}
Download
POST /method/Download
This method is used by the ACS to cause the CPE to download a specified file from the designated location.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": {
"CommandKey": "string",
"FileType": "1 Firmware Upgrade Image",
"URL": "string",
"Username": "string",
"Password": "string",
"FileSize": 0,
"TargetFileName": "string",
"DelaySeconds": 0,
"SuccessURL": "string",
"FailureURL": "string"
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/Download
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 297
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": {
"Username": "",
"FailureURL": "",
"URL": "http://your.url.com",
"TargetFileName": "",
"FileType": "1 Firmware Upgrade Image",
"FileSize": 200,
"SuccessURL": "",
"DelaySeconds": 5,
"Password": "",
"CommandKey": ""
}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:03:20 GMT
Content-Type: application/json
Content-Length: 201
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "Status",
"value": 1
},
{
"key": "StartTime",
"value": "0001-01-01T00:00:00Z"
},
{
"key": "CompleteTime",
"value": "0001-01-01T00:00:00Z"
}
]
}
}
Upload
POST /method/Upload
This method MAY be used by the ACS to cause the CPE to upload a specified file to the designated location.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": {
"CommandKey": "string",
"FileType": "2 Vendor Log File",
"URL": "string",
"Username": "string",
"Password": "string",
"DelaySeconds": 0
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/Upload
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 233
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": {
"Username": "",
"URL": "http://your.server/cfg3.cfg",
"CommandKey": "",
"DelaySeconds": 0,
"Password": "",
"FileType": "1 Vendor Configuration File"
}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:03:25 GMT
Content-Type: application/json
Content-Length: 201
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "Status",
"value": 1
},
{
"key": "StartTime",
"value": "0001-01-01T00:00:00Z"
},
{
"key": "CompleteTime",
"value": "0001-01-01T00:00:00Z"
}
]
}
}
GetRPCMethods
POST /method/GetRPCMethods
This method is used for getting RPCs supported by CPE.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/GetRPCMethods
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 85
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": {}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Thu, 01 Feb 2024 13:03:48 GMT
Content-Type: application/json
Content-Length: 269
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "data",
"value": [
"GetRPCMethods",
"SetParameterValues",
"GetParameterValues",
"GetParameterNames",
"SetParameterAttributes",
"GetParameterAttributes",
"AddObject",
"DeleteObject",
"Reboot",
"Download"
]
}
]
}
}
GetParameterNames
POST /method/GetParameterNames
This method is used by an ACS to discover the Parameters accessible on a particular CPE.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
},
"parameters": {
"ParameterPath": "string",
"NextLevel": true
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/GetParameterNames
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 145
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": {
"NextLevel": true,
"ParameterPath": "InternetGatewayDevice."
}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:03:27 GMT
Content-Type: application/json
Content-Length: 1501
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "InternetGatewayDevice.DeviceInfo.",
"value": "1"
},
{
"key": "InternetGatewayDevice.DeviceSummary",
"value": "1"
},
{
"key": "InternetGatewayDevice.DownloadDiagnostics.",
"value": "1"
},
{
"key": "InternetGatewayDevice.IPPingDiagnostics.",
"value": "1"
},
{
"key": "InternetGatewayDevice.LANConfigSecurity.",
"value": "1"
},
{
"key": "InternetGatewayDevice.LANDevice.",
"value": "1"
},
{
"key": "InternetGatewayDevice.LANDeviceNumberOfEntries",
"value": "1"
},
{
"key": "InternetGatewayDevice.Layer2Bridging.",
"value": "1"
},
{
"key": "InternetGatewayDevice.Layer3Forwarding.",
"value": "1"
},
{
"key": "InternetGatewayDevice.ManagementServer.",
"value": "1"
},
{
"key": "InternetGatewayDevice.NSLookupDiagnostics.",
"value": "1"
},
{
"key": "InternetGatewayDevice.Services.",
"value": "1"
},
{
"key": "InternetGatewayDevice.Time.",
"value": "1"
},
{
"key": "InternetGatewayDevice.TraceRouteDiagnostics.",
"value": "1"
},
{
"key": "InternetGatewayDevice.UDPEchoConfig.",
"value": "1"
},
{
"key": "InternetGatewayDevice.UDPEchoDiagnostics.",
"value": "1"
},
{
"key": "InternetGatewayDevice.UPnP.",
"value": "1"
},
{
"key": "InternetGatewayDevice.UploadDiagnostics.",
"value": "1"
},
{
"key": "InternetGatewayDevice.User.",
"value": "1"
},
{
"key": "InternetGatewayDevice.UserInterface.",
"value": "1"
},
{
"key": "InternetGatewayDevice.UserNumberOfEntries",
"value": "1"
},
{
"key": "InternetGatewayDevice.WANDevice.",
"value": "1"
},
{
"key": "InternetGatewayDevice.WANDeviceNumberOfEntries",
"value": "1"
},
{
"key": "InternetGatewayDevice.WiFi.",
"value": "1"
}
]
}
}
GetAllQueuedTransfers
POST /method/GetAllQueuedTransfers
This method MAY be used by an ACS to determine the status of all queued downloads and uploads, including any that were not specifically requested by the ACS, i.e. autonomous transfers.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"no_cnr": false
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1/method/GetAllQueuedTransfers
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 85
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {},
"parameters": {}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Mon, 29 Jan 2024 09:03:28 GMT
Content-Type: application/json
Content-Length: 103
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "TransferList",
"value": []
}
]
}
}
GetDHCPObjects
POST /method/GetDhcpObjects
This method is used for getting information about DHCP objects.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"multiple": false,
"no_cnr": false
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1//method/GetDhcpObjects
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: application/json
Connection: keep-alive
Content-Type: application/json
Content-Length: 167
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {
"async": false,
"timeout": 300,
"multiple": false,
"no_cnr": false
}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Wed, 24 Jul 2024 07:47:13 GMT
Content-Type: application/json
Content-Length: 233
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"v_4": {
"client": {
"alias": null,
"enable": true,
"id": null,
"ipAddress": "192.168.1.216",
"ipRouters": "192.168.1.3",
"meta": {
"path": "Device.DHCPv4.Client.1"
},
"requestAddresses": null,
"requestPrefixes": null,
"server": "192.168.1.3",
"servers": [],
"subnetMask": "255.255.255.0"
},
"servers": [
{
"alias": null,
"clients": [
{
"active": null,
"ipAddresses": [
{
"ip": "192.168.167.189",
"meta": {
"path": "Device.DHCPv4.Server.Pool.1.Client.1.IPv4Address.1"
},
"timeRemaining": [
0,
0,
0,
0,
0,
0
]
}
],
"mac": "D0:9F:D9:CC:6A:FE",
"meta": {
"path": "Device.DHCPv4.Server.Pool.1.Client.1"
}
},
{
"active": null,
"ipAddresses": [
{
"ip": "192.168.167.190",
"meta": {
"path": "Device.DHCPv4.Server.Pool.1.Client.2.IPv4Address.1"
},
"timeRemaining": [
0,
0,
0,
0,
0,
0
]
}
],
"mac": "94:C6:91:F6:B1:0F",
"meta": {
"path": "Device.DHCPv4.Server.Pool.1.Client.2"
}
}
],
"enable": true,
"ipRouters": "192.168.167.177",
"leaseTime": 600,
"maxIp": "192.168.167.190",
"meta": {
"path": "Device.DHCPv4.Server.Pool.1."
},
"minIp": "192.168.167.178",
"name": "",
"staticAddresses": [],
"subnetMask": "255.255.255.240"
}
]
}
}
]
GetWifiDetails
POST /method/GetWifiDetails
This method provides details about Wi-Fi parameters of the CPE.
Acceptable values for parameter "OperatingFrequencyBand" are "2.4Ghz", "5Ghz". Deleting parameters entirely counts as "any".
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"multiple": false,
"no_cnr": false
},
"parameters": {
"OperatingFrequencyBand": "2.4Ghz"
}
}
Example:
Request
endpoint: POST http://127.0.0.1/v1//method/GetWifiDetails
headers:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: application/json
Connection: keep-alive
Content-Length: 229
Content-Type: application/json
body:
{
"search_options": {
"cpe_id": "DMS_DEVICE"
},
"command_options": {
"async": false,
"timeout": 300,
"multiple": false,
"no_cnr": false
},
"parameters": {
"OperatingFrequencyBand": "2.4Ghz"
}
}
Response
status_code: 200
headers:
Server: openresty/1.21.4.1
Date: Wed, 27 Mar 2024 13:46:30 GMT
Content-Type: application/json
Connection: keep-alive
body:
{
"result": {
"code": 200,
"message": "Scenario was finished",
"details": [
{
"key": "wifi24",
"value": {
"autoChannel": true,
"channel": 6,
"ssidStatus": "Up",
"operationStandard": "2.4Ghz",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1",
"some_future_field": "some_future_value"
},
"ssid": [
{
"ssid": "DMS ALPHA 001 SSID",
"ssidEnable": true,
"bssid": "00:00:00:00:00:06",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1"
},
"accessPoint": [
{
"modeEnabled": "None",
"encryptionMode": "None",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1"
},
"associatedDevice": [
{
"macAddress": "2C:ba:4b:4a:0B",
"signalStrength": "-52",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.AssociatedDevice.1"
},
"host": {
"hostname": "HUAWEI_P20_Pro",
"ip": "192.168.0.196",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.AssociatedDevice.1"
}
}
},
{
"macAddress": "CC:b3:bB:0c:0A",
"signalStrength": "-81",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.AssociatedDevice.2"
},
"host": {
"hostname": "Unknown",
"ip": "192.168.0.15",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.AssociatedDevice.2"
}
}
},
{
"macAddress": "Cf:B0:eD:7F:5F",
"signalStrength": "-57",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.AssociatedDevice.3"
},
"host": {
"hostname": "Unknown",
"ip": "192.168.0.125",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.AssociatedDevice.3"
}
}
},
{
"macAddress": "71:26:ac:AA:62",
"signalStrength": "-69",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.AssociatedDevice.4"
},
"host": {
"hostname": "Apple_MediaPad_M5",
"ip": "192.168.0.249",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.AssociatedDevice.4"
}
}
},
{
"macAddress": "a6:F6:Bc:9D:F9",
"signalStrength": "-37",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.AssociatedDevice.5"
},
"host": {
"hostname": "RE305",
"ip": "192.168.0.225",
"_properties": {
"path": "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.AssociatedDevice.5"
}
}
}
]
}
]
}
]
}
}
]
}
}
LanPortsStatistics
POST /method/LanPortsStatistics
This method provides statistics of the LAN ports of the CPE and has no specific parameters.
Request parameters:
{
"search_options": {
"cpe_id": "string"
},
"command_options": {
"async": false,
"multiple": false,
"no_cnr": false
}
}