GDS372x – HTTP API Guide

  • Updated on September 10, 2026 PDF Download

Introduction

This document details the HTTP API endpoints, commands, and schemas supported by the GDS372X Smart Door System. It is intended for developers integrating the device into custom applications or access control platforms. The API is designed for compatibility with the GDS37XX HTTP API, allowing existing integrations to migrate with minimal changes, while noting cases where Pvalue behavior diverges between the two product lines.

Coverage includes card management, access control and door-open settings, SIP configuration, video and privacy mask settings, alarm and network configuration, user management, firmware upgrade, system diagnostics, and media capture. Each endpoint lists supported methods, parameters, and response schemas, along with authentication/session behavior. A version history tracks API changes across development

1. Authentication & Session Management

To ensure API security, the GDS372X uses a Challenge-Response authentication mechanism. Subsequent requests must verify identity by including the returned Session ID ( sid ) in the request’s HTTP Cookie header.

1.1 Authentication Workflow

Flow diagram showing a 3rd-party client talking to a GDS372X device: Step 1 GET /goform/login?cmd=login, with Referer header, returns a ChallengeCode; Step 2 GET /goform/login?cmd=login with user and authcode, returns sid; Step 3 GET /goform/config?cmd=get..., with Cookie sid, and the device returns XML response.
Note

Referer Header Requirement: All authentication and API requests must include the Referer header matching the device’s origin (e.g., Referer: https: //). Failure to include this header may cause the request to be rejected with authentication errors due to built-in security protections.

1.2 Step 1: Challenge Code Request

Retrieve a one-time challenge token.

Endpoint: /goform/login

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: login

Request Headers:

Referer: https: /<IP>/

Response (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<ChallengeCode>8d6a7f828ab1dcf0c39f041235abc74e</ChallengeCode>
</Configuration>

1.3 Step 2: Authentication Login

Submit the calculated authcode signature to establish a valid session.

Endpoint: /goform/login

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: login
userStringYesUsername (e.g., admin )
authcodeStringYesAuthenticated login signature

Request Headers:

Referer: https: /<IP>/

Authcode Calculation:

authcode = MD5(ChallengeCode + :GDS3710lZpRsFzCbM: + AdminPassword)

Response (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg> <sid>bfc479196522f5072bc4d4b04f366814203466e3120ca171196bc732485447c</sid>
</Configuration>

Note: Save the <sid> value to pass in subsequent request cookies ( Cookie: sid=bfc479196522 ... ).

1.4 Quick-Start Bash Example

Here is a reference shell script snippet showing how to implement this flow programmatically using curl and sed :

authcode = MD5(ChallengeCode + :GDS3710lZpRsFzCbM: + AdminPassword)
#!/bin/bash
IP="192.168.1.162"
PASSWORD="admin"

#1.Get Challenge Token
challenge_resp=$(curl -s -L -k -H "Referer: https://$IP/" "https://$IP/goform/login?cmd=login")
token=$(echo "$challenge_resp" | sed -n 's/.*<ChallengeCode>\([^<]*\)<\/ChallengeCode>.*/\1/p' | tr -d '\r')

if [ -z "$token" ]; then
    echo "Failed to retrieve Challenge Code."
    exit 1
fi
echo "Challenge Code: $token"

#2.Compute Authcode MD5
raw_str="$token:GDS3710lZpRsFZCbM:$PASSWORD"
authcode=$(echo -n "$raw_str" | md5sum | cut -d' ' -f1)
echo "Authcode: $authcode"

#3.Log In to Retrieve SID
login_resp=$(curl -s -L -k -H "Referer: https://$IP/" "https://$IP/goform/login?cmd=login&user=admin&authcode=$authcode")
res_code=$(echo "$login_resp" | sed -n 's/.*<ResCode>\([^<]*\)<\/ResCode>.*/\1/p' | tr -d '\r')

if [ "$res_code" = "0" ]; then
    SID=$(echo "$login_resp" | sed -n 's/.*<sid>\([^<]*\)<\/sid>.*/\1/p' | tr -d '\r')
    echo "Login Successful! Session ID (SID): $SID"

    #Example subsequent call using the session ID
    curl -s -L -k \
-H "Accept: application/xml" \
-H "Referer: https://$IP/" \
-H "Cookie: sid=$SID" \
-w "\nHTTP_CODE:%{http_code}" \
"$url"
"https://$IP/goform/config?cmd=get&type=user_list&page=1&page_size=5"
else
    echo "Login Failed."
    exit 1
fi

1.5 Session Expiration & Re-Authentication

When a session expires (e.g., due to inactivity timeout) or becomes invalid (e.g., after a device reboot), subsequent API requests will fail authentication.

1.5.1 Expiration Indicators

  • HTTP Status Code: The server will respond with HTTP status 401 Unauthorized or 403 Forbidden.
  • Response Body: The response body will contain text or tags indicating authentication failure, such as "Unauthorized" or "session expired".

Clients should wrap API HTTP calls with auto-reauthentication logic. When the indicators above are matched, the client should automatically: 1. Re-initiate the Challenge-Response login sequence to retrieve a new session ID ( sid ). 2. Re-send the failed API request with the updated sid cookie.

2. Card & User Management

2.1 GET User List

Query registered cards and RFID credentials page-by-page.

Endpoint: /goform/config

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: get
typeStringYesFixed value: user_list
pageIntYesPage index (1-indexed).
page_sizeIntYesNumber of entries to retrieve per page.

Request Example:

https: /192.168.1.162/goform/config?cmd=get&type=user_list&page=1&page_size=10

Response (XML):

Success Response:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<total>16</total>
<item>
<uuid>658</uuid>
<enable_card>1</enable_card>
<username>test_http_user_5959</username>
<user_id>5959</user_id>
<card_num>10007239</card_num>
<account>0</account>
<gender>2</gender>
<group_id>1</group_id>
<SOD>19700101080000</SOD>
<EOD>20991231000000</EOD>
<sch_id>0</sch_id>
<card_type>0</card_type>
<app_user>255</app_user>
<ic_valid>1</ic_valid>
<door_ctrl_0>1</door_ctrl_0>
<door_ctrl_1>1</door_ctrl_1>
<app_door_option_0>1</app_door_option_0>
<app_door_option_1>1</app_door_option_1>
<app_door_option_2>1</app_door_option_2>
<app_door_option_3>1</app_door_option_3>
<add_time>20260525173743</add_time>
</item>
</Configuration>

2.2 ADD Card

Add a new RFID card/pin credential.

Endpoint: /goform/config

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: add
user_idStringConditionalUnique User ID of the card owner. Required unless ID is provided.
usernameStringNoUsername of the card owner.
card_numStringNoPhysical RFID card number.
enable_cardIntNo1Card active status. 0 : Disabled, 1 : Enabled.
card_typeIntNo255Type of card. 0 : ID card, 1 : IC card, 255 : Unknown. If card_num is set, card_type MUST be 0 or 1, otherwise the card cannot be used.
group_idIntNo0Permission group index. 0 : No group (default).
door_ctrl_0IntNoRelay 1 open permission. 0 : Denied, 1 : Allowed.
door_ctrl_1IntNoRelay 2 open permission. 0 : Denied, 1 : Allowed.
app_door_option_0IntNoMobile app door 1 option control.
app_door_option_1IntNoMobile app door 2 option control.
app_door_option_2IntNoMobile app door 3 option control.
app_door_option_3IntNoMobile app door 4 option control.
IDStringConditionalLegacy compatibility parameter. Required unless user_id is provided. If specified, it will automatically fallback to user_id (if empty) and card_num (if empty).

Request Example:

https: /192.168.1.162/goform/config?cmd=add&user_id=5959&username=test_http_user&card_num=10007239&enable_card=1&card_type=0&group_id=1&door_ctrl_0=1&door_ctrl_1=1&app_door_option_0=1&app_door_option_1=1&app_door_option_2=1&app_door_option_3=1

Response (XML):

Success Response:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<uuid>665</uuid>
</Configuration>

2.3 DEL Card

Delete a credential. Multiple IDs or UUIDs can be comma-separated.

Endpoint: /goform/config

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: del
uuidStringYes (if ID empty)Database UUID of the card to delete (supports comma-separated list).
IDStringNoLegacy compatibility fallback for uuid (supports comma-separated list).

Batch Delete Constraint: A maximum of 20 card credentials can be deleted in a single batch request via comma-separated list. Any IDs exceeding this limit are ignored/truncated.

Request Example:

Delete Single Card by UUID:

https: /192.168.1.162/goform/config?cmd=del&uuid=665

Batch Delete Cards by Legacy ID:

https: /192.168.1.162/goform/config?cmd=del&ID=99991,99992,99993

Response (XML):

Success Response:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

2.4 SET/Modify Card

Modify an existing card credential.

Endpoint: /goform/config

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: set
uuidStringYes (if ID is empty)Database UUID of the card to modify.
IDStringNoLegacy compatibility fallback for uuid.
usernameStringNoUpdated username of the card owner.

Request Example:

https: /192.168.1.162/goform/config?cmd=set&uuid=665&username=updated_http_user

Response (XML):

Success Response:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

2.5 Card & User Field Reference

The table below describes all user and card credential fields returned in the <item> list or query details:

XML Tag NameTypeDescriptionRange / Format
uuidStringUnique database identifier for the card/credential.e.g. "659"
IDStringInput compatibility query parameter fallback. Note: Not returned in responses.e.g. "258974"
enable_cardString (Numeric)Active status of the card."0" : Disabled, "1" : Enabled
usernameStringUsername of the card owner.Max length 32 characters
user_idStringUnique User ID of the card owner.Max length 32 characters
card_numStringRFID Card Number (physical card ID).Max length 32 characters
passwdStringLocal private door PIN code.Max length 8 digits
genderString (Numeric)Gender of the user."0" : Male, "1" : Female, "2" : Other/Secret
identify_numStringNational ID or Social Security Number.Max length 32 characters
room_numStringRoom or apartment number.Max length 16 characters
sip_numStringSIP extension number associated with the user.Max length 32 characters
accountString (Numeric)SIP account index used for call routing."0" to "4"
group_idString (Numeric)Permission group index."0" (Default, no group), "1", etc.
sch_idString (Numeric)Time schedule ID associated with the card."0" (No schedule), etc.
card_typeString (Numeric)Type of card credential."0" : ID card, "1" : IC card, "255" : Unknown (default)
app_userString (Numeric)Application type identifier."255" : Normal user, "2" : App admin, "0" : App user, "1" : App visitor
ic_validString (Numeric)Card verification validity."0" : Invalid, "1" : Valid
SODStringStart of Date (validation start timestamp).YYYYMMDDhhmmss (e.g. 19700101080000 )
EODStringEnd of Date (validation expiration timestamp).YYYYMMDDhhmmss (e.g. 20991231000000 )
door_ctrl_0 / door_ctrl_1Array / Flat TagsRelay open permission list.Flat elements <door_ctrl_X>1 /door_ctrl_X> inside XML
app_door_option_0 ... _3Array / Flat TagsApp doors option list.Flat elements <app_door_option_X>1 /app_door_option_X> inside XML
add_timeStringTimestamp when the card was created.YYYYMMDDhhmmss

3. Card Data Import/Export

3.1 Export User File

Export user credentials, access records, or alarm histories.

Endpoint: /goform/config

Method: GET (for single-step direct download)

When requested via GET without a request body, the API directly performs a synchronous export and returns the raw CSV file as binary data. This path bypasses client Accept headers (e.g., application/xml ) to prevent returning wrapped payloads.

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: export
typeStringYesThe type of data to export:
1 : Card Data (Downloads card.csv )
door_record : Door Logs (Downloads door_record.csv )
alarm_record : Alarm Logs (Downloads alarm.csv )
card_issuing_failed : Failed Card Issuance Records (Downloads issuing_failed.csv )
data_typeIntNoFormat/Data type indicator. Set to 1 (CSV format).

Request Examples:

Export Card Data:

GET /goform/config?cmd=export&type=1&data_type=1 HTTP/1.1
Cookie: sid=<session_id>
Accept: */*

Export Door Logs:

GET /goform/config?cmd=export&type=door_record&data_type=1 HTTP/1.1
Cookie: sid=<session_id>
Accept: */*

Export Alarm Logs:

GET /goform/config?cmd=export&type=alarm_record&data_type=1 HTTP/1.1
Cookie: sid=<session_id>
Accept: */*

Response Headers:

Content-Type: application/octet-stream
Content-Disposition: attachment; filename="<filename>.csv"

Response Content:

Raw CSV file content.

3.2 Import User File

Import/Upload card list back to the GDS device.

Endpoint: /goform/config

Method: POST (Multipart file upload)

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: upload
typeIntYesFixed value: 0 (indicates card data import)
dupoptIntYesHow to handle duplicate entries:
0 : Keep existing records (Skip duplicates)
1 : Replace existing records with imported ones
data_typeIntNo1Format/Data type indicator. Set to 1 (CSV format).

Request Payload: Multipart form-data with the CSV file attached under the field name file.

Response (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

4. Door Settings & Access Control

4.1 Remote Open Door (Challenge+Response)

Trigger door strike via authenticated challenge.

4.1.1 Get Open Door Challenge (GET)

Retrieve the one-time challenge token ( ChallengeCode ) and IDCode required for the door command.

Endpoint: /goform/apicmd

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdIntYesFixed value: 0

Response (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<ChallengeCode>8d6a7f828ab1dcf0c39f041235abc74e</ChallengeCode>
<IDCode>1</IDCode>
</Configuration>

4.1.2 Send Door Open Command (GET)

Initiate the open/close command using the authenticated signature.

Endpoint: /goform/apicmd

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdIntYesFixed value: 1
authcodeStringYesAuthenticated signature calculated using remote PIN and admin password
idcodeStringYesOne-time ID code retrieved from challenge request
typeStringYesAction to perform: open or close

Authcode Calculation:

authcode = MD5(ChallengeCode + ":" + RemotePIN + ":" + AdminPassword)

Response (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

4.2 Door Basic Settings

Configure door locks, Wiegand, RS485 OSDP, snapshots, remote unlock credentials, and doorbell targets using NVRAM P-values.

Endpoint: /goform/config

Method: GET

Parameters: cmd=set&P<P-VALUE>=<VALUE>& .

authcode = MD5(ChallengeCode + ":" + RemotePIN + ":" + AdminPassword)

4.2.1 Door Access Basic Settings

P-valueAlias / Config PathTypeDescriptionDefault / Range
P15440doorAccess.doorRelay.typeNumberLocal Lock/Relay Type selection0 : Internal Lock, 1 : Wiegand Lock, 2 : Web Relay
P15453doorAccess.relayOut1.typeNumberRelay Out 1 Working Mode1 : Lock Control, 2 : Alarm Output, 3 : Doorbell Output, etc.
P15454doorAccess.relayOut1.statusNumberRelay Out 1 Status configuration0 : Normal Open, 1 : Normal Close
P15465doorAccess.relayOut1.delayBeforeUnlockNumberRelay Out 1 Delay before unlock / open0 to 20 (seconds)
P15466doorAccess.relayOut1.unlockHoldTimeNumberRelay Out 1 Unlock Hold Time / open duration1 to 1800 (seconds)
P15450doorAccess.relayOut2.typeNumberRelay Out 2 Working Mode0 : Electric Strike, 1 : Alarm Output, 2 : Doorbell Output, etc.
P15470doorAccess.relayOut2.statusNumberRelay Out 2 Status configuration0 : Normal Open, 1 : Normal Close
P14100doorAccess.relayOut2.delayBeforeUnlockNumberRelay Out 1 Delay before unlock/open0 to 20 (seconds)
P14101doorAccess.relayOut2.unlockHoldTimeNumberRelay Out 2 Unlock Hold Time / open duration1 to 1800 (seconds)
P15680doorAccess.relayOut1.nameStringCustom display name for Relay Out 1Max 32 chars
P15681doorAccess.relayOut2.nameStringCustom display name for Relay Out 2Max 32 chars
P14120doorAccess.wiegand.input.enableNumberWiegand Port Input/Output Mode0 : Wiegand Output, 1 : Wiegand Input
P14121doorAccess.wiegand.outputModeNumberWiegand Control Mode0 : Disabled, 1 : Relay & Local Auth, 2 : Relay & Bypass Local
P15468doorAccess.wiegand.controlOptionsNumberWiegand Control Options modee.g. 2
P15607doorAccess.wiegand.outputBitsNumberWiegand Output Bit Format26 (bits), 34 (bits), etc.
P16001doorAccess.wiegand.outputPinModeNumberWiegand Output Pin Modee.g. 0
P14341alarm.digitalOutput2.holdTimeNumberDigital Output 2 (DO2) Hold Time1 to 1800 (seconds)
P14342alarm.digitalOutput1.holdTimeNumberDigital Output 1 (DO1) Hold Time1 to 1800 (seconds)
P15301doorAccess.gdsManager.enableNumberEnable Central GDS Manager software control0 : Disabled, 1 : Enabled
P15409doorAccess.snapshot.doorbell.email.enableNumberEnable email snapshot on doorbell ring0 : Disabled, 1 : Enabled
P15471doorAccess.snapshot.doorOpened.email.enableNumberEnable email snapshot when door is opened0 : Disabled, 1 : Enabled
P15474doorAccess.snapshot.door1Opened.numberNumberNumber of snapshots to take on door opened1 to 10
P15511doorAccess.snapshot.doorbell.delayNumberSnapshot delay time on doorbell event0 to 10 (seconds)
P15513doorAccess.snapshot.doorOpened.app.enableNumberEnable mobile App snapshot on door opened0 : Disabled, 1 : Enabled
P15517doorAccess.snapshot.doorbell.app.enableNumberEnable mobile App snapshot on doorbell ring0 : Disabled, 1 : Enabled
P15583doorAccess.snapshot.doorOpened.delayNumberSnapshot delay time on door opened0 to 10 (seconds)
P15971doorAccess.snapshot.openDoor.enableNumberEnable snapshot when door is unlocked0 : Disabled, 1 : Enabled

4.2.2 Open Door Settings

P-valueAlias / Config PathTypeDescriptionDefault / Range
P10457doorAccess.openDoor1.remotePinStringRemote PIN to unlock Door 1 (SIP DTMF command)Max 8 digits
P15460doorAccess.openDoor2.remotePinStringRemote PIN to unlock Door 2 (SIP DTMF command)Max 8 digits
P14829doorAccess.swipingCard.intervalNumberMinimum interval delay between successive card swipes0 to 2000 (ms, default 300 )
P14858doorAccess.openDoor.remoteDtmf.enableNumberEnable remote door open by DTMF keys during calls0 : Disabled, 1 : Enabled
P14859doorAccess.openDoor.remoteSip.enableNumberEnable remote door open via SIP MESSAGE0 : Disabled, 1 : Enabled
P15424doorAccess.openDoor.httpApi.enableNumberRemote HTTP API Door Open authorization mode0 : Disabled, 1 : Challenge-Response, 2 : Basic Auth
P15573doorAccess.openDoor.httpApi.compatibility.enableNumberEnable legacy GDS HTTP API compatibility mode ( ID parameter)0 : Disabled, 1 : Enabled
P15479doorAccess.openDoor.nfc.enableNumberEnable NFC smart open door via mobile credentials0 : Disabled, 1 : Enabled
P15632doorAccess.openDoor.nfc.timeoutNumberNFC detection card read timeout50 to 2000 (milliseconds)
P15484doorAccess.openDoor.appbtn.enableNumberEnable remote open door via mobile App control buttons0 : Disabled, 1 : Enabled
P15485doorAccess.openDoor.qrcode.enableNumberEnable scanning dynamic access QR codes to unlock0 : Disabled, 1 : Enabled
P15691doorAccess.openDoor.staticQrcode.enableNumberEnable scanning static access QR codes to unlock0 : Disabled, 1 : Enabled
P15486doorAccess.openDoor.ble.enableNumberEnable Bluetooth Low Energy (BLE) open door0 : Disabled, 1 : Enabled
P15487doorAccess.openDoor.ble.sensitivityNumberBluetooth BLE signal detection sensitivity level1 (High) to 5 (Low)
P15488doorAccess.openDoor.ble.intervalNumberBluetooth BLE scanning broadcast interval1 to 60 (seconds)
P15489doorAccess.openDoor.iccard.enableNumberEnable RFID RFID/IC card swiping open door0 : Disabled, 1 : Enabled
P15605doorAccess.openDoor.iccard.compatibilityMode.enableNumberEnable RFID IC card compatibility mode (reads wider chip range)0 : Disabled, 1 : Enabled
P15615doorAccess.openDoor.idcard.enableNumberEnable ID Card swiping open door0 : Disabled, 1 : Enabled
P15543doorAccess.oneWayInterlock.enableNumberEnable One-Way Interlock door safety control mode0 : Disabled, 1 : Enabled
P15981doorAccess.doorLinkage.modeNumberDoor Linkage safety linkage modee.g. 0
P15982doorAccess.doorLinkage.safeRoom.modeNumberSafe Room door linkage operation modee.g. 0
P15983doorAccess.doorLinkage.safeRoom.relayNumberSafe Room door linkage relay assignmente.g. 0
P16070doorAccess.openDoor.hookAfterUnlock.enableNumberEnable automatic call hang up after remote unlock0 : Disabled, 1 : Enabled
P16071doorAccess.openDoor.hookAfterUnlock.timeNumberDelay time before automatic call hang up after unlock1 to 20 (seconds)

4.2.3 Doorbell Basic Settings

P-valueAlias / Config PathTypeDescriptionDefault / Range
P10462doorAccess.doorbell.number1StringTarget SIP phone extension or IP target for Doorbell 1Max 256 chars
P15556doorAccess.doorbell.number2StringTarget SIP phone extension or IP target for Doorbell 2Max 256 chars
P15558doorAccess.doorbell.number3StringTarget SIP phone extension or IP target for Doorbell 3Max 256 chars
P15560doorAccess.doorbell.number4StringTarget SIP phone extension or IP target for Doorbell 4Max 256 chars
P15587doorAccess.doorbell.cloudNumber1StringCloud Doorbell ring destination target 1Max 256 chars
P15588doorAccess.doorbell.cloudNumber2StringCloud Doorbell ring destination target 2Max 256 chars
P15589doorAccess.doorbell.cloudNumber3StringCloud Doorbell ring destination target 3Max 256 chars
P15590doorAccess.doorbell.cloudNumber4StringCloud Doorbell ring destination target 4Max 256 chars
P15418doorAccess.doorbell.schedule1StringDoorbell Call 1 Time Schedule index constrainte.g. "100" (always allow)
P15557doorAccess.doorbell.schedule2StringDoorbell Call 2 Time Schedule index constraintMax 16 chars
P15559doorAccess.doorbell.schedule3StringDoorbell Call 3 Time Schedule index constraintMax 16 chars
P15561doorAccess.doorbell.schedule4StringDoorbell Call 4 Time Schedule index constraintMax 16 chars
P10470doorAccess.doorbell.accountNumberSIP Account index used to dial doorbell button calls0 to 4
P14827doorAccess.doorbell.modeNumberDoorbell Button trigger action mode0 : Call doorbell number, 1 : Control doorbell relay, 2 : Both
P14582doorAccess.doorbell.hangup.enableNumberAutomatically end doorbell call when door is unlocked0 : Disabled, 1 : Enabled
P15434doorAccess.doorbell.callModeNumberRinging call mode for doorbell target targets0 : Serial (sequential), 1 : Parallel
P15630doorAccess.doorbell.callingTimeoutNumberDoorbell ring call timeout limit10 to 300 (seconds, default 60 )

5. Keep Door Open Settings

Configure the schedules and parameters for keeping doors open automatically or immediately using NVRAM P-values.

Endpoint: /goform/config

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: get
typeStringYesFixed value: sch_open_door

Response (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P15429>1</P15429>
<P15430>5</P15430>
<P15211>20251023000000</P15211>
<P15212>20260131235959</P15212>
<P15213>door_sch,</P15213>
<P15571>100</P15571>
<P15506>0</P15506>
<P15455>2</P15455>
<P15456>5</P15456>
<P15457>20260526000000</P15457>
<P15458>20260826000000</P15458>
<P15459>door_sch,</P15459>
<P15572>105</P15572>
<P15507>0</P15507>
</Configuration>

5.1 Keep Open Door 1 Settings

P-valueAlias / Config PathTypeDescriptionDefault / Range
P15429doorAccess.keepOpenDoor1.modeNumberKeep Door 1 Open Mode0 : Disable, 1 : Immediate Open, 2 : Schedule Open
P15430doorAccess.keepOpenDoor1.holdTimeNumberDuration to Keep Door 1 Open5 to 480 (minutes)
P15211doorAccess.keepOpenDoor1.schedule.startTimeStringKeep Door 1 Open schedule start timeYYYYMMDDhhmmss
P15212doorAccess.keepOpenDoor1.schedule.endTimeStringKeep Door 1 Open schedule expiration end timeYYYYMMDDhhmmss
P15571doorAccess.keepOpenDoor1.scheduleNumberKeep Door 1 Open schedule profile ID0 to 10, or 100 to 149
P15506doorAccess.keepOpenDoor1.holidayNumberKeep Door 1 Open holiday profile ID0 to 10
P15213doorAccess.keepOpenDoor1.customScheduleStringCustom schedule string configuratione.g. door_sch,
P15435doorAccess.keepOpenDoor1.disable.emergencyPinStringEmergency PIN to disable keep open door 1Max 8 digits
P15585doorAccess.keepOpenDoor1.enable.emergencyPinStringEmergency PIN to re-enable keep open door 1Max 8 digits

5.2 Keep Open Door 2 Settings

P-valueAlias / Config PathTypeDescriptionDefault / Range
P15455doorAccess.keepOpenDoor2.modeNumberKeep Door 2 Open Mode0 : Disable, 1 : Immediate Open, 2 : Schedule Open
P15456doorAccess.keepOpenDoor2.holdTimeNumberDuration to Keep Door 2 Open5 to 480 (minutes)
P15457doorAccess.keepOpenDoor2.schedule.startTimeStringKeep Door 2 Open schedule start timeYYYYMMDDhhmmss
P15458doorAccess.keepOpenDoor2.schedule.endTimeStringKeep Door 2 Open schedule expiration end timeYYYYMMDDhhmmss
P15572doorAccess.keepOpenDoor2.scheduleNumberKeep Door 2 Open schedule profile ID0 to 10, or 100 to 149
P15507doorAccess.keepOpenDoor2.holidayNumberKeep Door 2 Open holiday profile ID (For second door)0 to 10
P15459doorAccess.keepOpenDoor2.customScheduleStringCustom schedule string configuration (Door 2)e.g. door_sch,
P15472doorAccess.keepOpenDoor2.disable.emergencyPinStringEmergency PIN to disable keep open door 2Max 8 digits
P15586doorAccess.keepOpenDoor2.enable.emergencyPinStringEmergency PIN to re-enable keep open door 2Max 8 digits

6. SIP Settings

GDS372X supports up to 3 SIP accounts. When retrieving configuration parameters using type=sip , route the queries using the account parameter.

6.1 GET SIPConfiguration

Endpoint: goform/config

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: get
typeStringYesFixed value: sip
accountIntNo1SIP Account Index: 1, 2, or 3. If omitted, defaults to account 1.

Account P-value Range Mapping:

Account 1: P271 (SIP Account Enable), P47 (SIP Server 1 Address), P35 (SIP User ID), P40 (SIP Local Port), etc.

Account 2: P401 (SIP Account Enable), P402 (SIP Server 1 Address), P404 (SIP User ID), P413 (SIP Local Port), etc.

Account 3: P501 (SIP Account Enable), P502 (SIP Server 1 Address), P504 (SIP User ID), P513 (SIP Local Port), etc.

Response (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P402>1</P402>
<P413>5062</P413>
<P481>*</P481>
</Configuration>

6.2 SET SIPConfiguration

Modify specific account configurations directly via NVRAM P-values.

Example Request:

GET https: /<IP>/goform/config?cmd=set&P402=1

6.3 SIPAccounts P-value Reference Table

The following table lists the complete SIP configurations for the 3 active accounts on GDS372X:

Account 1Account 2Account 3ValuesDescription
P2363P2463P25631: Yes, 0: NoConfigure Audio Crypto Life Time. Default: No. (Alias: audio.cryptoLifeTime )
P26073P26173P262731: Yes, 0: NoConfigure Audio FEC Enable. Default: Yes. (Alias: audio.fec.enable )
P50P485P5851: Yes, 0: NoConfigure Audio Silence Suppression. Default: No. (Alias: audio.silenceSuppression )
P2383P2483P25830: AES128 And 256Bit, 1: AES128 Bit, 2: AES256 BitConfigure Audio SRTP Key Length. Default: AES128 And 256Bit. (Alias: audio.srtpKeyLength )
P183P443P5430: Disabled, 1: Enabled But Not Forced, 2: Enabled And Forced, 3: OptionalConfigure Audio SRTP Mode. Default: Disabled. (Alias: audio.srtpMode )
P291P460P5601: Yes, 0: NoConfigure Audio Symmetric RTP. Default: No. (Alias: audio.symmetricRTP )
P37P486P5861-6Configure Audio Voice Frame Per Tx. Default: 2. (Alias: audio.voiceFramePerTX )
P90P425P5250: No, 1: Yes, 2: EnableIntercom/PagingConfigure Call Auto Answer. Default: Yes. (Alias: call.autoAnswer )
P182P442P5420: All, 1: Incoming And Outgoing, 2: DisableConfigure Call Call Log. Default: All. (Alias: call.callLog )
P129P446P5461: Yes, 0: NoConfigure Call Reject Anonymous Call. Default: No. (Alias: call.rejectAnonymousCall )
P65P421P5211: Yes, 0: NoConfigure Call Send Anonymous. Default: No. (Alias: call.sendAnonymous )
P60077P60177P602770-65535Configure Call Timeout. Default: 0. (Alias: call.timeout )
P95025P95125P9522510-300Configure Calling Timeout. Default: 90. (Alias: calling.timeout )
P2362P2462P25620: Baseline, 1: Main, 2: High, 3: BPMPHPConfigure Codec H.264 Profile Type. Default: BPMPHP. (Alias: codec.H264ProfileType )
P2360P2460P25600: Standard, 1: MediaLevel, 2: SessionLevel, 3: NoneConfigure Codec SDP Bandwidth Attr. Default: MediaLevel. (Alias: codec.SDPBandwidthAttr )
P57P451P5518: PCMA, 0: PCMU, 9: G.722, 2: G726-32, 18: G.729A/BConfigure Codec Choice 1. Default: G.722. (Alias: codec.choice.1 )

6.3 SIP Accounts P-value Reference Table

The following table lists the complete SIP configurations for the 3 active accounts on GDS372X:

Account 1Account 2Account 3ValuesDescription
P2363P2463P25631: Yes, 0: NoConfigure Audio FEC Enable. Default: Yes. (Alias: audio. fec.enable )
P26073P26173P262731: Yes, 0: NoConfigure Audio SRTP Key Length. Default: AES128 and 256 Bit. (Alias: audio.srtpKeyLength )
P50P485P5851: Yes, 0: NoConfigure Audio Silence Suppression. Default: No. (Alias: audio.silenceSuppression )
P2383P2483P25830: AES128 And 256Bit, 1: AES128 Bit, 2: AES256 BitConfigure Audio SRTP Key Length. Default: AES128 And 256Bit. (Alias: audio.srtpKeyLength )
P183P443P5430: Disabled, 1: Enabled But Not Forced, 2: Enabled And Forced, 3: OptionalConfigure Audio SRTP Mode. Default: Disabled. (Alias: audio.srtpMode )
P291P460P5601: Yes, 0: NoConfigure Audio Symmetric RTP. Default: No. (Alias: audio.symmetricRTP )
P37P486P5861-6Configure Audio Voice Frame Per Tx. Default: 2. (Alias: audio.voiceFramePerTX )
P90P425P5250: No, 1: Yes, 2: EnableIntercom/PagingConfigure Call Auto Answer. Default: Yes. (Alias: call.autoAnswer )
P182P442P5420: All, 1: Incoming And Outgoing, 2: DisableConfigure Call Call Log. Default: All. (Alias: call.callLog )
P129P446P5461: Yes, 0: NoConfigure Call Reject Anonymous Call. Default: No. (Alias: call.rejectAnonymousCall )
P65P421P5211: Yes, 0: NoConfigure Call Send Anonymous. Default: No. (Alias: call.sendAnonymous )
P60077P60177P602770-65535Configure Call Timeout. Default: 0. (Alias: call.timeout )
P95025P95125P9522510-300Configure Calling Timeout. Default: 90. (Alias: calling.timeout )
P2362P2462P25620: Baseline, 1: Main, 2: High, 3: BPMPHPConfigure Codec H.264 Profile Type. Default: BPMPHP. (Alias: codec.H264ProfileType )
P2360P2460P25600: Standard, 1: MediaLevel, 2: SessionLevel, 3: NoneConfigure Codec SDP Bandwidth Attr. Default: MediaLevel. (Alias: codec.SDPBandwidthAttr )
P57P451P5518: PCMA, 0: PCMU, 9: G.722, 2: G726-32, 18: G.729A/BConfigure Codec Choice 1. Default: G.722. (Alias: codec.choice.1 )
P58P452P5528: PCMA, 0: PCMU, 9: G.722, 2: G726-32, 18: G.729A/BConfigure Codec Choice 2. Default: PCMU. (Alias: codec.choice.2 )
P59P453P5538: PCMA, 0: PCMU, 9: G.722, 2: G726-32, 18: G.729A/BConfigure Codec Choice 3. Default: PCMA. (Alias: codec.choice.3 )
P60P454P5548: PCMA, 0: PCMU, 9: G.722, 2: G726-32, 18: G.729A/BConfigure Codec Choice 4. Default: G726-32. (Alias: codec.choice.4 )
P61P455P5558: PCMA, 0: PCMU, 9: G.722, 2: G726-32, 18: G.729A/BConfigure Codec Choice 5. Default: G.729A/B. (Alias: codec.choice.5 )
P62P456P5568: PCMA, 0: PCMU, 9: G.722, 2: G726-32, 18: G.729A/BConfigure Codec Choice 6. Default: G.729A/B. (Alias: codec.choice.6 )
P46P457P5578: PCMA, 0: PCMU, 9: G.722, 2: G726-32, 18: G.729A/BConfigure Codec Choice 7. Default: G.729A/B. (Alias: codec.choice.7 )
P98P458P5588: PCMA, 0: PCMU, 9: G.722, 2: G726-32, 18: G.729A/BConfigure Codec Choice 8. Default: G.729A/B. (Alias: codec.choice.8 )
P2323P2423P25230: ITU, 1: IETFConfigure Codec G723 32 Packing Mode. Default: ITU. (Alias: codec.g723.32.packingMode )
P26045P26145P262451: Yes, 0: NoConfigure Codec H.264 CBP Enable. Default: Yes. (Alias: codec.h264.CBP.enable )
Account 1Account 2Account 3ValuesDescription
P267P433P5331: UAC, 2: UASConfigure SIP Session Timer Refresher UAS Specify. Default: UAC. (Alias: sip.sessionTimer.refresher.uasSpecify )
P263P429P5291: Yes, 0: NoConfigure SIP Session Timer Request Timer Callee. Default: No. (Alias: sip.sessionTimer.requestTimer.callee )
P262P428P5281: Yes, 0: NoConfigure SIP Session Timer Request Timer Caller. Default: No. (Alias: sip.sessionTimer.requestTimer.caller )
P26051P26151P262511-64800Configure SIP Subscribe Expiration. Default: 60. (Alias: sip.subscribe.expiration )
P2319P2419P25191: Yes, 0: NoConfigure SIP Subscribe For Registration. Default: No. (Alias: sip.subscribe.forRegistration )
P3P407P507String (max 256 chars)Configure SIP Subscriber Name. (Alias: sip.subscriber.name )
P34P406P506String (max 512 chars)Configure SIP Subscriber Password. (Alias: sip.subscriber.password )
P36P405P505String (max 512 chars)Configure SIP Subscriber User ID. (Alias: sip.subscriber.userid )
P288P489P5891: Yes, 0: NoConfigure SIP Support Instance Id. Default: Yes. (Alias: sip.supportInstanceId )
P63P409P5090: Disabled, 1: UserIsPhone, 2: EnabledConfigure SIP Tel URI. Default: Disabled. (Alias: sip.telUri )
P209P440P54050: 0.5sec, 100: 1sec, 200: 2secConfigure SIP Timer T1. Default: 0.5sec. (Alias: sip.timer.t1 )
P250P441P541200: 2sec, 400: 4sec, 800: 8secConfigure SIP Timer T2. Default: 4sec. (Alias: sip.timer.t2 )
P2387P2487P258732-64Configure SIP Timerd Interval. Default: 32. (Alias: sip.timerd.interval )
P130P448P5480: UDP, 1: TCP, 2: Tls Or TcpConfigure SIP Transport. Default: UDP. (Alias: sip.transport )
P81P411P5110: No, 1: Yes, 2: InstanceConfigure SIP Unregister On Reboot. Default: Instance. (Alias: sip.unregisterOnReboot )
P2329P2429P25290: sip, 1: sipsConfigure SIP URI Scheme When Using TLS. Default: sips. (Alias: sip.uriSchemeWhenUsingTls )
P2331P2431P25311: Yes, 0: NoConfigure SIP Use Actual Ephemeral Port In Contact With TCP TLS. Default: No. (Alias: sip.useActualEphemeralPortInContactWithTcpTls )
P35P404P504String (max 512 chars)Configure SIP User ID. (Alias: sip.userid )
P2315P2415P2515512: 512Kbps, 1024: 1024Kbps, 1280: 1280Kbps, 1536: 1536Kbps, 2048: 2048Kbps, 768: 768Kbps, 640: 640KbpsConfigure Video Bit Rate. Default: 2048Kbps. (Alias: video.bitRate )
P95031P95131P952310-3Configure Video Capability. Default: 1. (Alias: video.capability )
P2393P2493P25931: Yes, 0: NoConfigure Video FEC Enable. Default: Yes. (Alias: video.fec.enable )
P2307P2407P250710: 1080P, 9: 720P, 4: 4CIF, 1: VGAConfigure Video H.264 Imagesize. Default: 1080P. (Alias: video.h264.imagesize )
P295P464P56499: H264Configure Video Preferred Video Decoder Choice 1. Default: H264. (Alias: video.preferredVideoDecoder.choice.1 )
P296P465P56599: H264Configure Video Preferred Video Decoder Choice 2. Default: H264. (Alias: video.preferredVideoDecoder.choice.2 )

7. HTTPS IP DIAL

Make or cancel SIP voice calls via HTTP API. Authentication is required.

Refer to the GDS37xx HTTP API – HTTP SIP DIAL upstream specification for the original interface definition.

Endpoint: /goform/config

Method: GET

Authentication: Session cookie sid=<session_id> required

7.1 Initiate Call ( cmd=call&call_type=1 )

Trigger an outgoing SIP call to the specified number or IP

address.

Request

GET /goform/config?cmd=call&call_type=1&call_num=<SIP_NUMBER> HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Parameters

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: call
call_typeNumberYesFixed value: 1 (Initiate call)
call_numStringYesSIP extension number, E.164 number, or IP address (e.g., 1001, +861380001234, 192.168.1.100)

Response (XML)

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

7.2 Cancel/ Hang-up Call ( cmd=call&call_type=0 )

Hang up the current outgoing call.

Request

GET /goform/config?cmd=call&call_type=0 HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Parameters

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: call
call_typeNumberYesFixed value: 0 (Hang up / cancel)

Response (XML)

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

7.3 Compatibility Dial ( cmd=set&phone_dial )

Legacy interface that triggers SIP dialing by setting the phone_dial P-value string. Equivalent in effect to cmd=call&call_type=1 but uses the cmd=set path.

Prefer cmd=call&call_type=1&call_num=<number> for new integrations. This phone_dial form is retained for backward compatibility with older GDS37xx firmware.

Request

GET /goform/config?cmd=set&phone_dial=<SIP_NUMBER> HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Parameters

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: set
phone_dialStringYesSIP extension or number to dial

Response (XML)

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

7.4 Response Codes

ResCodeRetMsgMeaning
0OKCommand accepted; call is being initiated or hung up
1Auth failedSession has expired; re-authenticate and retry
2Invalid ParamMissing or invalid call_num / call_type
20UnknownCommand not supported by this hardware/firmware version

7.5 Call Flow Example

SIP signaling sequence: Client issues GET cmd=call&call_type=1 to GDS372X; device initiates SIP INVITE to call_num; waits ~10s; device sends SIP BYE; ResCode=0 shown at steps.

8. Video Settings

Retrieve or update video stream settings for Stream 1 (Primary) and Stream 2 (Secondary).

8.1 Query Video Settings

Query the video configuration block from the device. This retrieves all camera and encoding parameters.

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=video

8.2 Video Settings

The video configuration includes the video encoding and stream parameters associated with the device.

Video P-value Reference

P-valueAlias NameTypeOptions / RangeDefaultDescription
P2315video.bitRateNumber512: 512Kbps, 1024: 1024Kbps, 1280: 1280Kbps, 1536: 1536Kbps, 2048: 2048Kbps, 768: 768Kbps, 640: 640Kbps2048KbpsConfigure Video Bit Rate.
P95031video.capabilityNumber0-31Configure Video Capability.
P2393video.fec.enableNumber1: Yes, 0: No1Configure Video FEC Enable.
P2307video.h264.imagesizeNumber10: 1080P, 9: 720P, 4: 4CIF, 1: VGA10Configure Video H.264 Imagesize.
P295video.preferredVideoDecoder.choice.1Number99: H26499Configure Video Preferred Video Decoder Choice 1.
P296video.preferredVideoDecoder.choice.2Number99: H26499Configure Video Preferred Video Decoder Choice 2.

9. Privacy Masks

9.1 Query Privacy Mask Configuration (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=privacy

Request Example:

GET /goform/config?cmd=get&type=privacy HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P14225>0@0,0,0,0;0@0,0,0,0;0@0,0,0,0;0@0,0,0,0</P14225>
</Configuration>

9.2 Set Privacy Mask Configuration (SET)

Endpoint: /goform/config

Method: GET (query string parameters)

Query Parameters: cmd=set&P14225=<value>

Request Example (Enable Zone 1 with Coordinates):

GET /goform/config?cmd=set&P14225=1@100,200,300,400;0@0,0,0,0;0@0,0,0,0;0@0,0,0,0 HTTP/1.1
Cookie: sid=<session_id>

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

9.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P14225video.privacyMaskStringMax 128 chars0@0,0,0,0;0@0,0,0,0;0@0,0,0,0;0@0,0,0,0Privacy mask zones layout. Formatted as active@x,y,w,h; . for up to 4 regions.

10. Alarm Configurations

Configure SIP phone numbers, actions, and event mappings for system alarms.

10.1 Alarm Phone List

Configure SIP phone numbers that will be called when an alarm event is triggered. The GDS372X supports up to 4 SIP alarm phone groups (each with a configurable SIP account and a multi-line phone number list), plus one cloud notification list.

This section is compatible with the GDS37xx HTTP API – Alarm Phone List specification. The GDS372X extends the original single-group (P10459 / P10471) definition with 3 additional groups (P15575–P15580) and a cloud list (P15608).

10.1.1 Query Alarm Phone List(GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=alarm_phone

Request Example:

GET /goform/config?cmd=get&type=alarm_phone HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P10459>12345&#10;45645</P10459>
<P10471>0</P10471>
<P15575>1</P15575>
<P15576>12134&#10;43882</P15576>
<P15577>3</P15577>
<P15578>44433</P15578>
<P15579>2</P15579>
<P15580>121232&#10;454546</P15580>
<P15608></P15608>
</Configuration>

Phone number lists are newline-separated ( \n / &#10; in XML). Each P-value for a phoneList may contain multiple phone numbers, one per line. Max total length: 256 characters.

10.1.2 Set Alarm Phone List(SET)

Endpoint: /goform/config

Method: GET (query string parameters)

Query Parameters: cmd=set&P<pvalue>=<value>& .

Request Example (Set Group 1):

GET /goform/config?cmd=set&P10459=1001%0A1002&P10471=0 HTTP/1.1
Cookie: sid=<session_id>

10.1.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P10459alarm.notify.sipAlarm.phoneList1StringMax 256 chars, newline-separated""Group 1: SIP phone numbers to dial on alarm. One number per line.
P10471alarm.notify.sipAlarm.account1Number0 : Auto, 1 : Account 1, 2 : Account 2, 3 : Account 30Group 1: SIP account used to dial the phone list.
P15575alarm.notify.sipAlarm.account2Number0 : Auto, 1 : Account 1, 2 : Account 2, 3 : Account 30Group 2: SIP account used to dial the phone list.
P15576alarm.notify.sipAlarm.phoneList2StringMax 256 chars, newline-separated""Group 2: SIP phone numbers to dial on alarm.
P15577alarm.notify.sipAlarm.account3Number0 : Auto, 1 : Account 1, 2 : Account 2, 3 : Account 30Group 3: SIP account used to dial the phone list.
P15578alarm.notify.sipAlarm.phoneList3StringMax 256 chars, newline-separated""Group 3: SIP phone numbers to dial on alarm.
P15579alarm.notify.sipAlarm.account4Number0 : Auto, 1 : Account 1, 2 : Account 2, 3 : Account 30Group 4: SIP account used to dial the phone list.
P15580alarm.notify.sipAlarm.phoneList4StringMax 256 chars, newline-separated""Group 4: SIP phone numbers to dial on alarm.
P15608alarm.notify.sipAlarm.cloudList1StringMax 256 chars""Cloud notification target list (e.g., UCM extension or cloud platform number).

10.2 Alarm Action Configuration

Configure actions to be performed when an alarm event is triggered. The GDS372X supports up to 10 Alarm Action Profiles. Each profile has 12 settings including profile name and enable flags for various actions (such as sending sound, dialing a SIP call, triggering digital output, email notification, uploading JPEG to FTP/Cloud/Local, or calling via app, cloud video call, and Home Assistant).

10.2.1 Query Alarm Action Configuration (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=alarm_profile

Request Example:

GET /goform/config?cmd=get&type=alarm_profile HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

10.2.4 Alarm Action Profile P-value Mapping

Using the offsets defined above, the P-values for each profile are mapped as follows:

Profile NumberBase P-valueP-value RangeAlias Prefix
Profile 11576015760 – 15771alarm.action.profile1
Profile 21578015780 – 15791alarm.action.profile2
Profile 31580015800 – 15811alarm.action.profile3
Profile 41582015820 – 15831alarm.action.profile4
Profile 51584015840 – 15851alarm.action.profile5
Profile 61586015860 – 15871alarm.action.profile6
Profile 71588015880 – 15891alarm.action.profile7
Profile 81590015900 – 15911alarm.action.profile8
Profile 91592015920 – 15931alarm.action.profile9
Profile 101594015940 – 15951alarm.action.profile10

10.3 Alarm Event Configuration

Configure alarm events, digital input settings, silent alarms, and custom audio notifications for different trigger conditions. The GDS372X supports configuring various event types including Invasion Detection, High Temperature, Tamper, Unauthorized Card, Remote Open Door Password Error, SD Card exceptions, Safe Room events, and Relay Open Timeout.

10.3.1 Query Alarm Event Configuration (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=event

Request Example:

GET /goform/config?cmd=get&type=event 
HTTP/1.1Cookie: sid=<session_id>
Accept: application/xml

Alarm Digital Input Parameters

ParameterDI 1DI 2DI 3Options / Range
alarm.digitalInputN.modeP14320P14325P143280 : Disable, 1 : Open, 2 : Close, 3 : Normal Open, 4 : Normal Close
alarm.digitalInputN.scheduleP14321P14326P14331Active schedule index
alarm.digitalInputN.profileP14322P14327P14332Trigger action profile index
alarm.digitalInputN.statusP15431P15432P14330Active status (0: Normal, 1: Triggered)
alarm.digitalInputN.openDoorCtrlP15451P15452P14329Open door action control mode
alarm.digitalInputN.customSound.enableP15664P15669P156740 : Disable, 1 : Enable
alarm.digitalInputN.customSound.fileP15665P15670P15675Audio notification file index
alarm.digitalInputN.customSound.playModeP15666P15671P15676Playback mode
alarm.digitalInputN.customSound.playDurationP15667P15672P15677Playback duration (in seconds)
alarm.digitalInputN.customSound.playLoopCntP15668P15673P15678Playback loop count

11. Creation QR Code Management

The GDS372X supports managing temporary visitors and generating associated QR Codes for door opening access.

11.1 ADD Visitor (Create QR Code)

Add new visitor information. Supports configuring visitor QR Code door opening limits, validity periods, and repetition cycles.

Endpoint: /goform/config

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: add
visitor_nameStringYesVisitor name, max 64 characters, cannot be empty.
visitor_uidStringYesUnique visitor identifier (alphanumeric), cannot be empty.
door_ctrlStringYesAllowed door relays, comma-separated.
0 : relay1
1 : relay2
visitor_creater_idStringYescreator’s username.
visitor_valid_begin_timeStringYesValidity start time (UTC), format: YYYYMMDDHHMMSS .
visitor_valid_end_timeStringYesValidity end time (UTC), format: YYYYMMDDHHMMSS .
visitor_open_door_cntIntYesAllowed door opening counts, -1 for unlimited.
visitor_cycle_timeStringYesRepetition cycle, -1 for no repetition.
0 : Daily
1-7 : Selected weekdays (Monday to Sunday).
visitor_period_begin_timeStringNoDaily active window start time ( HHMMSS ). Required if cycle != -1.
visitor_period_end_timeStringNoDaily active window end time ( HHMMSS ). Required if cycle != -1.

Request Example:

Specify Validity Period:

https: /192.168.1.162/goform/config?cmd=add&door_ctrl=0,1&visitor_creater_id=258974&visitor_name=QR1&visitor_uid=216416&visitor_valid_begin_time=20260608024152&visitor_valid_end_time=20260608025652&visitor_open_door_cnt=5&visitor_cycle_time=-1

Response (XML):

Success Response:

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<qrcode>Base64EncodedPNGData</qrcode> - Base64-encoded PNG image data of the dynamic QR Code -->
</Configuration>

11.2 GET Visitor List

Query visitor records page-by-page from the device.

Endpoint: /goform/config

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: get
typeStringYesFixed value: visitor_list
pageIntYesPage index
page_sizeIntYesNumber of entries per page

Response XML Elements:

ElementTypeRequiredDefaultDescription
open_door_permissionStringYesDoor open permission:
0 : None
1 : relay1
2 : relay2
3 : relay1 and relay2
total_open_door_timesStringYesTotal door opening limit ( -1 for unlimited).
enable_open_door_timesStringYesRemaining door opening count ( -1 for unlimited).
SODStringYesValidity start time ( YYYYMMDDHHMMSS ).
EODStringYesValidity end time ( YYYYMMDDHHMMSS ).
visit_begin_time_periodStringYesDaily active start time ( HHMMSS ).
visit_end_time_periodStringYesDaily active end time ( HHMMSS ).
visitor_stateStringYesVisitor status:
1 : Active
0 : Expired/Inactive

Request Example:

https: /192.168.1.162/goform/config?cmd=get&type=visitor_list&page=1&page_size=10

Response (XML):

Success Response:

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<total>17</total> - Total record count -->
<item>
<visitor_id>216416</visitor_id>
<visitor_name>QR1</visitor_name>
<visitor_creater_name>Someone</visitor_creater_name>
<open_door_permission>3</open_door_permission>
<total_open_door_times>-1</total_open_door_times>
<enable_open_door_times>-1</enable_open_door_times>
<visit_begin_time_period>
<visit_end_time_period>
<SOD>
<EOD>20260705000000</EOD>
<visitor_state>1</visitor_state>
</item>
</Configuration>

11.3 DELETE Visitor

Delete visitor information (supports single or batch deletion).

Endpoint: /goform/config

Method: GET

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: del
visitorIdsStringYesVisitor UID(s) to delete; supports comma-separated list for batch operation (e.g. 123456,654321 ).

Request Example:

Delete Single Visitor:

https: /192.168.1.162/goform/config?cmd=del&visitorIds=123456

Batch Delete Visitors:

https: /192.168.1.162/goform/config?cmd=del&visitorIds=123456,654321,789012

Response (XML):

Success Response:

<?xml version="1.0" encoding="utf-8"?><Configuration><ResCode>0 /ResCode><RetMsg>OK /RetMsg>/Configuration>

12. MJPEG Video & JPEG Snapshot Integration

For integration with third-party systems (such as NVRs, Home Assistant, or custom video management software), the GDS372X provides HTTP endpoints to access live MJPEG video streams and retrieve static JPEG snapshots.

Accessing media endpoints using Basic Authentication credentials embedded in the URL query string (e.g., admin:password@<ip_address> ) transmits credentials in cleartext over HTTP. It is highly recommended to use HTTPS ( https: / ) to secure credentials during transmission.

12.1 HTTP Endpoints

All media requests use the GET method. The following tables describe the endpoints for video streams and static images:

MJPEG Video Streams

EndpointTarget StreamDescription
http(s): /<ip_address>/jpeg/streamStream 1 (Primary)High-resolution primary MJPEG video stream.
http(s): /<ip_address>/jpeg/stream=0Stream 1 (Primary)Alias for the primary MJPEG video stream.
http(s): /<ip_address>/jpeg/stream=1Stream 2 (Secondary)Sub-stream MJPEG video stream (typically lower resolution/bitrate).

JPEG Snapshots

EndpointDescription
http(s): /<ip_address>/snapshot/view0.jpgCaptures and returns a single static JPEG snapshot from the camera.

12.2 Request Examples

To authenticate, you can pass credentials using standard HTTP Basic Authentication (e.g., in the request headers) or by embedding credentials directly in the URL:

Example 1: Accessing Primary Video Stream (Basic Auth in URL)

https: /admin:admin123@192.168.1.162/jpeg/stream

Example 2: Accessing Camera Snapshot(Basic Auth in URL)

https: /admin:admin123@192.168.1.162/snapshot/view0.jpg

13. Card Group & Management Logs

13.1 ADD Card Group

Endpoint: /goform/config

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: add
groupnameStringYesName of the card group
schidStringYesActive schedule identifier (e.g., door_sch )

Response (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<groupid>2</groupid>
</Configuration>

13.2 GET Card Groups

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: get
typeStringYesFixed value: group
pageIntYesPage index
page_sizeIntYesNumber of entries per page

Response (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<total>2</total>
<group>
<groupid>1</groupid>
<groupname>Always Allow Access to All Doors</groupname>
<schid>1</schid>
</group>
</Configuration>

13.3 DEL Card Group

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: del
groupidIntYesUnique Card Group ID to delete

13.4 GET Management Logs

Retrieve door access and audit log history.

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: get
typeStringYesFixed value: mgr_log
id_beginIntYesStart index for log query

Response (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<log>
<id>1</id>
<time>20250925165051</time>
<type>1101</type>
</log>
</Configuration>

14. On-Screen Display (OSD) Configurations

Configure display settings such as OSD date format, time format, OSD custom text, OSD text position, and enabling/disabling OSD display components.

14.1 Query OSD Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=osd

Request Example:

GET /goform/config?cmd=get&type=osd HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P10044>1</P10044>
<P10045>1</P10045>
<P10001>1</P10001>
<P10007>0</P10007>
<P10040>OfficeOSD</P10040>
<P10041>0</P10041>
<P10046>2</P10046>
</Configuration>

14.2 Set OSD Settings (SET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P<P-value>=<value>

Request Example:

GET /goform/config?cmd=set&P10040=OfficeOSD HTTP/1.1

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

14.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P10044osd.displayTime.enableNumber0 : Disable, 1 : Enable1Enable or disable displaying time on screen.
P10045osd.displayText.enableNumber0 : Disable, 1 : Enable1Enable or disable displaying custom text on screen.
P10001osd.dataFormatNumber0 : YYYY-MM-DD, 1 : MM-DD-YYYY, 2 : DD-MM-YYYY1Date format displayed in OSD.
P10007osd.timeFormatNumber0 : 24-Hour, 1 : 12-Hour0Time format displayed in OSD.
P10040osd.textStringMax length: 25 characters""Custom text to display in OSD.
P10041osd.timePositionNumber0 : Top Left, 1 : Bottom Left, 2 : Top Right, 3 : Bottom Right0Position of time on screen.
P10046osd.textPositionNumber0 : Top Left, 1 : Bottom Left, 2 : Top Right, 3 : Bottom Right2Position of custom text on screen.

15. CMOS Configurations

Configure CMOS camera modes (Wide Dynamic Range – WDR), power frequency filter, and WDR schedules.

15.1 Query CMOS Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=cmos

Request Example:

GET /goform/config?cmd=get&type=cmos HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P10572>1</P10572>
<P12314>1</P12314>
<P15707>0</P15707>
</Configuration>

15.2 Set CMOS Settings (SET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P<P-value>=<value>

Request Example:

GET /goform/config?cmd=set&P12314=1 HTTP/1.1

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

15.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P10572cmos.modeNumber1 : Disabled, 3 : WDR (Wide Dynamic Range)1CMOS mode. Enables Wide Dynamic Range (WDR) to optimize contrast.
P12314cmos.powerFrequencyNumber0 : 50Hz, 1 : 60Hz1Power frequency selection to prevent flicker from lighting.
P15707cmos.wdr.scheduleNumber0 (Always Off), 10 (Always On), 100 - 149 (Active Schedule Index)0CMOS WDR Schedule configuration.

16. Audio Configurations

Configure device audio settings such as volume levels, doorbell sound options, ringtones for door unlock operations, keypress feedback, and IP address announcement schedules.

16.1 Query Audio Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=audio

Request Example:

GET /goform/config?cmd=get&type=audio HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P14340>0</P14340>
<P15518>8</P15518>
<P15519>15</P15519>
<P15523>60</P15523>
<P15524>1</P15524>
<P15537>113</P15537>
<P15538>112</P15538>
<P15539>114</P15539>
<P15622>6</P15622>
<P15663>8</P15663>
<P22317>1</P22317>
<P22332>8</P22332>
<P43025>8</P43025>
</Configuration>

16.2 Set Audio Settings (SET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P<P-value>=<value>

Request Example:

GET /goform/config?cmd=set&P15622=6 HTTP/1.1

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

16.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P14340audio.keyTone.modeNumber0 : Default, 1 : DTMF, 2 : Mute0Key Tone operating mode.
P15518audio.volume.openDoorNumber0 – 158Volume level when playing door opening tone.
P15519audio.volume.tamperNumber0 – 1515Volume level for physical tamper protection alarm speaker output.
P15523ipAnnouncement.startTimeNumber60 – 300 (seconds)60Delay before the device announces its IP address.
P15524ipAnnouncement.loopCountNumber1 – 31Number of times the device announces its IP address.
P15537audio.ringtone.internalOpenDoorNumber0 – 2147483647 (sound file index)113Sound file selection for internal open door ringtone.
P15538audio.ringtone.externalOpenDoorNumber0 – 2147483647 (sound file index)112Sound file selection for external open door ringtone.
P15539audio.ringtone.openDoorFailedNumber0 – 2147483647 (sound file index)114Sound file selection for door opening failed tone.
P15622audio.ringtone.doorbellNumber0 – 2147483647 (sound file index)6Sound file selection for doorbell ringtone.
P15663audio.volume.doorbellNumber0 – 158Speaker volume for doorbell feedback tone.
P22317audio.volume.callNumber1 – 88Volume level during active SIP audio calls.
P22332audio.volume.alarmNumber0 – 158Volume level for generic system alarms.
P43025audio.volume.mediaNumber0 – 158Volume level for playing local media files/prompts.

17. System Information

Retrieve general device system information, model name, software versions (firmware, bootloader, recovery), active timezone rules, and security levels. All parameters in this configuration block are read-only.

17.1 Query System Info Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=sysinfo

Request Example:

GET /goform/config?cmd=get&type=sysinfo HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<Pphone_model>GDS3726</Pphone_model>
<P1397>9650002211B</P1397>
<P69>1.0.3.0</P69>
<P70>1.0.3.1</P70>
<P45>1.0.3.4</P45>
<P7030></P7030>
<P7034>1.0.3.4</P7034>
<P7033>none</P7033>
<P7038>1.0.3.1</P7038>
<PautoTimezone>TZY-8</PautoTimezone>
<PTZ>TZY-8</PTZ>
<P:security_ver>GS010.001.001</P:security_ver>
</Configuration>

17.2 Field Reference Table

All system info parameters are Read-Only.

P-value / KeyTypeDescriptionExample / Range
Pphone_modelStringDevice hardware model name.GDS3726 / GDS3725
P1397StringDevice part number or hardware revision identifier.9650002211B
P69StringBootloader version.1.0.3.0
P70StringCore system kernel version.1.0.3.1
P45StringMain application firmware version.1.0.3.4
P7030StringActive resource profile version.“”
P7034StringActive software bundle release version.1.0.3.4
P7033StringActive system recovery tool version.none
P7038StringActive root filesystem bundle version.1.0.3.1
PautoTimezoneStringTimezone rule detected automatically (e.g. from DHCP option 2).TZY-8
PTZStringConfigured active system timezone descriptor.TZY-8
P:security_verStringInternal device security and vulnerability policy version.GS010.001.001

18. Network Settings & Status

Retrieve and configure Ethernet settings, VLAN configurations, PPPoE credentials, IPv6 configurations, 802.1X network authentication, LLDP and CDP parameters, QoS DSCP priority values, and HTTP/SIP user-agent string overrides. This section also supports query-only real-time network link status values.

18.1 Query Network Settings &Status (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=net

Request Example:

GET /goform/config?cmd=get&type=net HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
...
<P:netstat.ethernet.eth0.ipv4.gateway></P:netstat.ethernet.eth0.ipv4.gateway>
<P:netstat.ethernet.eth0.ipv4.nat.type>None</P:netstat.ethernet.eth0.ipv4.nat.type>
<P:netstat.ethernet.eth0.ipv6.mode>Auto</P:netstat.ethernet.eth0.ipv6.mode>
<P:netstat.ethernet.eth0.ipv6.duid>000100012bc4d4b04f3668142034</P:netstat.ethernet.eth0.ipv6.duid>
<P:netstat.ethernet.eth0.ipv6.addr.global>2001:db8 :100</P:netstat.ethernet.eth0.ipv6.addr.global>
<P:netstat.ethernet.eth0.ipv6.addr.link>fe80 :20b:82ff:fe11:2233</P:netstat.ethernet.eth0.ipv6.addr.link>
<P:netstat.ethernet.eth0.ipv6.gateway>fe80 :1</P:netstat.ethernet.eth0.ipv6.gateway>
<P:netstat.ethernet.eth0.ipv6.nat.type>None</P:netstat.ethernet.eth0.ipv6.nat.type>
<P:netstat.ethernet.eth0.vlan.id>0</P:netstat.ethernet.eth0.vlan.id>
<P:netstat.ethernet.eth0.vlan.type>0</P:netstat.ethernet.eth0.vlan.type>
<P:netstat.dns.lists>192.168.1.1,8.8.8.8</P:netstat.dns.lists>
<P:lldp_active>1</P:lldp_active>
<P:lldp_vlan_id>0</P:lldp_vlan_id>
<P:lldp_qos_priority>0</P:lldp_qos_priority>
<P1415>2</P1415>
<P8>0</P8>
<P8300>0</P8300>
<P146>gds3726</P146>
<P148>Grandstream GDS3726</P148>
<P9>192</P9>
<P10>168</P10>
<P11>1</P11>
<P12>100</P12>
<P13>255</P13>
<P14>255</P14>
<P15>255</P15>
<P16>0</P16>
<P1684>1</P1684>
<P22122>60</P22122>
- Other settings follow in same format -->
</Configuration>

18.2 Set Network Settings (SET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P1684=<0|1>&P22122=<seconds> .

Request Example:

GET /goform/config?cmd=set&P1684=1&P22122=60 HTTP/1.1
Cookie: sid=<session_id>

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

18.3 Field Reference Table

LLDP Real-Time Status Parameters (Read-Only)

P-value / KeyTypeDescription
:lldp_activeStringActive LLDP status flag ( 0 or 1 ).
:lldp_vlan_idNumberDynamically negotiated LLDP VLAN ID.
:lldp_qos_priorityNumberDynamically negotiated LLDP priority index.
P-value / KeyTypeDescriptionExample / Range
P211StringEthernet Port / WAN mode.Disabled / Enabled
P:netstat.lan.connectedBooleanLAN connection status.0 (Disconnected), 1 (Connected)
P:netstat.lan.speedStringLAN link speed.0M , 10M , 100M , 1000M
P:netstat.lan.duplexStringLAN duplex mode.Half , Full
P:netstat.pc.connectedBooleanPC port connection status.0 (Disconnected), 1 (Connected)
P:netstat.pc.speedStringPC port link speed.0M , 10M , 100M
P:netstat.pc.duplexStringPC port duplex mode.Half , Full
P:netstat.ethernet.eth0.macStringMAC address of the device interface.00:0b:82:11:22:33
P:netstat.ethernet.eth0.ipv4.modeStringIPv4 address allocation mode.DHCP , Static , PPPoE
P:netstat.ethernet.eth0.ipv4.addrStringConfigured/assigned IPv4 address.192.168.1.100
P:netstat.ethernet.eth0.ipv4.gatewayStringGateway IPv4 address.192.168.1.1
P:netstat.ethernet.eth0.ipv4.nat.typeStringNAT traversal type detected for IPv4.STUN , Turn , Symmetric , None
P:netstat.ethernet.eth0.ipv6.modeStringIPv6 address allocation mode.Auto , Static , DHCP
P:netstat.ethernet.eth0.ipv6.duidStringDHCPv6 Unique Identifier (DUID).000100012bc4d4b04f3668142034
P:netstat.ethernet.eth0.ipv6.addr.globalStringAssigned global IPv6 address.2001:db8 :100
P:netstat.ethernet.eth0.ipv6.addr.linkStringLink-local IPv6 address.fe80 :20b:82ff:fe11:2233
P:netstat.ethernet.eth0.ipv6.gatewayStringGateway IPv6 address.fe80 :1
P:netstat.ethernet.eth0.ipv6.nat.typeStringNAT traversal type detected for IPv6.None
P:netstat.ethernet.eth0.vlan.idNumberVLAN ID configured on eth0.0 – 4094
P:netstat.ethernet.eth0.vlan.typeNumberVLAN tag type / priority.0 – 7
P:netstat.dns.listsStringList of active DNS servers (comma separated).192.168.1.1,8.8.8.8

Ethernet Settings Parameters (GET / SET)

P-valueAlias NameTypeOptions / RangeDefaultDescription
P1415network.internetProtocolNumber0 : IPv4, 1 : IPv6, 2 : Both2Configured Internet Protocol Mode.
P8network.port.eth.1.typeNumber0 : DHCP, 1 : Static IP, 2 : PPPoE0IPv4 address allocation mode.
P8300network.dhcp.enableVlanNumber0 : No, 1 : Yes0Enable DHCP VLAN override.
P146network.dhcp.hostNameStringMax 64 chars“”Optional hostname requested via DHCP.
P148network.dhcp.vendorIDStringMax 64 chars“”Optional DHCP Vendor Class ID (Option 60).
P9 – P12network.port.eth.1.address.1 to .4Number0 – 255192.168.0.160IPv4 Static Address segments.
P13 – P16network.port.eth.1.mask.1 to .4Number0 – 255255.255.255.0IPv4 Static Subnet Mask segments.
P17 – P20network.port.eth.1.gateway.1 to .4Number0 – 2550.0.0.0IPv4 Default Gateway segments.
P21 – P24network.dns.1.ip.1 to .4Number0 – 2550.0.0.0DNS Server 1 IP segments.
P25 – P28network.dns.2.ip.1 to .4Number0 – 2550.0.0.0DNS Server 2 IP segments.
P92 – P95network.dns.preferred.ip.1 to .4Number0 – 2550.0.0.0Preferred DNS Server IP segments.
P51network.port.eth.1.vlan.tagNumber0 – 40940Layer 2 QoS 802.1Q/VLAN Tag for eth0.
P87network.port.eth.1.vlan.priorityNumber0 – 70Layer 2 QoS 802.1p Priority Value for eth0.
P82network.port.eth.1.pppoe.accountStringMax 64 chars“”PPPoE Account Username.
P83network.port.eth.1.pppoe.passwordStringMax 64 chars (masked on GET)“”PPPoE Account Password. Returns "******" .
P269network.pppoe.serviceNameStringMax 64 chars“”PPPoE Service Name.
P1419network.port.eth.1.ipv6.typeNumber0 : DHCP, 1 : Static IP0IPv6 Address Allocation Mode.
P1420network.port.eth.1.ipv6.static.addressStringValid IPv6 Address“”IPv6 Static IP Address.
P1421network.port.eth.1.ipv6.static.prefixLengthNumber0 – 128“”IPv6 Static Prefix Length.
P1422network.port.eth.1.ipv6.static.prefixStringValid IPv6 Prefix“”IPv6 Static Prefix.
P22366network.port.eth.1.ipv6.static.gatewayStringValid IPv6 Gateway“”IPv6 Default Gateway.
P1423network.dns.preferred.ipv6StringValid IPv6 DNS Address“”Preferred DNS Server (IPv6).
P1424network.dns.1.ipv6StringValid IPv6 DNS Address“”DNS Server 1 (IPv6).
P1425network.dns.2.ipv6StringValid IPv6 DNS Address“”DNS Server 2 (IPv6).
P1426network.port.eth.1.ipv6.static.modeNumber0 – 20IPv6 Static Routing mode.

19. Event Notification

Configure Action URLs that are triggered automatically when specific system events or state transitions occur (e.g. card entry, relay changes, call status, registration transitions).

19.1 Query Event Notification Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=log

Request Example:

GET /goform/config?cmd=get&type=log HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P8304></P8304>
<P8305>http: /192.168.1.50/registered</P8305>
<P8306></P8306>
<P8330></P8330>
<P8331></P8331>
<P15525></P15525>
<P15526></P15526>
<P15527>http: /192.168.1.50/card_valid</P15527>
<P15528></P15528>
<P15531></P15531>
<P15532></P15532>
<P8310></P8310>
<P8311></P8311>
<P8312></P8312>
<P8313></P8313>
<P8314></P8314>
</Configuration>

19.2 Set Event Notification Settings (SET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P15527=http%3A%2F%2F192.168.1.50%2Fcard_valid

Request Example:

GET /goform/config?cmd=set&P15527=http%3A%2F%2F192.168.1.50%2Fcard_valid HTTP/1.1
Cookie: sid=<session_id>

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

19.3 Field Reference Table

All event notification settings are string parameters.

P-valueAlias NameTypeOptions / RangeDefaultDescription
P8304ons.actionUrl.setupCompletedStringMax 512 chars""Action URL triggered when device boot and setup is completed.
P8305ons.actionUrl.registeredStringMax 512 chars""Action URL triggered when a SIP account registers successfully.
P8306ons.actionUrl.unregisteredStringMax 512 chars""Action URL triggered when a SIP account becomes unregistered.
P8330ons.actionUrl.openSyslogStringMax 512 chars""Action URL triggered when syslog output is started/opened.
P8331ons.actionUrl.closeSyslogStringMax 512 chars""Action URL triggered when syslog output is stopped/closed.
P15525ons.actionUrl.relayTriggeredStringMax 512 chars""Action URL triggered when a door relay is energized/opened.
P15526ons.actionUrl.relayClosedStringMax 512 chars""Action URL triggered when a door relay returns to normal/closed.
P15527ons.actionUrl.validCardEnteredStringMax 512 chars""Action URL triggered when a valid RFID card is swiped or PIN entered.
P15528ons.actionUrl.invalidCardEnteredStringMax 512 chars""Action URL triggered when an invalid card is swiped or PIN fails.
P15531ons.actionUrl.inputTriggeredStringMax 512 chars""Action URL triggered when an alarm input interface is tripped.
P15532ons.actionUrl.inputClosedStringMax 512 chars""Action URL triggered when an alarm input interface returns to normal.
P8310ons.actionUrl.incomingCallStringMax 512 chars""Action URL triggered when an incoming call is received by the device.
P8311ons.actionUrl.outgoingCallStringMax 512 chars""Action URL triggered when the device originates an outgoing call.
P8312ons.actionUrl.missedCallStringMax 512 chars""Action URL triggered when an incoming call goes unanswered.
P8313ons.actionUrl.establishedCallStringMax 512 chars""Action URL triggered when a call is answered and media starts.
P8314ons.actionUrl.terminatedCallStringMax 512 chars""Action URL triggered when a call is hung up/ended.

20. TR069 Settings

Configure TR-069 (CWMP) client settings on the device, including ACS connection URL, authentication credentials, periodic inform properties, and connection request parameters.

20.1 Query TR069 Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=tr069

Request Example:

GET /goform/config?cmd=get&type=tr069 HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P1409>1</P1409>
<P4503>http: /acsguestb.gdms.cloud</P4503>
<P4504>admin</P4504>
<P4505>******</P4505>
<P4506>1</P4506>
<P4507>86400</P4507>
<P4511>EC74D7619BE1</P4511>
<P4512>******</P4512>
<P4518>7547</P4518>
<P8487>0</P8487>
</Configuration>

20.2 Set TR069 Settings (SET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P4518=7547

Request Example:

GET /goform/config?cmd=set&P4518=7547 HTTP/1.1Cookie: sid=<session_id>

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

20.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P1409tr069.enableNumber0 : No, 1 : Yes1Enable TR-069 client support on the device.
P4503tr069.urlStringMax 256 chars""ACS connection server URL.
P4504tr069.usernameStringMax 64 chars""ACS server authentication username.
P4505tr069.passwordStringMax 64 chars (masked on query)""ACS server authentication password. Returns "******" on query.
P4506tr069.periodicInformNumber0 : No, 1 : Yes1Enable/disable sending periodic inform messages to ACS.
P4507tr069.periodicInformIntervalNumber10 – 4294967295 (seconds)86400Periodic inform transmission interval.
P4511tr069.connectionRequestUsernameStringMax 64 chars""Connection request authentication username.
P4512tr069.connectionRequestPasswordStringMax 64 chars (masked on query)""Connection request authentication password. Returns "******" on query.
P4518tr069.connectionRequestPortNumber1 – 655357547Port used for receiving ACS connection requests.
P8487tr069.randomStart.enableNumber0 : No, 1 : Yes0Enable random delay before executing inform requests.

21. OpenVPN Settings

Configure OpenVPN client connection parameters, select cipher methods, and upload/delete cryptographic credentials (CA certificate, Client certificate, and Client key).

21.1 Query OpenVPN Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=openvpn

Request Example:

GET /goform/config?cmd=get&type=openvpn HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P7050>0</P7050>
<P7051>vpn.example.com</P7051>
<P7052>1194</P7052>
<P2912>0</P2912>
<P22457>0</P22457>
<P8396>1</P8396>
<P8394>vpnuser</P8394>
<P8395>******</P8395>
<P8508>0</P8508>
<P8460>comp-lzo</P8460>
<P9902>1</P9902>
<P9903>1</P9903>
<P9904>1</P9904>
</Configuration>

21.2 Set OpenVPN Settings (SET)

Configure OpenVPN general options. (Note: Certificate/Key parameters P9902 , P9903 , P9904 cannot be updated via the SET interface; they must be managed via the UPLOAD/DEL interfaces below.)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P7052=1194

Request Example:

GET /goform/config?cmd=set&P7052=1194 HTTP/1.1Cookie: sid=<session_id>

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

21.3 Upload OpenVPN Credentials (UPLOAD)

Upload a CA certificate, Client certificate, or Client private key to the GDS device.

Endpoint: /goform/config

Method: POST (Multipart form-data)

Query Parameters:

cmd=upload (Required)
type=4 (Required, specifies OpenVPN credential type)
index=<value> (Required)
0 : CA Certificate
1 : Client Certificate
2 : Client Key
fname=<filename> (Optional, filename for validation)

Request Payload: Multipart form-data with the certificate/key file attached (field name file ).

Response (JSON):

{"response": "success","body": "0"}

Response Body Values:

0 : Success.
1 : File upload failed or certificate validation failed.
2 : Certificate/key already exists.

21.4 Delete OpenVPN Credentials (DEL)

Delete the uploaded CA certificate, Client certificate, or Client key from the device.

Endpoint: /goform/config

Method: GET

Query Parameters:

cmd=del (Required)
openvpn=<value> (Required)
0 : Delete CA Certificate
1 : Delete Client Certificate
2 : Delete Client Key

Request Example:

GET /goform/config?cmd=del&openvpn=0 HTTP/1.1Cookie: sid=<session_id>

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<body>true</body>
</Configuration>

Response Body Values:

true : Deletion succeeded.false : Deletion failed (e.g. credential was not present).

21.5 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P7050openvpn.enableNumber0 : No, 1 : Yes0Enable OpenVPN client support.
P7051openvpn.serverStringMax 256 chars""OpenVPN server IP or domain name.
P7052openvpn.portNumber0 – 655351194OpenVPN server port number.
P2912openvpn.transportNumber0 : UDP, 1 : TCP0Network protocol used for OpenVPN tunnel.
P22457openvpn.tlsKeyTypeNumber0 : None, 1 : TLS-Auth, 2 : TLS-Crypt0TLS key type for authentication/encryption.
P8396openvpn.cipherNumber0 : Blowfish, 1 : AES-128, 2 : AES-256, 3 : Triple-DES1Encryption cipher method.
P8394openvpn.usernameStringMax 256 chars""Username for OpenVPN server authentication.
P8395openvpn.passwordStringMax 256 chars (masked on query)""Password for OpenVPN server authentication. Returns "******" on query.
P8508openvpn.compLzoNumber0 : No, 1 : Yes0Enable LZO compression.
P8460openvpn.additionalOptionsStringMax 1024 chars""Custom OpenVPN parameters and options.
P9902openvpn.caCertStringRead-only""CA certificate content status indicator.
P9903openvpn.clientCertStringRead-only""Client certificate content status indicator.
P9904openvpn.clientKeyStringRead-only""Client key content status indicator.

22. FTP Server Settings

Configure the FTP server address, port, credentials, and upload path used for snapshot or alarm JPEG uploads.

22.1 Query FTP Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=ftp

Request Example:

GET /goform/config?cmd=get&type=ftp HTTP/1.1Cookie: sid=<session_id>

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P14114>ftp.example.com</P14114>
<P14115>21</P14115>
<P14116>ftpuser</P14116>
<P14118>/upload/snapshots</P14118>
</Configuration>

Note: P14117 ( ftp.userPassword ) is write-only and will never appear in a GET response.

22.2 Set FTP Settings (SET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P<ID>=<VALUE>& .

Request Example:

GET /goform/config?cmd=set&P14114=ftp.example.com&P14115=21&P14116=ftpuser&P14117=s3cr3t&P14118=/upload HTTP/1.1
Cookie: sid=<session_id>

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

22.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P14114ftp.serverAddressStringMax 1024 chars""FTP server IP address or hostname.
P14115ftp.serverPortNumber0 – 6553521FTP server port number.
P14116ftp.userNameStringMax 64 chars""FTP login username.
P14117ftp.userPasswordStringMax 64 chars (write-only)""FTP login password. Cannot be read back via GET.
P14118ftp.pathStringMax 1024 chars/Remote directory path on the FTP server for file uploads.

23. Whitelist Settings

Manages the device-level whitelist: phone numbers that are always allowed through the door. The enable flag ( P10410 ) is stored in NVRAM. The whitelist contact list is configured via P22313 as a JSON array (write-only).

23.1 Query Whitelist Settings (GET)

Request

GET /goform/config?cmd=get&type=whitelist
Accept: application/xml
Cookie: sid=<SID>

Response (XML)

<Response>
<ResCode>0</ResCode>
<P10410>1</P10410> - Whitelist enabled (0/1) -->
<whitelist>
<item>
<id>121</id>
<number>1233435</number>
<note>user004</note>
</item>
<item>
<id>120</id>
<number>121213454</number>
<note>user003</note>
</item>
</whitelist>
</Response>

23.2 Set Whitelist Settings (SET)

Sets the full whitelist configuration. To set the whitelist list of contacts, configure P22313 with a JSON array string containing [number, note] pairs. Setting P22313 to [] clears the entire whitelist. The enable flag P10410 can be included in the same request.

Request

GET /goform/config?cmd=set&P10410=1&P22313=%5B%5B%2217765551001%22%2C%22user001%22%2C%2217765551002%22%2C%22user002%22%5D%5D
Accept: application/xml
Cookie: sid=<SID>

Parameter Description

ParameterDescription
P10410Enable whitelist ( 0 / 1 )
P22313Whitelist contacts JSON array (e.g. [["number", "note"], .] ). Write-only, cannot be read.

Response (XML)

<Response>
<ResCode>0</ResCode>
</Response>

23.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P10410call.allowlist.enableNumber ( 0 / 1 )1 : Yes, 0 : No0Enable whitelist
P22313call.incomingcall.whitelistJSON array string""Whitelist contacts JSON array

Note: P22313 is write-only. Querying it via GET will not return the raw JSON string; instead, the list of contacts is queried using cmd=get&type=whitelist inside the <whitelist> node.

24. Trusted CA Certificates

Configure trusted CA certificate load mode, and upload/delete trusted CA certificates via ApiGDS.

24.1 Query Trusted CA Settings (GET)

Retrieve the load mode and info of all 16 CA certificate slots.

Query Parameters: cmd=get&type=trustedca

Request Example (XML):

GET /goform/config?cmd=get&type=trustedca HTTP/1.1
Accept: application/xml
Cookie: sid=<SID>

Response (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P8502>0</P8502>
<CA0>id=1&amp;origin=grandstream-WIN-QIBK16CBAR7-CA&amp;expire=May 9 07:45:29 2034 GMT&amp;</CA0>
<PCA0>id=1&amp;origin=grandstream-WIN-QIBK16CBAR7-CA&amp;expire=May 9 07:45:29 2034 GMT&amp;</PCA0>
<CA1></CA1>
<PCA1></PCA1>
.
<CA15></CA15>
<PCA15></PCA15>
</Configuration>

24.2 Set Trusted CA Load Mode (SET)

Configure load mode.

Query Parameters: cmd=set&P8502=<mode>

Request Example (XML):

GET /goform/config?cmd=set&P8502=2 HTTP/1.1
Accept: application/xml
Cookie: sid=<SID>

Response (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

24.3 Upload Trusted CA Certificate (UPLOAD)

Upload a trusted CA certificate to a specific slot.

Query Parameters:

cmd=upload
type=5 (Required, specifies Trusted CA)
index=<0-15> (Required, CA slot index)
fname=<filename> (Optional, certificate file name)

POST Payload: Multipart form-data containing the file binary data.

Request Example:

POST /goform/config?cmd=upload&type=5&index=1&fname=ca.crt HTTP/1.1
Content-Type: multipart/form-data; boundary=----Boundary
Cookie: sid=<SID>

------Boundary
Content-Disposition: form-data; name="file"; filename="ca.crt"
Content-Type: application/x-x509-ca-cert

<binary data>
------Boundary--

Response (XML):

<Response>
<ResCode>0</ResCode>
<body>0</body>
<issuer>EC74D7619CF0</issuer>
<expire>Aug 12 04:19:41 2050 GMT</expire>
</Response>

(Note: body value “0” indicates success, “1” indicates failure, “2” indicates slot already occupied)

24.4 Delete Trusted CA Certificate (DEL)

Delete certificate in a specific slot.

Query Parameters:

cmd=deltrustedca=<0-15> (Required, CA slot index)

Request Example:

GET /goform/config?cmd=del&trustedca=0 HTTP/1.1
Accept: application/xml
Cookie: sid=<SID>

Response (XML):

<Response><ResCode>0 /ResCode><body>true /body>/Response>

25. Date and Time

Configure device date and time format, override DHCP options, custom time zone rules, and NTP servers.

25.1 Query Date and Time Settings (GET)

Retrieve current date, time, NTP, and time zone settings.

Query Parameters: cmd=get&type=date

Request Example (XML):

GET /goform/config?cmd=get&type=date HTTP/1.1
Accept: application/xml
Cookie: sid=<SID>

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P30>pool.ntp.org</P30>
<P22309>0</P22309>
<P22310>1</P22310>
<P144>1</P144>
<P143>1</P143>
<P64>auto</P64>
<P246>MTZ+6MDT+5,M4.1.0,M11.1.0</P246>
<P102>0</P102>
<P122>1</P122>
</Configuration>

25.2 Set Date and Time Settings (SET)

Modify Date and Time settings.

Query Parameters: cmd=set&<parameter>=<value> .

Request Example (XML):

GET /goform/config?cmd=set&P30=pool.ntp.org&P64=auto HTTP/1.1
Accept: application/xml
Cookie: sid=<SID>

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

25.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P30dateTime.ntp.server.1Stringpool.ntp.orgNTP server address
P22309dateTime.ntp.enableAuthNumber ( 0 : No, 1 : Yes)1 : Yes, 0 : No0NTP authentication enable
P22310dateTime.ntp.symmetricKeysIDNumber ( 1 – 65535 )1-655351NTP symmetric key ID
P144dateTime.override.dhcp.allowOption42Number ( 0 : No, 1 : Yes)1 : Yes, 0 : No1Allow DHCP Option 42 to override NTP
P143dateTime.override.dhcp.allowOption2Number ( 0 : No, 1 : Yes)1 : Yes, 0 : No1Allow DHCP Option 2 to override Time Zone
P64dateTime.timezoneString / NumberSee Timezone Value List belowautoTime zone selection
P246dateTime.timezone.customStringMax 64 charsMTZ+6MDT+5,M4.1.0,M11.1.0Custom Time Zone rule
P102dateTime.format.dateNumber0 : yyyy-mm-dd, 1 : mm-dd-yyyy, 2 : dd-mm-yyyy, 3 : local format0Date format
P122dateTime.format.timeNumber0 : 12Hour, 1 : 24Hour1Time format

Timezone Value List

ValueTimezone NameValueTimezone NameValueTimezone Name
0Automatic1Eastern Time (no DST)2Arizona
3America (no DST)4Yerevan5Central Africa Time
6Central America7US Hawaiian Time8Moscow
9Russia10Singapore11Caracas
12San Juan13Greenland14Mid-Atlantic
15Cape Verdi Is16Edinburgh17Monrovia
18Casablanca19Morocco20Monrovia
21Liberia22Cairo23Istanbul
24Turkey25Kuwait26Baghdad
27Iraq28Nairobi29Kenya
30Abu Dhabi31UAE32Baku
33Azerbaijan34Islamabad35Pakistan
36Ekaterinburg37Russia38Karachi
39Pakistan40Tashkent41Uzbekistan
42Almaty43Kazakhstan44Astana
45Kazakhstan46Dhaka47Bangladesh
48Novosibirsk49Russia50Bangkok
51Thailand52Hanoi53Vietnam
54Krasnoyarsk55Russia56Beijing
57China58Taipei59Taiwan
60Kuala Lumpur61Malaysia62Irkutsk
63Russia64Tokyo65Japan
66Seoul67South Korea68Yakutsk
69Russia70Argentina71Jakarta
72Indonesia73Perth74Australia
75Sao Paulo76Brazil77Brisbane
78Australia79International Date Line West80Midway
81America82American Samoa83Guam
84Magadan85Russia86Solomon Islands
87New Caledonia88Nukualofa89Tonga
90Ulaanbaatar91Mongolia92Atlantic Time
93Central Time94Eastern Time95US Mountain Time
96Denver97America98Los Angeles
99America100Darwin101Australia
102Chennai103India104New Delhi
105India106Mumbai107India
108Kathmandu109Nepal110Rangoon
111Burma112US Alaska Time113Self-Defined Time Zone
114Atlantic Time (New Brunswick)115Paris116France
117Vienna118Austria119Warsaw
120Poland121Rome122Italy
123Madrid124Spain125Prague
126Czech127Berlin128Germany
129Budapest130Hungary131Amsterdam
132Netherlands133Brussels134Belgium
135Santiago136Chile137Adelaide
138Australia139Guadalajara140Mexico
141Mexico City142Mexico143Monterrey
144Mexico145Kyiv146Ukraine
147Beirut148Lebanon149Bucharest
150Romania151Jerusalem152Israel
153Helsinki154Finland155Athens
156Greece157Tallinn158Estonia
159Hobart160Australia161Sydney
162Australia163Melbourne164Australia
165Canberra166Australia167Fiji
168London169UK170Dublin
171Ireland172Tehran173Iran
174Chihuahua175Mexico176Mazatlan
177Mexico178Newfoundland Time179Auckland
180New Zealand181Wellington182New Zealand
183Baja California184Mexico185Azores
186Portugal187Lisbon188Portugal
189Casablanca

26. Holiday Settings

Configure holiday timetables on the GDS device. Up to 10 holiday schedules are supported.

26.1 Query Holiday Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=holiday

Request Example (XML):

GET /goform/config?cmd=get&type=holiday HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
...
</Configuration>

26.2 Set Holiday Settings (SET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P<P-value>=<value>

Request Example:

GET /goform/config?cmd=set&P15250=holiday1,20260101@20260101 HTTP/1.1
Cookie: sid=<session_id>

26.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P15301doorAccess.gdsManager.enableNumber1 : Yes, 0 : No0Enable overall door access scheduler manager.
P15250doorAccess.timetable.holiday1StringMax 1024 charsholiday1,Holiday 1 name and date range(s) (Format: name,startdate@enddate,startdate@enddate . ).
P15251doorAccess.timetable.holiday2StringMax 1024 charsholiday2,Holiday 2 name and date range(s).
P15252doorAccess.timetable.holiday3StringMax 1024 charsholiday3,Holiday 3 name and date range(s).
P15253doorAccess.timetable.holiday4StringMax 1024 charsholiday4,Holiday 4 name and date range(s).
P15254doorAccess.timetable.holiday5StringMax 1024 charsholiday5,Holiday 5 name and date range(s).
P15255doorAccess.timetable.holiday6StringMax 1024 charsholiday6,Holiday 6 name and date range(s).
P15256doorAccess.timetable.holiday7StringMax 1024 charsholiday7,Holiday 7 name and date range(s).
P15257doorAccess.timetable.holiday8StringMax 1024 charsholiday8,Holiday 8 name and date range(s).
P15258doorAccess.timetable.holiday9StringMax 1024 charsholiday9,Holiday 9 name and date range(s).
P15259doorAccess.timetable.holiday10StringMax 1024 charsholiday10,Holiday 10 name and date range(s).

27. Schedule Settings (door_schedule/alarm_schedule)

Configure weekly timetables on the GDS device. Up to 50 schedules are supported. Query type door_schedule and alarm_schedule share the same set of timetables and P-values (timetables are unified across all GDS functions).

27.1 Query Schedule Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=door_schedule or cmd=get&type=alarm_schedule

Request Example (XML):

GET /goform/config?cmd=get&type=door_schedule HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
...
</Configuration>

28. Security & Access Settings

Configure SSH access, web access ports and modes, session timeout, user privilege access, and server certificate validation.

28.1 Query Access Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=security

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P276>0</P276>
<P27006>22</P27006>
<P22120>80</P22120>
<P22121>443</P22121>
<P1650>0</P1650>
<P28116>15</P28116>
<P8469>0</P8469>
<P8463>1</P8463>
</Configuration>

28.2 Set Access Settings (SET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P28116=30

Request Example (XML):

GET /goform/config?cmd=set&P28116=30 HTTP/1.1Cookie: sid=<session_id>

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

28.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P276security.sshNumber0 : Yes, 1 : No0SSH Access: 0 : Enable, 1 : Disable.
P27006security.ssh.portNumber1-6553522SSH Port. Range: 1 – 65535.
P22120network.web.port.httpNumber80-6550080Web HTTP Port. Range: 1 – 65535.
P22121network.web.port.httpsNumber80-65500443Web HTTPS Port. Range: 1 – 65535.
P1650security.webAccessModeNumber0 : HTTPS, 1 : HTTP, 2 : Disabled, 3 : Both HTTP and HTTPS0Web Access Mode: 0 : HTTPS, 1 : HTTP, 2 : Disable.
P28116security.webAccess.session.timeoutNumber1-6015Session Timeout (Minutes). Range: 1 – 60.
P8469security.webAccess.user.enableNumber1 : Yes, 0 : No0Enable User privilege access (Web): 0 : No, 1 : Yes.
P8463security.validate.serverCertificateNumber1 : Yes, 0 : No1Validate Server Certificate: 0 : No, 1 : Yes.

29.Syslog or Debug Settings

Configure system logging (Syslog) server, log levels, protocol, SIP logging flags, and keyword filtering.

29.1 Query Syslog/Debug Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=debug

Request Example (XML):

GET /goform/config?cmd=get&type=debug HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P1387>0</P1387>
<P207>192.168.124.61</P207>
<P208>1</P208>
<P22129>WEB</P22129>
<P8402>0</P8402>
</Configuration>

29.2 Set Syslog/Debug Settings (SET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P208=2

Request Example (XML):

GET /goform/config?cmd=set&P208=2 HTTP/1.1
Cookie: sid=<session_id>
Content-Type: application/x-www-form-urlencoded

P208=2

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

29.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P1387maintain.syslog.sendSipLogNumber1 : Yes, 0 : No0Send SIP Log: 0 : No, 1 : Yes.
P207maintain.syslog.serverStringSyslog Server address (IP or domain name).
P208maintain.syslog.levelNumber0 : None, 1 : Debug, 2 : Info, 3 : Warning, 4 : Error1Syslog Level: 0 : NONE, 1 : DEBUG, 2 : INFO, 3 : WARNING, 4 : ERROR.
P22129maintain.syslog.keywordFilteringStringMax 256 charsKeyword filtering for system logging.
P8402maintain.syslog.protocolNumber0 : UDP, 1 : SSL/TLS0Syslog Protocol: 0 : UDP, 1 : TCP.

30. Reboot & Reset

Trigger a system reboot or trigger a factory reset.

30.1 Reboot Device (reboot)

Triggers a device reboot. Admin and User role privileges are allowed.

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=reboot

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<body>savereboot</body>
</Configuration>

30.2 Factory Reset Device

Triggers a factory reset on the device. Administrator role privileges are strictly required.

Note

This command requires Administrator role privilege level ( RoleAdmin ). If an unauthorized role attempts this action, the server will return an error code GDS_RSP_READ_ONLY (ResCode 24 ), and the response body will contain needadmin. Note that the request’s session ID ( sid ) is validated against active logged-in sessions to determine the authority level.

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=reset

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<body>reset</body>
</Configuration>

31.Packet Capture Settings

Configure packet capture options on the device.

31.1 Query Packet Capture Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=capture

Request Example (XML):

GET /goform/config?cmd=get&type=capture HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P6007>1</P6007>
<P22419>0</P22419>
</Configuration>

31.2 Set Packet Capture Settings (SET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P6007=1&P22419=0

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

31.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P6007maintain.packetCapture.includeRtpNumber1 : Yes, 0 : No0Include RTP: 0 : No, 1 : Yes.
P22419maintain.packetCapture.withSecretKeyInformationNumber1 : Yes, 0 : No0Capture Secret Key Info: 0 : No, 1 : Yes.

31.4 Start Packet Capture (START)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=start&type=capture&method=0&rtp=1&ssl=1

Request Example (XML):

GET /goform/config?cmd=start&type=capture&method=0&rtp=1&ssl=1 HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<body>flash</body>
</Configuration>

31.5 Stop Packet Capture (STOP)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=stop&type=capture

Request Example (XML):

GET /goform/config?cmd=stop&type=capture HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<body>stop</body>
</Configuration>

31.6 Download Packet Capture (EXPORT)

Retrieve the captured packet files from the device as a binary tarball archive ( captures.tar ).

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=export&type=capture

Request Example:

GET /goform/config?cmd=export&type=capture HTTP/1.1
Cookie: sid=<session_id>

Response Example (Success – Binary File Transfer):

Returns the binary content of the captures.tar file with the Content-Type: application/octet-stream header.

Response Example (Error – Capture Is Still Running):

If the capture process is still running, the request will fail with HTTP status code 503 Service Unavailable.

31.7 Delete Packet Capture Files (DEL)

Clear all captured packet files stored on the device.

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=del&type=capture

Request Example (XML):

GET /goform/config?cmd=del&type=capture HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<body>true</body>
</Configuration>

Response Example (Error – Capture Is Still Running):

If the capture process is still running, the deletion will fail and return a Busy response:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>23</ResCode>
<RetMsg>Busy</RetMsg>
</Configuration>

32.Upgrade Settings

Configure firmware upgrade, provisioning, configuration file servers, DHCP override options, and advanced security settings.

Note

Credential/password parameters ( P6769 , P1359 , P1361 ) are SET-only (write-only). They cannot be retrieved via GET requests to prevent exposing administrative credentials.

32.1 Query Upgrade Settings (GET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=get&type=upgrade

Request Example (XML):

GET /goform/config?cmd=get&type=upgrade HTTP/1.1
Cookie: sid=<session_id>
Accept: application/xml

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
<P6767>2</P6767>
<P192>fm.grandstream.com/gs</P192>
<P6768>myuser</P6768>
<P232></P232>
<P233></P233>
<P212>2</P212>
<P237>fm.grandstream.com/gs</P237>
<P1360>myuser</P1360>
<P234></P234>
<P235></P235>
<P240>0</P240>
<P194>0</P194>
<P193>10080</P193>
<P286>1</P286>
<P285>1</P285>
<P8459>-1</P8459>
<P8458>0</P8458>
<P238>0</P238>
<P145>1</P145>
<P1411>0</P1411>
<P8337>1</P8337>
<P22053>0</P22053>
<P8501>cfg$mac,cfg$mac.xml,cfg$product.xml,cfg.xml</P8501>
<P8467>0</P8467>
<P1414>1</P1414>
<P20713>0</P20713>
<P4428>0</P4428>
<P22030>0</P22030>
<P7070>1</P7070>
</Configuration>

32.2 Set Upgrade Settings (SET)

Endpoint: /goform/config

Method: GET

Query Parameters: cmd=set&P192=fm.grandstream.com/gs&P1361=mynewpassword

Response Example (XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

32.3 Field Reference Table

P-valueAlias NameTypeOptions / RangeDefaultDescription
P6767provisioning.firmware.protocolNumber0 : TFTP, 1 : HTTP, 2 : HTTPS, 3 : FTP, 4 : FTPS2Firmware Upgrade Protocol: 0 : TFTP, 1 : HTTP, 2 : HTTPS, 3 : FTP, 4 : FTPS.
P192provisioning.firmware.serverPathStringMax 512 charsfm.grandstream.com/gsFirmware Server Path.
P6768provisioning.firmware.usernameStringMax 256 chars“”Firmware HTTP/FTP/TFTP Server Username.
P6769provisioning.firmware.passwordStringMax 256 chars“”Firmware HTTP/FTP/TFTP Server Password. (SET only)
P232provisioning.firmware.filePrefixStringMax 512 chars“”Firmware File Prefix.
P233provisioning.firmware.filePostfixStringMax 512 chars“”Firmware File Postfix.
P212provisioning.config.protocolNumber0 : TFTP, 1 : HTTP, 2 : HTTPS, 3 : FTP, 4 : FTPS2Config Upgrade Protocol: 0 : TFTP, 1 : HTTP, 2 : HTTPS, 3 : FTP, 4 : FTPS.
P237provisioning.config.serverPathStringMax 512 charsfm.grandstream.com/gsConfig Server Path.
P1360provisioning.config.usernameStringMax 512 chars“”Config HTTP/FTP/TFTP Server Username.
P1361provisioning.config.passwordStringMax 512 chars“”Config HTTP/FTP/TFTP Server Password. (SET only)
P234provisioning.config.filePrefixStringMax 512 chars“”Config File Prefix.
P235provisioning.config.filePostfixStringMax 512 chars“”Config File Postfix.
P240provisioning.config.authenticateFileNumber1 : Yes, 0 : No0Authenticate Config File: 0 : No, 1 : Yes.
P1359provisioning.config.filePasswordStringMax 512 chars“”Config XML File Password / Key. (SET only)
P194provisioning.auto.modeNumber0 : No, 1 : YesUpgradeMin, 2 : YesUpgradeHourOfDay, 3 : YesUpgradeDayOfWeek0Automatic Upgrade Mode: 0 : No, 1 : Yes, check daily; 2 : Yes, check weekly; 3 : Yes, check at period interval.
P193provisioning.auto.minuteNumber60-8640010080Check Interval in minutes (for mode 3).
P286provisioning.auto.dayNumber1Check Weekly Day: 0 : Sunday, 1 : Monday, 2 : Tuesday, 3 : Wednesday, 4 : Thursday, 5 : Friday, 6 : Saturday.
P285provisioning.auto.hourNumber0-231Check Hour of the day (0-23).
P8458provisioning.auto.randomTime.enableNumber1 : Yes, 0 : No0Random Time Autoprovision.
P8459provisioning.auto.randomTimeNumber-1Random time value.
P238provisioning.downloadDeviceConfigNumber0 : No, 1 : Yes0Download device configuration.
P145provisioning.configFileEncryptionNumber0 : No, 1 : Yes1Configuration file encryption.
P1411provisioning.configFileEncryptionTypeNumber0Configuration file encryption type.
P8337provisioning.configFileEncryptionModeNumber1Configuration file encryption mode.
P22053provisioning.configFileEncryptionKeyString0Configuration file encryption key.
P8501provisioning.configFileNamesStringMax 1024 charscfg$mac,cfg$mac.xml,cfg$product.xml,cfg.xmlConfiguration file names.
P8467provisioning.config.processAll.enableNumber1 : Yes, 0 : No0Process All Config Files: 0 : No, 1 : Yes.
P1414provisioning.3cxAutoProvisionNumber1 : Yes, 0 : No13CX Auto Provisioning: 0 : No, 1 : Yes.
P20713provisioning.alwaysAuthenticateBeforeChallengeNumber1 : Yes, 0 : No0Always Authenticate Before Challenge: 0 : No, 1 : Yes.
P4428sip.notify.challengeNumber0 : Yes, 1 : No0SIP NOTIFY Challenge: 0 : No, 1 : Yes.
P22030provisioning.validateCertificationChain.enableNumber1 : Yes, 0 : No0Validate Certification Chain: 0 : No, 1 : Yes.
P7070services.autoLocation.enableNumber1 : Yes, 0 : No1Services Auto Location: 0 : No, 1 : Yes.

32.4 Firmware Available Version Check (fw_upgrade)

Note

This command requires Administrator role privilege level ( RoleAdmin ). If an unauthorized role attempts this action, the server will return an error code GDS_RSP_READ_ONLY (ResCode 24 ) and the response body will contain needadmin . Note that the request’s session ID ( sid ) is validated against active logged-in sessions to determine the authority level.

Endpoint: /goform/config

Method: GET

33. Configuration Import Export

The document provides configuration import functionality through the HTTP API.

Configuration Import

Endpoint: /goform/config

Method: POST

Query Parameters:

ParameterTypeRequiredDefaultDescription
cmdStringYesFixed value: upload
typeStringYesFixed value: 1 (indicates system configuration import)
formatStringNoxmlFormat of status response:
xml : XML status response
json : JSON status response

Request Payload: Multipart form-data payload with the configuration file attached under the field name file.

Request Example (XML response format):

POST /goform/config?cmd=upload&type=1&format=xml HTTP/1.1
Cookie: sid=<session_id>
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="config.txt"
Content-Type: text/plain

P2=admin
P250=1

------WebKitFormBoundary--

Response Example (Success – XML):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>0</ResCode>
<RetMsg>OK</RetMsg>
</Configuration>

Response Example (Busy – XML):

If the device is currently applying another configuration import, the server will return a Busy response:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<ResCode>23</ResCode>
<RetMsg>Busy</RetMsg>
</Configuration>

34. SNMP Settings

Unsupported.

35. System Health Alert

Unsupported.

Supported Devices

ModelMinimum Required Firmware
GDS37251.0.3.9+
GDS37261.0.3.9+
GDS37271.0.3.9+

Change Log

This section documents significant changes from previous versions of the user manual for HTTP API features on the GDS372x. Only major new features or major document updates are listed here. Minor updates for corrections or editing are not documented here.

Version 1.1

  • This is the initial version.

Was this article helpful?

Need Support?
Can’t find the answer you’re looking for? Don’t worry we’re here to help!
Contact Support