cURL examples to exercise the RESTful API interface

These examples show how to exercise each of the endpoints of the RESTful API. The examples were verified under Ubuntu Linux but should be, with slight modification, able to be used under other OSs such as MS Windows.

See the appendix for more information

Endpoint Examples

Notes

In these examples, the test device is test.summit.com. Your URL will be local to your network. The output of the files will be piped to the jq app which is used to pretty-print the json output. It is available for a variety of OSs.

Anatomy of an example curl command:

curl -s --location --request GET https://test.summit.com/endpoint --header "Content-Type: application/json" -b cookie --insecure | jq
  • curl - the curl executable binary
  • -s - enables the silent option in order to not show curl progress statistics
  • –location - follow redirects - allows the restful API to force the caller to https if they did not use it
  • –request GET https://test.summit.com/awm - the command (GET/PUT/POST/DELETE) for the endpoint (http://URL/endpoint)
  • –header “Content-Type: application/json” - lets the server know we are expecting JSON return
  • -c cookie - save the authentication key in a file called ‘cookie’
  • -b cookie - user the existing cookie file
  • –insecure - do not user certificates to authenticate (SSL/TSL is being used so nothing is in clear text)
  • | jq - output piped to the jq application

accesspoints

Get cached WiFi access point list

curl -s --location --request GET https://test.summit.com/accesspoints -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "count": 3,
  "accesspoints": [
    {
      "SSID": "",
      "HwAddress": "xx:xx:xx:xx:xx:xx",
      "Strength": 72,
      "MaxBitrate": 540000,
      "Frequency": 5785,
      "Flags": 1,
      "WpaFlags": 0,
      "RsnFlags": 392,
      "LastSeen": 98509,
      "Security": "WPA2 PSK",
      "Keymgmt": "wpa-psk"
    },
    {
      "SSID": "BrownBear",
      "HwAddress": "xx:xx:xx:xx:xx:xx",
      "Strength": 22,
      "MaxBitrate": 130000,
      "Frequency": 2432,
      "Flags": 3,
      "WpaFlags": 332,
      "RsnFlags": 332,
      "LastSeen": 98507,
      "Security": "WPA1 WPA2 PSK",
      "Keymgmt": "wpa-psk"
    },
    {
      "SSID": "ATT5Ift7kY",
      "HwAddress": "xx:xx:xx:xx:xx:xx",
      "Strength": 14,
      "MaxBitrate": 270000,
      "Frequency": 2437,
      "Flags": 3,
      "WpaFlags": 0,
      "RsnFlags": 392,
      "LastSeen": 98507,
      "Security": "WPA2 PSK",
      "Keymgmt": "wpa-psk"
    }
  ]
}

Initiate a WiFi scan

curl -s --header 'Content-Type: application/json' --request PUT https://test.summit.com/accesspoints -b cookie --insecure --data '' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "Scan requested"
}

awm

Set awm enable/disable

curl -s --location --request PUT https://test.summit.com/awm --header 'Content-Type: application/json' -b cookie --insecure --data '{"geolocation_scanning_enable":0}' | jq

returned JSON:

{
  "SDCERR": 1,
  "InfoMsg": "AWM's geolocation scanning configuration only supported in LITE mode",
  "geolocation_scanning_enable": 1
}

Get awm current setting

curl -s --location --request GET https://test.summit.com/awm --header "Content-Type: application/json" -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "AWM configuration only supported in LITE mode",
  "geolocation_scanning_enable": 1
}

connection

Activate/deactivate

activate
curl -s --header 'Content-Type: application/json' --request PUT https://test.summit.com/connection -b cookie --insecure --data '{
      "uuid": "f93578c1-d309-4103-8554-fc1982ccda02",
      "activate" : 1
  }' | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "Connection Activated"
}
deactivate
curl -s --header 'Content-Type: application/json' --request PUT https://test.summit.com/connection -b cookie --insecure --data '{
      "uuid": "f93578c1-d309-4103-8554-fc1982ccda02",
      "activate" : 0
  }' | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "Connection Deactivated"
}

Get connection details

curl -s --location --request GET https://test.summit.com/connection?uuid=f93578c1-d309-4103-8554-fc1982ccda02 -b cookie --insecure | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "connection": {
    "connection": {
      "id": "static-usb0",
      "interface-name": "usb0",
      "permissions": [],
      "timestamp": 1639192592,
      "type": "802-3-ethernet",
      "uuid": "f93578c1-d309-4103-8554-fc1982ccda02"
    },
    "802-3-ethernet": {
      "auto-negotiate": false,
      "mac-address-blacklist": [],
      "s390-options": {}
    },
    "ipv4": {
      "address-data": [
        {
          "address": "10.10.3.1",
          "prefix": 24
        }
      ],
      "addresses": [
        [
          "10.10.3.1",
          24,
          "0.0.0.0"
        ]
      ],
      "dns": [],
      "dns-search": [],
      "method": "shared",
      "route-data": [],
      "routes": []
    },
    "ipv6": {
      "address-data": [],
      "addresses": [],
      "dns": [],
      "dns-search": [],
      "method": "auto",
      "route-data": [],
      "routes": []
    },
    "proxy": {}
  }
}

Delete a connection

curl -s --request DELETE https://test.summit.com/connection?uuid=57df6dec-04a6-4f6f-9fe9-0fc79740717f -b cookie --insecure | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

Ethernet Configuration

curl -s --header 'Content-Type: application/json' --request POST https://test.summit.com/connection -b cookie --insecure --data '{
       "connection": {
      "id": "new-eth1",
      "interface-name": "eth1",
      "type": "802-3-ethernet",
      "zone": "external"
    },
    "ipv4": {
      "method": "auto"
    }
  }'

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "connection new-eth1 created"
}

GSM Configuration

todo

WiFi Configuration

Multiple examples of various authentication methods:

EAP-TLS with CA cert
curl -s --header 'Content-Type: application/json' --request POST https://test.summit.com/connection -b cookie --insecure --data '{
        "connection": {
            "autoconnect": 0,
            "id": "EAP_TLS_CA_CERT",
            "interface-name": "wlan0",
            "type": "802-11-wireless",
            "uuid": "",
            "zone": "trusted"
        },
        "802-11-wireless": {
            "acs": 0,
            "frequency-dfs": 1,
            "hidden": 0,
            "mode": "infrastructure",
            "ssid": "EAP_TLS_CA_CERT",
            "bgscan": "laird:5:-64:30"
        },
        "802-11-wireless-security": {
            "key-mgmt": "wpa-eap",
            "proto": "rsn",
            "pairwise": "ccmp",
            "proactive-key-caching": 1
        },
        "802-1x": {
            "auth-timeout": 0,
            "eap": "tls",
            "private-key-password": "user1",
            "private-key": "user1.pfx",
            "identity": "user1",
            "password": "user1",
            "client-cert": "None",
            "ca-cert": "SystestCA.cer"
        }
    }' | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "connection EAP_TLS_CA_CERT created"
}
EAP-TLS no CA cert
curl -s --header 'Content-Type: application/json' --request POST https://test.summit.com/connection -b cookie --insecure --data '{
        "connection": {
            "autoconnect": 0,
            "id": "EAP_TLS_NO_CA_CERT",
            "interface-name": "wlan0",
            "type": "802-11-wireless",
            "uuid": "",
            "zone": "trusted"
        },
        "802-11-wireless": {
            "acs": 0,
            "frequency-dfs": 1,
            "hidden": 0,
            "mode": "infrastructure",
            "ssid": "EAP_TLS_NO_CA_CERT",
            "bgscan": "laird:5:-64:30"
        },
        "802-11-wireless-security": {
            "key-mgmt": "wpa-eap",
            "proto": "rsn",
            "pairwise": "ccmp",
            "proactive-key-caching": 1
        },
        "802-1x": {
            "auth-timeout": 0,
            "eap": "tls",
            "private-key-password": "user1",
            "private-key": "user1.pfx",
            "identity": "user1",
            "password": "user1",
            "client-cert": "None"
        }
    }' | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "connection EAP_TLS_NO_CA_CERT created"
}
EAP-TTLS with CA cert
curl -s --header 'Content-Type: application/json' --request POST https://test.summit.com/connection -b cookie --insecure --data '{
        "connection": {
            "autoconnect": 0,
            "id": "EAP_TTLS_CA_CERT",
            "interface-name": "wlan0",
            "type": "802-11-wireless",
            "uuid": "",
            "zone": "trusted"
        },
        "802-11-wireless": {
            "mode": "infrastructure",
            "ssid": "EAP_TTLS_CA_CERT"
        },
        "802-11-wireless-security": {
            "key-mgmt": "wpa-eap",
            "proto": "rsn",
            "pairwise": "ccmp",
            "proactive-key-caching": 1
        },
        "802-1x": {
            "auth-timeout": 0,
            "eap": "ttls",
            "identity": "user1",
            "password": "user1",
            "anonymous-identity": "anonNAME",
            "phase2-autheap": "mschapv2",
            "phase2-autheap": "md5",
            "phase2-autheap": "gtc",
            "ca-cert": "SystestCA.cer",
            "client-cert": "None"
        }
    }' | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "connection EAP_TTLS_CA_CERT created"
}
EAP_TTLS no CA cert
curl -s --header 'Content-Type: application/json' --request POST https://test.summit.com/connection -b cookie --insecure --data '{
        "connection": {
            "autoconnect": 0,
            "id": "EAP_TTLS_NO_CA_CERT",
            "interface-name": "wlan0",
            "type": "802-11-wireless",
            "uuid": "",
            "zone": "trusted"
        },
        "802-11-wireless": {
            "mode": "infrastructure",
            "ssid": "EAP_TTLS_NO_CA_CERT"
        },
        "802-11-wireless-security": {
            "key-mgmt": "wpa-eap",
            "proto": "rsn",
            "pairwise": "ccmp",
            "proactive-key-caching": 1
        },
        "802-1x": {
            "auth-timeout": 0,
            "eap": "ttls",
            "identity": "user1",
            "password": "user1",
            "anonymous-identity": "anonNAME",
            "phase2-autheap": "mschapv2",
            "phase2-autheap": "md5",
            "phase2-autheap": "gtc",
            "client-cert": "None"
        }
    }' | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "connection EAP_TTLS_NO_CA_CERT created"
}
PEAP GTC with CA cert
curl -s --header 'Content-Type: application/json' --request POST https://test.summit.com/connection -b cookie --insecure --data '{
        "connection": {
            "autoconnect": 0,
            "id": "PEAP_GTC_CA_CERT",
            "interface-name": "wlan0",
            "type": "802-11-wireless",
            "uuid": "",
            "zone": "trusted"
        },
        "802-11-wireless": {
            "mode": "infrastructure",
            "ssid": "PEAP_GTC_CA_CERT"
        },
        "802-11-wireless-security": {
            "key-mgmt": "wpa-eap",
            "proto": "rsn",
            "pairwise": "ccmp",
            "proactive-key-caching": 1
        },
        "802-1x": {
            "eap": "peap",
            "identity": "user1",
            "password": "user1",
            "phase2-autheap": "gtc",
            "ca-cert": "SystestCA.cer",
            "client-cert": "None"
        }
    }' | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "connection PEAP_GTC_CA_CERT created"
}
PEAP GTC with out CA cert
curl -s --header 'Content-Type: application/json' --request POST https://test.summit.com/connection -b cookie --insecure --data '{
        "connection": {
            "autoconnect": 0,
            "id": "PEAP_GTC_NO_CA_CERT",
            "interface-name": "wlan0",
            "type": "802-11-wireless",
            "uuid": "",
            "zone": "trusted"
        },
        "802-11-wireless": {
            "mode": "infrastructure",
            "ssid": "PEAP_GTC_NO_CA_CERT"
        },
        "802-11-wireless-security": {
            "key-mgmt": "wpa-eap",
            "proto": "rsn",
            "pairwise": "ccmp",
            "proactive-key-caching": 1
        },
        "802-1x": {
            "eap": "peap",
            "identity": "user1",
            "password": "user1",
            "phase2-autheap": "gtc",
            "client-cert": "None"
        }
    }' | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "connection PEAP_GTC_NO_CA_CERT created"
}
PEAP-MSCHAPv2 with CA-cert
curl -s --header 'Content-Type: application/json' --request POST https://test.summit.com/connection -b cookie --insecure --data '{
        "connection": {
            "autoconnect": 0,
            "id": "PEAP_MSCHAPv2_CA_CERT",
            "interface-name": "wlan0",
            "type": "802-11-wireless",
            "uuid": "",
            "zone": "trusted"
        },
        "802-11-wireless": {
            "mode": "infrastructure",
            "ssid": "PEAP_MSCHAPv2_CA_CERT"
        },
        "802-11-wireless-security": {
            "key-mgmt": "wpa-eap",
            "proto": "rsn",
            "pairwise": "ccmp",
            "proactive-key-caching": 1
        },
        "802-1x": {
            "eap": "peap",
            "identity": "user1",
            "password": "user1",
            "phase2-autheap": "mschapv2",
            "ca-cert": "SystestCA.cer",
            "client-cert": "None"
        }
    }' | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "connection PEAP_MSCHAPv2_CA_CERT created"
}
PEAP-MSCHAPv2 no CA cert
curl -s --header 'Content-Type: application/json' --request POST https://test.summit.com/connection -b cookie --insecure --data '{
        "connection": {
            "autoconnect": 0,
            "id": "PEAP_MSCHAPv2_NO_CA_CERT",
            "interface-name": "wlan0",
            "type": "802-11-wireless",
            "uuid": "",
            "zone": "trusted"
        },
        "802-11-wireless": {
            "mode": "infrastructure",
            "ssid": "PEAP_MSCHAPv2_NO_CA_CERT"
        },
        "802-11-wireless-security": {
            "key-mgmt": "wpa-eap",
            "proto": "rsn",
            "pairwise": "ccmp",
            "proactive-key-caching": 1
        },
        "802-1x": {
            "eap": "peap",
            "identity": "user1",
            "password": "user1",
            "phase2-autheap": "mschapv2",
            "client-cert": "None"
        }
    }' | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "connection PEAP_MSCHAPv2_NO_CA_CERT created"
}

Bridge master Configuration

curl -s --header 'Content-Type: application/json' --request POST https://test.summit.com/connection -b cookie --insecure --data '{
        "connection": {
      "id": "br-master-new",
      "interface-name": "br0",
      "type": "bridge",
      "zone": "internal"
    },
    "bridge": {
      "interface-name": "br0"
    },
    "ipv4": {
      "addresses": [
        [
          "10.0.0.100",
          24,
          "0.0.0.0"
        ]
      ],
      "method": "shared"
    } 
  }' | jq

returnted JSON:

{
  "SDCERR": 0,
  "InfoMsg": "connection br-master-new created"
}

connections

Get all connection profiles

curl -s --header 'Content-Type: application/json' --request GET https://test.summit.com/connections -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "count": 6,
  "connections": {
    "03c6798b-d1e8-3155-8aac-efdd8f09180a": {
      "id": "br-slave-eth0",
      "activated": 1
    },
    "a5450ddc-ce22-3172-a295-e01d1354cc88": {
      "id": "br-slave-usb0",
      "activated": 0
    },
    "51afa7a0-27af-418e-ab47-4451c28e486b": {
      "id": "br-master",
      "activated": 1
    },
    "6db04e98-4f3a-3e55-93e9-d6b8140765ce": {
      "id": "eth1",
      "activated": 1
    },
    "bd89b41c-5688-3e79-8353-f7391d8e5ce9": {
      "id": "br-slave-wlan0",
      "activated": 1,
      "type": "ap"
    },
    "f93578c1-d309-4103-8554-fc1982ccda02": {
      "id": "static-usb0",
      "activated": 0
    }
  }
}

datetime

Get date, time, and timezones

curl -s --location --request GET https://test.summit.com/datetime --header

'Content-Type: application/json' -b cookie --insecure | jq
{
  "SDCERR": 0,
  "InfoMsg": "",
  "zones": [
    "Africa/Abidjan",
    "Africa/Accra",
    "Africa/Addis_Ababa",
    "Africa/Algiers",
    "Africa/Asmara",
    "Africa/Bamako",
    "Africa/Bangui",
    "Africa/Banjul",
    "Africa/Bissau",
    "Africa/Blantyre",
    "Africa/Brazzaville",
    "Africa/Bujumbura",
    "Africa/Cairo",
    "Africa/Casablanca",
    "Africa/Ceuta",
    "Africa/Conakry",
    "Africa/Dakar",
    "Africa/Dar_es_Salaam",
    "Africa/Djibouti",
    "Africa/Douala",
    "Africa/El_Aaiun",
    "Africa/Freetown",
    "Africa/Gaborone",
    "Africa/Harare",
    "Africa/Johannesburg",
    "Africa/Juba",
    "Africa/Kampala",
    "Africa/Khartoum",
    "Africa/Kigali",
    "Africa/Kinshasa",
    "Africa/Lagos",
    "Africa/Libreville",
    "Africa/Lome",
    "Africa/Luanda",
    "Africa/Lubumbashi",
    "Africa/Lusaka",
    "Africa/Malabo",
    "Africa/Maputo",
    "Africa/Maseru",
    "Africa/Mbabane",
    "Africa/Mogadishu",
    "Africa/Monrovia",
    "Africa/Nairobi",
    "Africa/Ndjamena",
    "Africa/Niamey",
    "Africa/Nouakchott",
    "Africa/Ouagadougou",
    "Africa/Porto-Novo",
    "Africa/Sao_Tome",
    "Africa/Tripoli",
    "Africa/Tunis",
    "Africa/Windhoek",
    "America/Adak",
    "America/Anchorage",
    "America/Anguilla",
    "America/Antigua",
    "America/Araguaina",
    "America/Argentina/Buenos_Aires",
    "America/Argentina/Catamarca",
    "America/Argentina/Cordoba",
    "America/Argentina/Jujuy",
    "America/Argentina/La_Rioja",
    "America/Argentina/Mendoza",
    "America/Argentina/Rio_Gallegos",
    "America/Argentina/Salta",
    "America/Argentina/San_Juan",
    "America/Argentina/San_Luis",
    "America/Argentina/Tucuman",
    "America/Argentina/Ushuaia",
    "America/Aruba",
    "America/Asuncion",
    "America/Atikokan",
    "America/Bahia",
    "America/Bahia_Banderas",
    "America/Barbados",
    "America/Belem",
    "America/Belize",
    "America/Blanc-Sablon",
    "America/Boa_Vista",
    "America/Bogota",
    "America/Boise",
    "America/Cambridge_Bay",
    "America/Campo_Grande",
    "America/Cancun",
    "America/Caracas",
    "America/Cayenne",
    "America/Cayman",
    "America/Chicago",
    "America/Chihuahua",
    "America/Costa_Rica",
    "America/Creston",
    "America/Cuiaba",
    "America/Curacao",
    "America/Danmarkshavn",
    "America/Dawson",
    "America/Dawson_Creek",
    "America/Denver",
    "America/Detroit",
    "America/Dominica",
    "America/Edmonton",
    "America/Eirunepe",
    "America/El_Salvador",
    "America/Fort_Nelson",
    "America/Fortaleza",
    "America/Glace_Bay",
    "America/Godthab",
    "America/Goose_Bay",
    "America/Grand_Turk",
    "America/Grenada",
    "America/Guadeloupe",
    "America/Guatemala",
    "America/Guayaquil",
    "America/Guyana",
    "America/Halifax",
    "America/Havana",
    "America/Hermosillo",
    "America/Indiana/Indianapolis",
    "America/Indiana/Knox",
    "America/Indiana/Marengo",
    "America/Indiana/Petersburg",
    "America/Indiana/Tell_City",
    "America/Indiana/Vevay",
    "America/Indiana/Vincennes",
    "America/Indiana/Winamac",
    "America/Inuvik",
    "America/Iqaluit",
    "America/Jamaica",
    "America/Juneau",
    "America/Kentucky/Louisville",
    "America/Kentucky/Monticello",
    "America/Kralendijk",
    "America/La_Paz",
    "America/Lima",
    "America/Los_Angeles",
    "America/Lower_Princes",
    "America/Maceio",
    "America/Managua",
    "America/Manaus",
    "America/Marigot",
    "America/Martinique",
    "America/Matamoros",
    "America/Mazatlan",
    "America/Menominee",
    "America/Merida",
    "America/Metlakatla",
    "America/Mexico_City",
    "America/Miquelon",
    "America/Moncton",
    "America/Monterrey",
    "America/Montevideo",
    "America/Montserrat",
    "America/Nassau",
    "America/New_York",
    "America/Nipigon",
    "America/Nome",
    "America/Noronha",
    "America/North_Dakota/Beulah",
    "America/North_Dakota/Center",
    "America/North_Dakota/New_Salem",
    "America/Ojinaga",
    "America/Panama",
    "America/Pangnirtung",
    "America/Paramaribo",
    "America/Phoenix",
    "America/Port-au-Prince",
    "America/Port_of_Spain",
    "America/Porto_Velho",
    "America/Puerto_Rico",
    "America/Punta_Arenas",
    "America/Rainy_River",
    "America/Rankin_Inlet",
    "America/Recife",
    "America/Regina",
    "America/Resolute",
    "America/Rio_Branco",
    "America/Santarem",
    "America/Santiago",
    "America/Santo_Domingo",
    "America/Sao_Paulo",
    "America/Scoresbysund",
    "America/Sitka",
    "America/St_Barthelemy",
    "America/St_Johns",
    "America/St_Kitts",
    "America/St_Lucia",
    "America/St_Thomas",
    "America/St_Vincent",
    "America/Swift_Current",
    "America/Tegucigalpa",
    "America/Thule",
    "America/Thunder_Bay",
    "America/Tijuana",
    "America/Toronto",
    "America/Tortola",
    "America/Vancouver",
    "America/Whitehorse",
    "America/Winnipeg",
    "America/Yakutat",
    "America/Yellowknife",
    "Antarctica/Casey",
    "Antarctica/Davis",
    "Antarctica/DumontDUrville",
    "Antarctica/Macquarie",
    "Antarctica/Mawson",
    "Antarctica/McMurdo",
    "Antarctica/Palmer",
    "Antarctica/Rothera",
    "Antarctica/Syowa",
    "Antarctica/Troll",
    "Antarctica/Vostok",
    "Arctic/Longyearbyen",
    "Asia/Aden",
    "Asia/Almaty",
    "Asia/Amman",
    "Asia/Anadyr",
    "Asia/Aqtau",
    "Asia/Aqtobe",
    "Asia/Ashgabat",
    "Asia/Atyrau",
    "Asia/Baghdad",
    "Asia/Bahrain",
    "Asia/Baku",
    "Asia/Bangkok",
    "Asia/Barnaul",
    "Asia/Beirut",
    "Asia/Bishkek",
    "Asia/Brunei",
    "Asia/Chita",
    "Asia/Choibalsan",
    "Asia/Colombo",
    "Asia/Damascus",
    "Asia/Dhaka",
    "Asia/Dili",
    "Asia/Dubai",
    "Asia/Dushanbe",
    "Asia/Famagusta",
    "Asia/Gaza",
    "Asia/Hebron",
    "Asia/Ho_Chi_Minh",
    "Asia/Hong_Kong",
    "Asia/Hovd",
    "Asia/Irkutsk",
    "Asia/Jakarta",
    "Asia/Jayapura",
    "Asia/Jerusalem",
    "Asia/Kabul",
    "Asia/Kamchatka",
    "Asia/Karachi",
    "Asia/Kathmandu",
    "Asia/Khandyga",
    "Asia/Kolkata",
    "Asia/Krasnoyarsk",
    "Asia/Kuala_Lumpur",
    "Asia/Kuching",
    "Asia/Kuwait",
    "Asia/Macau",
    "Asia/Magadan",
    "Asia/Makassar",
    "Asia/Manila",
    "Asia/Muscat",
    "Asia/Nicosia",
    "Asia/Novokuznetsk",
    "Asia/Novosibirsk",
    "Asia/Omsk",
    "Asia/Oral",
    "Asia/Phnom_Penh",
    "Asia/Pontianak",
    "Asia/Pyongyang",
    "Asia/Qatar",
    "Asia/Qyzylorda",
    "Asia/Riyadh",
    "Asia/Sakhalin",
    "Asia/Samarkand",
    "Asia/Seoul",
    "Asia/Shanghai",
    "Asia/Singapore",
    "Asia/Srednekolymsk",
    "Asia/Taipei",
    "Asia/Tashkent",
    "Asia/Tbilisi",
    "Asia/Tehran",
    "Asia/Thimphu",
    "Asia/Tokyo",
    "Asia/Tomsk",
    "Asia/Ulaanbaatar",
    "Asia/Urumqi",
    "Asia/Ust-Nera",
    "Asia/Vientiane",
    "Asia/Vladivostok",
    "Asia/Yakutsk",
    "Asia/Yangon",
    "Asia/Yekaterinburg",
    "Asia/Yerevan",
    "Atlantic/Azores",
    "Atlantic/Bermuda",
    "Atlantic/Canary",
    "Atlantic/Cape_Verde",
    "Atlantic/Faroe",
    "Atlantic/Madeira",
    "Atlantic/Reykjavik",
    "Atlantic/South_Georgia",
    "Atlantic/St_Helena",
    "Atlantic/Stanley",
    "Australia/Adelaide",
    "Australia/Brisbane",
    "Australia/Broken_Hill",
    "Australia/Currie",
    "Australia/Darwin",
    "Australia/Eucla",
    "Australia/Hobart",
    "Australia/Lindeman",
    "Australia/Lord_Howe",
    "Australia/Melbourne",
    "Australia/Perth",
    "Australia/Sydney",
    "Etc/GMT",
    "Etc/GMT+0",
    "Etc/GMT+1",
    "Etc/GMT+10",
    "Etc/GMT+11",
    "Etc/GMT+12",
    "Etc/GMT+2",
    "Etc/GMT+3",
    "Etc/GMT+4",
    "Etc/GMT+5",
    "Etc/GMT+6",
    "Etc/GMT+7",
    "Etc/GMT+8",
    "Etc/GMT+9",
    "Etc/GMT-0",
    "Etc/GMT-1",
    "Etc/GMT-10",
    "Etc/GMT-11",
    "Etc/GMT-12",
    "Etc/GMT-13",
    "Etc/GMT-14",
    "Etc/GMT-2",
    "Etc/GMT-3",
    "Etc/GMT-4",
    "Etc/GMT-5",
    "Etc/GMT-6",
    "Etc/GMT-7",
    "Etc/GMT-8",
    "Etc/GMT-9",
    "Etc/GMT0",
    "Etc/Greenwich",
    "Etc/UCT",
    "Etc/UTC",
    "Etc/Universal",
    "Etc/Zulu",
    "Europe/Amsterdam",
    "Europe/Andorra",
    "Europe/Astrakhan",
    "Europe/Athens",
    "Europe/Belgrade",
    "Europe/Berlin",
    "Europe/Bratislava",
    "Europe/Brussels",
    "Europe/Bucharest",
    "Europe/Budapest",
    "Europe/Busingen",
    "Europe/Chisinau",
    "Europe/Copenhagen",
    "Europe/Dublin",
    "Europe/Gibraltar",
    "Europe/Guernsey",
    "Europe/Helsinki",
    "Europe/Isle_of_Man",
    "Europe/Istanbul",
    "Europe/Jersey",
    "Europe/Kaliningrad",
    "Europe/Kiev",
    "Europe/Kirov",
    "Europe/Lisbon",
    "Europe/Ljubljana",
    "Europe/London",
    "Europe/Luxembourg",
    "Europe/Madrid",
    "Europe/Malta",
    "Europe/Mariehamn",
    "Europe/Minsk",
    "Europe/Monaco",
    "Europe/Moscow",
    "Europe/Oslo",
    "Europe/Paris",
    "Europe/Podgorica",
    "Europe/Prague",
    "Europe/Riga",
    "Europe/Rome",
    "Europe/Samara",
    "Europe/San_Marino",
    "Europe/Sarajevo",
    "Europe/Saratov",
    "Europe/Simferopol",
    "Europe/Skopje",
    "Europe/Sofia",
    "Europe/Stockholm",
    "Europe/Tallinn",
    "Europe/Tirane",
    "Europe/Ulyanovsk",
    "Europe/Uzhgorod",
    "Europe/Vaduz",
    "Europe/Vatican",
    "Europe/Vienna",
    "Europe/Vilnius",
    "Europe/Volgograd",
    "Europe/Warsaw",
    "Europe/Zagreb",
    "Europe/Zaporozhye",
    "Europe/Zurich",
    "Indian/Antananarivo",
    "Indian/Chagos",
    "Indian/Christmas",
    "Indian/Cocos",
    "Indian/Comoro",
    "Indian/Kerguelen",
    "Indian/Mahe",
    "Indian/Maldives",
    "Indian/Mauritius",
    "Indian/Mayotte",
    "Indian/Reunion",
    "Pacific/Apia",
    "Pacific/Auckland",
    "Pacific/Bougainville",
    "Pacific/Chatham",
    "Pacific/Chuuk",
    "Pacific/Easter",
    "Pacific/Efate",
    "Pacific/Enderbury",
    "Pacific/Fakaofo",
    "Pacific/Fiji",
    "Pacific/Funafuti",
    "Pacific/Galapagos",
    "Pacific/Gambier",
    "Pacific/Guadalcanal",
    "Pacific/Guam",
    "Pacific/Honolulu",
    "Pacific/Kiritimati",
    "Pacific/Kosrae",
    "Pacific/Kwajalein",
    "Pacific/Majuro",
    "Pacific/Marquesas",
    "Pacific/Midway",
    "Pacific/Nauru",
    "Pacific/Niue",
    "Pacific/Norfolk",
    "Pacific/Noumea",
    "Pacific/Pago_Pago",
    "Pacific/Palau",
    "Pacific/Pitcairn",
    "Pacific/Pohnpei",
    "Pacific/Port_Moresby",
    "Pacific/Rarotonga",
    "Pacific/Saipan",
    "Pacific/Tahiti",
    "Pacific/Tarawa",
    "Pacific/Tongatapu",
    "Pacific/Wake",
    "Pacific/Wallis"
  ],
  "zone": "America/New_York",
  "method": "manual",
  "time": "2021-12-09 11:25:26\n"
}

Set timezone.

curl -s --location --request PUT https://test.summit.com/datetime --header 'Content-Type: application/json' --data '{ "zone": "America/New_York" }' --insecure -b cookie | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "America/New_York",
  "time": "2021-12-09 11:32:23\n"
}

Set empty timezone

curl -s --location --request PUT https://test.summit.com/datetime --header 'Content-Type: application/json' --data '{ "zone": "" }' --insecure -b cookie | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "America/New_York",
  "time": "2021-12-09 11:35:10\n"
}

definitions

Definitions shared with front-end

curl -s --header 'Content-Type: application/json' --request GET https://test.summit.com/definitions -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "Definitions": {
    "SDCERR": {
      "SDCERR_SUCCESS": 0,
      "SDCERR_FAIL": 1,
      "SDCERR_USER_LOGGED": 2,
      "SDCERR_USER_BLOCKED": 3,
      "SDCERR_SESSION_CHECK_FAILED": 4,
      "SDCERR_FIRMWARE_UPDATING": 5
    },
    "PERMISSIONS": {
      "UserPermissionTypes": [
        "status_networking",
        "networking_connections",
        "networking_edit",
        "networking_activate",
        "networking_ap_activate",
        "networking_delete",
        "networking_scan",
        "networking_certs",
        "logging",
        "help_version",
        "system_datetime",
        "system_swupdate",
        "system_password",
        "system_advanced",
        "system_positioning",
        "system_reboot",
        "system_user"
      ],
      "UserPermissionAttrs": [
        [
          "Networking Status",
          "checked",
          "disabled"
        ],
        [
          "View Connections",
          "checked",
          "disabled"
        ],
        [
          "Edit Connection",
          "",
          ""
        ],
        [
          "Activate Connection",
          "",
          ""
        ],
        [
          "Activate AP",
          "",
          ""
        ],
        [
          "Delete Connection",
          "",
          ""
        ],
        [
          "Wifi Scan",
          "",
          ""
        ],
        [
          "Manage Certs",
          "",
          ""
        ],
        [
          "Logging",
          "",
          ""
        ],
        [
          "Version",
          "checked",
          "disabled"
        ],
        [
          "Date & time",
          "",
          ""
        ],
        [
          "Firmware Update",
          "",
          ""
        ],
        [
          "Update Password",
          "checked",
          "disabled"
        ],
        [
          "Advance Setting",
          "",
          ""
        ],
        [
          "Positioning",
          "",
          ""
        ],
        [
          "Reboot",
          "",
          ""
        ],
        [
          "",
          "",
          ""
        ]
      ]
    },
    "DEVICE_TYPES": {
      "0": "Unknown",
      "1": "Ethernet",
      "2": "Wi-Fi",
      "5": "Bluetooth",
      "6": "OLPC",
      "7": "WiMAX",
      "8": "Modem",
      "9": "InfiniBand",
      "10": "Bond",
      "11": "VLAN",
      "12": "ADSL",
      "13": "Bridge Master",
      "14": "Generic",
      "15": "Team Master",
      "16": "TUN/TAP",
      "17": "IP Tunnel",
      "18": "MACVLAN",
      "19": "VXLAN",
      "20": "VETH",
      "21": "MACsec",
      "22": "dummy",
      "23": "PPP",
      "24": "Open vSwitch interface",
      "25": "Open vSwitch port",
      "26": "Open vSwitch bridge",
      "27": "WPAN",
      "28": "6LoWPAN",
      "29": "WireGuard",
      "30": "WiFi P2P",
      "31": "VRF"
    },
    "DEVICE_STATES": {
      "0": "Unknown",
      "10": "Unmanaged",
      "20": "Unavailable",
      "30": "Disconnected",
      "40": "Prepare",
      "50": "Config",
      "60": "Need Auth",
      "70": "IP Config",
      "80": "IP Check",
      "90": "Secondaries",
      "100": "Activated",
      "110": "Deactivating",
      "120": "Failed"
    },
    "PLUGINS": [
      "status",
      "networking",
      "system",
      "logging",
      "help"
    ],
    "SETTINGS": {
      "firewalld_disabled": 768,
      "session_timeout": 10
    }
  }
}

factoryReset

curl -s --location --request PUT https://test.summit.com/factoryReset --header 'Content-Type: application/json' -b cookie --insecure --data-raw '' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "Reboot required"
}

file

Upload Certificate/PAC file

curl -s --request POST https://test.summit.com/file -b cookie --insecure --form type="cert" --form file=@"user2.pem" | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

Delete Certificate/PAC file

note the URL, endpoint, and parameters are encased in “‘s due to & character

curl -s --request DELETE "https://test.summit.com/file?file=user2.pem&type=cert" -b cookie --insecure

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "file user2.pem deleted"
}

Download encrypted zip file

This endpoint returns the data as a stream. Curl can save the stream to a file with the output option

  • --output filename

note the URL, endpoint, and parameters are encased in “‘s due to & character

config file

curl -s --location --request GET "https://test.summit.com/file?type=config&password=test"--header 'Content-Type: application/json' -b cookie --insecure   --output config.zip

(the file config.zip is created)

no other output

debug file

curl -s --location --request GET "https://test.summit.com/file?type=debug" --header 'Content-Type: application/json' -b cookie --insecure  --output debug.encrypt

(the file debug.zip is created)

no other output

log file

curl -s --location --request GET "https://test.summit.com/file?type=log&password=test" --header 'Content-Type: application/json' -b cookie --insecure  --output log.zip

(the file log.zip is created)

no other output

Upload an encrypted zip file.

curl -s --location --request POST https://test.summit.com/file --insecure -b cookie --form type="config" --form file=@"config.zip" --form password="test" | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

files

Get available certificate/PAC files

curl -s --location --request GET https://test.summit.com/files?type=pac -b cookie --insecure --data-raw '' |jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "pac files",
  "count": 0,
  "files": []
}
curl -s --location --request GET https://test.summit.com/files?type=cert -b cookie --insecure --data-raw '' |jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "cert files",
  "count": 1,
  "files": [
    "user2.pem"
  ]
}

fips

Enable/disable fips/fips_wifi.

curl -s --location --request PUT https://test.summit.com/fips --header 'Content-Type: application/json' -b cookie --insecure --data '{"fips":"unset"}' | jq

returned JSON:

{
  "SDCERR": 1,
  "InfoMsg": "Not a FIPS image"
}

Get status of current fips setting

curl -s --location --request GET https://test.summit.com/fips --header 'Content-Type: application/json ' -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "Not a FIPS image",
  "status": "unset"
}

firmware

Firmware Update - block mode

curl -s -S --header 'Content-Type: application/json' --request POST --data '{"image":"main"}' --insecure https://test.summit.com/firmware -b cookie | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

Send firmware update block

In order to send firmware by block, the linux app split is used to generate the files to be sent to the device:

split -b128k -d -a 4 --additional-suffix=.swu-block som60.swu

Then a for loop is used to pass all the blocks in order:

for file in x*.swu-block; do
    echo -e 'sending: '${file}
    curl -s -S --request PUT https://test.summit.com/firmware --header 'Content-type: application/octet-stream' -b cookie --insecure --data-binary @${file}
done

no JSON returned

Check firmware update finished or not after sending the complete image

curl --request GET --insecure https://test.summit.com/firmware?mode=0 -b cookie

possible returned JSON:

update in progress
{
  "SDCERR": 0,
  "InfoMsg": "Device is busy"
}
update in progress
{
  "SDCERR": 1,
  "InfoMsg": "Bootside is not updated\n"
}
update complete
{
  "SDCERR": 0,
  "InfoMsg": "Updated"
}

Cleanup after firmware update

curl --request DELETE --insecure https://test.summit.com/firmware -b cookie

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

Firmware Update - Image pulled by device

curl -s --header 'Content-Type: application/json' --request POST --data '{"image":"full", "url":"http://192.168.1.123:8080/som60.swu"}' --insecure https://test.summit.com/firmware -b cookie

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

Get firmware update result

curl -s --request GET --insecure https://test.summit.com/firmware?mode=1 -b cookie | jq

possible returned JSON:

update in progress
{
  "SDCERR": 5,
  "InfoMsg": "Updating..."
}
update complete
{
  "SDCERR": 0,
  "InfoMsg": "Updated"
}

release resources

curl --request DELETE --insecure https://test.summit.com/firmware -b cookie

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

logData

Query log data based on settings.

curl -s --location --request GET "https://test.summit.com/logData?type=All&priority=6&days=-1" --header 'Content-Type: application/json' -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "type: All; days: -1; Priority: 6",
  "length": 96,
  "log": [
    {
      "time": "2021-12-10 15:08:51.825914",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148931.8255] device (wlan0): Activation: starting connection 'br-slave-wlan0' (bd89b41c-5688-3e79-8353-f7391d8e5ce9)"
    },
    {
      "time": "2021-12-10 15:08:51.855654",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148931.8553] device (wlan0): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:08:52.304292",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148932.3039] device (wlan0): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:08:52.342970",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148932.3426] device (wlan0): Activation: (wifi) access point 'br-slave-wlan0' has security, but secrets are required."
    },
    {
      "time": "2021-12-10 15:08:52.344317",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148932.3439] device (wlan0): state change: config -> need-auth (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:08:53.441982",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.4364] device (wlan0): state change: need-auth -> prepare (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:08:53.923533",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9231] device (wlan0): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:08:53.933519",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9331] device (wlan0): Activation: (wifi) connection 'br-slave-wlan0' has security, and secrets exist.  No new secrets needed."
    },
    {
      "time": "2021-12-10 15:08:53.935131",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9348] Config: added 'ssid' value 'xxxxxxxx'"
    },
    {
      "time": "2021-12-10 15:08:53.936419",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9361] Config: added 'mode' value '2'"
    },
    {
      "time": "2021-12-10 15:08:53.937687",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9373] Config: added 'wps_disabled' value '1'"
    },
    {
      "time": "2021-12-10 15:08:53.939002",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9386] Config: added 'ignore_broadcast_ssid' value '1'"
    },
    {
      "time": "2021-12-10 15:08:53.941220",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9399] Config: added 'frequency' value '5180'"
    },
    {
      "time": "2021-12-10 15:08:53.942063",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9403] Config: added 'freq_list' value '5180'"
    },
    {
      "time": "2021-12-10 15:08:53.955650",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9406] Config: added 'scan_freq' value '5180'"
    },
    {
      "time": "2021-12-10 15:08:53.956536",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9512] Config: added 'ht40' value '1'"
    },
    {
      "time": "2021-12-10 15:08:53.957304",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9516] Config: added 'vht_center_freq1' value '5210'"
    },
    {
      "time": "2021-12-10 15:08:53.958054",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9519] Config: added 'vht' value '1'"
    },
    {
      "time": "2021-12-10 15:08:53.958794",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9522] Config: added 'max_oper_chwidth' value '1'"
    },
    {
      "time": "2021-12-10 15:08:53.959606",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9526] Config: added 'key_mgmt' value 'WPA-PSK'"
    },
    {
      "time": "2021-12-10 15:08:53.960358",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9529] Config: added 'psk' value '<hidden>'"
    },
    {
      "time": "2021-12-10 15:08:53.971413",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9533] Config: added 'proto' value 'RSN'"
    },
    {
      "time": "2021-12-10 15:08:53.972256",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9536] Config: added 'pairwise' value 'CCMP'"
    },
    {
      "time": "2021-12-10 15:08:53.973086",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9539] Config: added 'group' value 'CCMP'"
    },
    {
      "time": "2021-12-10 15:08:53.973839",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148933.9542] Config: added 'ieee80211w' value '0'"
    },
    {
      "time": "2021-12-10 15:08:54.010962",
      "priority": "4",
      "identifier": "NetworkManager",
      "message": "<warn>  [1639148934.0068] sup-iface[ed695269395d0a0a,0,wlan0]: set bridge \"br0\" result: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs: Property is read-only"
    },
    {
      "time": "2021-12-10 15:08:54.291003",
      "priority": "6",
      "identifier": "kernel",
      "message": "IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready"
    },
    {
      "time": "2021-12-10 15:08:54.341638",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148934.3412] device (wlan0): supplicant interface state: disconnected -> scanning"
    },
    {
      "time": "2021-12-10 15:08:54.343561",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148934.3427] device (p2p-dev-wlan0): supplicant management interface state: disconnected -> scanning"
    },
    {
      "time": "2021-12-10 15:08:54.633813",
      "priority": "6",
      "identifier": "python",
      "message": "[10/Dec/2021:15:08:54]  weblcm_bluetooth: HidBarcodeScannerPlugin loaded"
    },
    {
      "time": "2021-12-10 15:08:54.654419",
      "priority": "6",
      "identifier": "python",
      "message": "[10/Dec/2021:15:08:54]  weblcm_bluetooth: VspConnectionPlugin loaded"
    },
    {
      "time": "2021-12-10 15:08:54.660001",
      "priority": "6",
      "identifier": "python",
      "message": "[10/Dec/2021:15:08:54]  __main__: Bluetooth loaded"
    },
    {
      "time": "2021-12-10 15:08:56.712099",
      "priority": "6",
      "identifier": "systemd",
      "message": "NetworkManager-dispatcher.service: Succeeded."
    },
    {
      "time": "2021-12-10 15:08:59.747273",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148939.7469] device (wlan0): supplicant interface state: scanning -> disconnected"
    },
    {
      "time": "2021-12-10 15:08:59.756070",
      "priority": "4",
      "identifier": "NetworkManager",
      "message": "<warn>  [1639148939.7504] device (wlan0): Disconnected by supplicant"
    },
    {
      "time": "2021-12-10 15:08:59.756901",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148939.7507] device (wlan0): state change: config -> disconnected (reason 'supplicant-disconnect', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:08:59.770413",
      "priority": "6",
      "identifier": "kernel",
      "message": "IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready"
    },
    {
      "time": "2021-12-10 15:08:59.808444",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148939.8081] device (wlan0): released from master device br0"
    },
    {
      "time": "2021-12-10 15:08:59.837712",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148939.8373] device (p2p-dev-wlan0): supplicant management interface state: scanning -> disconnected"
    },
    {
      "time": "2021-12-10 15:09:00.150390",
      "priority": "6",
      "identifier": "kernel",
      "message": "IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready"
    },
    {
      "time": "2021-12-10 15:09:00.573826",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148940.5734] manager: startup complete"
    },
    {
      "time": "2021-12-10 15:09:00.993604",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148940.9926] policy: auto-activating connection 'br-slave-wlan0' (bd89b41c-5688-3e79-8353-f7391d8e5ce9)"
    },
    {
      "time": "2021-12-10 15:09:01.041760",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.0414] device (wlan0): Activation: starting connection 'br-slave-wlan0' (bd89b41c-5688-3e79-8353-f7391d8e5ce9)"
    },
    {
      "time": "2021-12-10 15:09:01.061070",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.0607] device (wlan0): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:09:01.451229",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.4509] device (wlan0): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:09:01.461875",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.4615] device (wlan0): Activation: (wifi) access point 'br-slave-wlan0' has security, but secrets are required."
    },
    {
      "time": "2021-12-10 15:09:01.463182",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.4628] device (wlan0): state change: config -> need-auth (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:09:01.556858",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.5565] device (wlan0): state change: need-auth -> prepare (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:09:01.605715",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6053] device (wlan0): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:09:01.616156",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6158] device (wlan0): Activation: (wifi) connection 'br-slave-wlan0' has security, and secrets exist.  No new secrets needed."
    },
    {
      "time": "2021-12-10 15:09:01.617531",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6172] Config: added 'ssid' value 'xxxxxxxx'"
    },
    {
      "time": "2021-12-10 15:09:01.618770",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6184] Config: added 'mode' value '2'"
    },
    {
      "time": "2021-12-10 15:09:01.619995",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6197] Config: added 'wps_disabled' value '1'"
    },
    {
      "time": "2021-12-10 15:09:01.626586",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6214] Config: added 'ignore_broadcast_ssid' value '1'"
    },
    {
      "time": "2021-12-10 15:09:01.627452",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6217] Config: added 'frequency' value '5180'"
    },
    {
      "time": "2021-12-10 15:09:01.628207",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6220] Config: added 'freq_list' value '5180'"
    },
    {
      "time": "2021-12-10 15:09:01.628949",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6223] Config: added 'scan_freq' value '5180'"
    },
    {
      "time": "2021-12-10 15:09:01.629737",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6226] Config: added 'ht40' value '1'"
    },
    {
      "time": "2021-12-10 15:09:01.630616",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6229] Config: added 'vht_center_freq1' value '5210'"
    },
    {
      "time": "2021-12-10 15:09:01.631371",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6231] Config: added 'vht' value '1'"
    },
    {
      "time": "2021-12-10 15:09:01.632104",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6234] Config: added 'max_oper_chwidth' value '1'"
    },
    {
      "time": "2021-12-10 15:09:01.632900",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6237] Config: added 'key_mgmt' value 'WPA-PSK'"
    },
    {
      "time": "2021-12-10 15:09:01.633649",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6240] Config: added 'psk' value '<hidden>'"
    },
    {
      "time": "2021-12-10 15:09:01.634382",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6243] Config: added 'proto' value 'RSN'"
    },
    {
      "time": "2021-12-10 15:09:01.635115",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6246] Config: added 'pairwise' value 'CCMP'"
    },
    {
      "time": "2021-12-10 15:09:01.635850",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6249] Config: added 'group' value 'CCMP'"
    },
    {
      "time": "2021-12-10 15:09:01.636634",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148941.6252] Config: added 'ieee80211w' value '0'"
    },
    {
      "time": "2021-12-10 15:09:01.674882",
      "priority": "4",
      "identifier": "NetworkManager",
      "message": "<warn>  [1639148941.6734] sup-iface[ed695269395d0a0a,0,wlan0]: set bridge \"br0\" result: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs: Property is read-only"
    },
    {
      "time": "2021-12-10 15:09:02.090410",
      "priority": "6",
      "identifier": "kernel",
      "message": "IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready"
    },
    {
      "time": "2021-12-10 15:09:02.127572",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148942.1272] device (wlan0): supplicant interface state: disconnected -> scanning"
    },
    {
      "time": "2021-12-10 15:09:02.131957",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148942.1304] device (p2p-dev-wlan0): supplicant management interface state: disconnected -> scanning"
    },
    {
      "time": "2021-12-10 15:09:04.370543",
      "priority": "6",
      "identifier": "kernel",
      "message": "IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready"
    },
    {
      "time": "2021-12-10 15:09:04.667434",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148944.6669] device (wlan0): supplicant interface state: scanning -> completed"
    },
    {
      "time": "2021-12-10 15:09:04.690884",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148944.6905] device (wlan0): Activation: (wifi) Stage 2 of 5 (Device Configure) successful. Started Wi-Fi Hotspot \"xxxxxxxx\""
    },
    {
      "time": "2021-12-10 15:09:04.692309",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148944.6919] device (p2p-dev-wlan0): supplicant management interface state: scanning -> completed"
    },
    {
      "time": "2021-12-10 15:09:04.698687",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148944.6983] device (wlan0): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:09:04.730390",
      "priority": "6",
      "identifier": "kernel",
      "message": "br0: port 2(wlan0) entered blocking state"
    },
    {
      "time": "2021-12-10 15:09:04.730870",
      "priority": "6",
      "identifier": "kernel",
      "message": "br0: port 2(wlan0) entered disabled state"
    },
    {
      "time": "2021-12-10 15:09:04.731234",
      "priority": "6",
      "identifier": "kernel",
      "message": "device wlan0 entered promiscuous mode"
    },
    {
      "time": "2021-12-10 15:09:04.740402",
      "priority": "6",
      "identifier": "kernel",
      "message": "br0: port 2(wlan0) entered blocking state"
    },
    {
      "time": "2021-12-10 15:09:04.740874",
      "priority": "6",
      "identifier": "kernel",
      "message": "br0: port 2(wlan0) entered forwarding state"
    },
    {
      "time": "2021-12-10 15:09:04.762561",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148944.7622] device (br0): attached bridge port wlan0"
    },
    {
      "time": "2021-12-10 15:09:04.763954",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148944.7636] device (wlan0): Activation: connection 'br-slave-wlan0' enslaved, continuing activation"
    },
    {
      "time": "2021-12-10 15:09:04.778748",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148944.7784] device (wlan0): state change: ip-config -> ip-check (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:09:04.861730",
      "priority": "6",
      "identifier": "dbus-daemon",
      "message": "[system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.6' (uid=0 pid=203 comm=\"/usr/sbin/NetworkManager --no-daemon --config-dir=\")"
    },
    {
      "time": "2021-12-10 15:09:04.971910",
      "priority": "6",
      "identifier": "systemd",
      "message": "Starting Network Manager Script Dispatcher Service..."
    },
    {
      "time": "2021-12-10 15:09:05.274460",
      "priority": "6",
      "identifier": "dbus-daemon",
      "message": "[system] Successfully activated service 'org.freedesktop.nm_dispatcher'"
    },
    {
      "time": "2021-12-10 15:09:05.290388",
      "priority": "6",
      "identifier": "systemd",
      "message": "Started Network Manager Script Dispatcher Service."
    },
    {
      "time": "2021-12-10 15:09:05.322426",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148945.3216] device (wlan0): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:09:05.327194",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148945.3268] device (wlan0): state change: secondaries -> activated (reason 'none', sys-iface-state: 'managed')"
    },
    {
      "time": "2021-12-10 15:09:05.392171",
      "priority": "6",
      "identifier": "NetworkManager",
      "message": "<info>  [1639148945.3918] device (wlan0): Activation: successful, device activated."
    },
    {
      "time": "2021-12-10 15:09:08.245921",
      "priority": "6",
      "identifier": "/weblcm-python",
      "message": "Attempt to login user root"
    },
    {
      "time": "2021-12-10 15:09:10.745756",
      "priority": "6",
      "identifier": "systemd",
      "message": "systemd-hostnamed.service: Succeeded."
    },
    {
      "time": "2021-12-10 15:09:15.681389",
      "priority": "6",
      "identifier": "systemd",
      "message": "NetworkManager-dispatcher.service: Succeeded."
    },
    {
      "time": "2021-12-10 15:09:19.405878",
      "priority": "6",
      "identifier": "/weblcm-python",
      "message": "Attempt to login user root"
    },
    {
      "time": "2021-12-10 15:09:19.414975",
      "priority": "6",
      "identifier": "/weblcm-python",
      "message": "user root logged in"
    }
  ]
}

login

user login

curl -s --header 'Content-Type: application/json' --request POST --data '{"username":"root","password":"xxxxxxxx"}' --insecure https://test.summit.com/login -c cookie | jq

returned JSON:

{
  "SDCERR": 0,
  "REDIRECT": 0,
  "PERMISSION": "status_networking networking_connections networking_edit networking_activate networking_ap_activate networking_delete networking_scan networking_certs logging help_version system_datetime system_swupdate system_password system_advanced system_positioning system_reboot ",
  "InfoMsg": "User logged in"
}

logout user

curl -s --header 'Content-Type: application/json' --request DELETE --insecure https://test.summit.com/login -b cookie | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "user root logged out"
}

logSetting

Set log level for supplicant and driver

curl -s --location --request POST https://test.summit.com/logSetting --header 'Content-Type: application/json' -b cookie --insecure --data '{"suppDebugLevel":"debug", "driverDebugLevel":"1"}' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

Get log level for supplicant and driver

curl -s --location --request GET https://test.summit.com/logSetting --header 'Content-Type: application/json' -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "suppDebugLevel": "debug",
  "driverDebugLevel": "1"
}

networkInterfaces

Get available network interfaces

curl -s --location --request GET https://test.summit.com/networkInterfaces -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "interfaces": [
    "eth0",
    "eth1",
    "usb0",
    "wlan0",
    "wlan1",
    "br0",
    "p2p-dev-wlan0",
    "p2p-dev-wlan1"
  ]
}

networkStatus

Get network status

curl -s --header 'Content-Type: application/json' --request GET https://test.summit.com/networkStatus -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "status": {
    "eth0": {
      "status": {
        "State": 100,
        "StateText": "Activated",
        "Mtu": 1500,
        "DeviceType": 1,
        "DeviceTypeText": "Ethernet"
      },
      "connection_active": {
        "id": "br-slave-eth0",
        "interface-name": "eth0",
        "master": "br0",
        "permissions": [],
        "slave-type": "bridge",
        "timestamp": 1639150420,
        "type": "802-3-ethernet",
        "uuid": "03c6798b-d1e8-3155-8aac-efdd8f09180a"
      },
      "ip4config": {
        "Addresses": {},
        "Routes": {},
        "Gateway": "",
        "Domains": {}
      },
      "ip6config": {
        "Addresses": {},
        "Routes": {},
        "Gateway": "",
        "Domains": {}
      },
      "wired": {
        "HwAddress": "C0:EE:40:29:BA:54",
        "PermHwAddress": "C0:EE:40:29:BA:54",
        "Speed": 100,
        "Carrier": true
      }
    },
    "eth1": {
      "status": {
        "State": 100,
        "StateText": "Activated",
        "Mtu": 1500,
        "DeviceType": 1,
        "DeviceTypeText": "Ethernet"
      },
      "connection_active": {
        "id": "eth1",
        "interface-name": "eth1",
        "permissions": [],
        "timestamp": 1639150420,
        "type": "802-3-ethernet",
        "uuid": "6db04e98-4f3a-3e55-93e9-d6b8140765ce",
        "zone": "external"
      },
      "ip4config": {
        "Addresses": {
          "0": "192.168.1.227/24"
        },
        "Routes": {
          "0": "192.168.1.0/24 metric 100"
        },
        "Gateway": "192.168.1.1",
        "Domains": {
          "0": "localdomain"
        }
      },
      "ip6config": {
        "Addresses": {
          "0": "fe80::db22:26e7:e08e:8a73/64"
        },
        "Routes": {
          "0": "fe80::/64 metric 100"
        },
        "Gateway": "",
        "Domains": {}
      },
      "wired": {
        "HwAddress": "C0:EE:40:29:BA:53",
        "PermHwAddress": "C0:EE:40:29:BA:53",
        "Speed": 100,
        "Carrier": true
      }
    },
    "usb0": {
      "status": {
        "State": 20,
        "StateText": "Unavailable",
        "Mtu": 1500,
        "DeviceType": 1,
        "DeviceTypeText": "Ethernet"
      },
      "wired": {
        "HwAddress": "DE:AD:BE:EF:00:00",
        "PermHwAddress": "",
        "Speed": 0,
        "Carrier": false
      }
    },
    "wlan0": {
      "status": {
        "State": 100,
        "StateText": "Activated",
        "Mtu": 1500,
        "DeviceType": 2,
        "DeviceTypeText": "Wi-Fi"
      },
      "connection_active": {
        "id": "br-slave-wlan0",
        "interface-name": "wlan0",
        "master": "br0",
        "permissions": [],
        "slave-type": "bridge",
        "timestamp": 1639150420,
        "type": "802-11-wireless",
        "uuid": "bd89b41c-5688-3e79-8353-f7391d8e5ce9"
      },
      "ip4config": {
        "Addresses": {},
        "Routes": {},
        "Gateway": "",
        "Domains": {}
      },
      "ip6config": {
        "Addresses": {},
        "Routes": {},
        "Gateway": "",
        "Domains": {}
      },
      "wireless": {
        "Bitrate": 0,
        "HwAddress": "C0:EE:40:43:7D:C0",
        "PermHwAddress": "C0:EE:40:43:7D:C0",
        "Mode": 3,
        "LastScan": 56349,
        "RegDomain": "US"
      },
      "activeaccesspoint": {
        "Ssid": "xxxxxxxx",
        "HwAddress": "C0:EE:40:43:7D:C0",
        "Maxbitrate": 0,
        "Flags": 1,
        "Wpaflags": 0,
        "Rsnflags": 392,
        "Strength": 100,
        "Frequency": "5180"
      }
    },
    "wlan1": {
      "status": {
        "State": 30,
        "StateText": "Disconnected",
        "Mtu": 1500,
        "DeviceType": 2,
        "DeviceTypeText": "Wi-Fi"
      },
      "wireless": {
        "Bitrate": 0,
        "HwAddress": "C0:EE:40:43:7D:C1",
        "PermHwAddress": "C0:EE:40:43:7D:C1",
        "Mode": 2,
        "LastScan": 1541075,
        "RegDomain": "US"
      }
    },
    "br0": {
      "status": {
        "State": 100,
        "StateText": "Activated",
        "Mtu": 1500,
        "DeviceType": 13,
        "DeviceTypeText": "Bridge Master"
      },
      "connection_active": {
        "id": "br-master",
        "interface-name": "br0",
        "permissions": [],
        "timestamp": 1639150420,
        "type": "bridge",
        "uuid": "51afa7a0-27af-418e-ab47-4451c28e486b",
        "zone": "internal"
      },
      "ip4config": {
        "Addresses": {
          "0": "172.16.54.100/24"
        },
        "Routes": {
          "0": "172.16.54.0/24 metric 425"
        },
        "Gateway": "",
        "Domains": {}
      },
      "ip6config": {
        "Addresses": {
          "0": "fe80::bc57:47a8:a6bd:9601/64"
        },
        "Routes": {
          "0": "fe80::/64 metric 425"
        },
        "Gateway": "",
        "Domains": {}
      }
    },
    "p2p-dev-wlan0": {
      "status": {
        "State": 30,
        "StateText": "Disconnected",
        "Mtu": 0,
        "DeviceType": 30,
        "DeviceTypeText": "WiFi P2P"
      }
    },
    "p2p-dev-wlan1": {
      "status": {
        "State": 30,
        "StateText": "Disconnected",
        "Mtu": 0,
        "DeviceType": 30,
        "DeviceTypeText": "WiFi P2P"
      }
    }
  },
  "devices": 8
}

positioning

Set token to access positioning assist server

todo

Get location

todo

positioningSwitch

Enable/disable Celllocate and GPS (exclusive).

todo

Get status of location switch

todo

reboot

Perform a system reboot

curl -s --location --request PUT https://test.summit.com/reboot --header 'Content-Type: application/json' -b cookie --insecure --data-raw ''

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "Reboot initiated"
}

users

Get user list

curl -s --location --request GET https://test.summit.com/users --header 'Content-Type: application/json' -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "only non-default users listed under 'Users'",
  "Default_user": "root",
  "Users": {},
  "Count": 0
}

Add a user

curl -s --location --request POST https://test.summit.com/users --header 'Content-Type: application/json' -b cookie --insecure --data '{"username":"test", "password":"12345678", "permission":"status_networking networking_connections networking_edit networking_activate networking_ap_activate networking_delete networking_scan networking_certs logging help_version system_datetime system_swupdate system_password system_advanced system_positioning system_reboot "}' | jq

returned JSON:

{
  "SDCERR": 1,
  "InfoMsg": "Max number of users reached"
}

Delete a user

curl -s --location --request DELETE https://test.summit.com/users?username=test --header 'Content-Type: application/json' -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 1,
  "InfoMsg": "user test not found"
}

Update a password

curl -s --header 'Content-Type: application/json' --request PUT --data '{"username":"root","current_password":"oldpassword","new_password":"newpassword"}' --insecure https://test.summit.com/users -b cookie | jq

returned JSON:

{
  "SDCERR": 0,
  "REDIRECT": 1,
  "InfoMsg": "password changed"
}

version

Get version information

curl -s --header 'Content-Type: application/json' --location --request GET https://test.summit.com/version -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "nm_version": "9.15.0.13-1.32.4",
  "weblcm_python_webapp": "1.0.0.2",
  "build": "Summit Linux ngpvsd_dvk-laird-7.625.0.17",
  "supplicant": "sdcsupp v9.15.0.13-40.3.16.26",
  "radio_stack": "9.15.0.13",
  "driver": "lrdmwl_sdio",
  "kernel_vermagic": "4.19.203"
}

bluetooth

Get controller(s) state

filter requires at least entry. Separate multiple with commas

curl -s --location --request GET https://test.summit.com/bluetooth?filter=bluetoothDevices,discoverable,powered,discovering --header 'Content-Type: application/json' -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "controller0": {
    "bluetoothDevices": [],
    "discovering": 0,
    "powered": 0,
    "discoverable": 0
  }
}

bluetooth/controller[n]

Get bluetooth state of first controller and discovered devices.

filter requires at least entry. Separate multiple with commas

curl -s --location --request GET https://test.summit.com/bluetooth/controller0?filter=bluetoothDevices,powered,discoverable,discovering --header 'Content-Type: application/json' -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "controller0": {
    "bluetoothDevices": [],
    "discovering": 0,
    "powered": 0,
    "discoverable": 0
  }
}

Set controller state

power off
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0 --header 'Content-Type: application/json' -b cookie --insecure --data '{"powered": 0, "discovering": 0, "discoverable": 0}' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}
scan
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0 --header 'Content-Type: application/json' -b cookie --insecure --data '{"powered": 1, "discovering": 1, "discoverable": 1}' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}
get state
curl -s --location --request GET 'https://test.summit.com/bluetooth/controller0?filter=powered,discovering,discoverable' --header 'Content-Type: application/json' -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "controller0": {
    "discovering": 1,
    "powered": 1,
    "discoverable": 1
  }
}
scan results
curl -s --location --request GET 'https://test.summit.com/bluetooth/controller0?filter=bluetoothDevices' -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "controller0": {
    "bluetoothDevices": [
      {
        "Address": "C0:EE:40:43:B1:A7",
        "AddressType": "public",
        "Name": "Laird DVK SOM60x2 (43:B1:A4)",
        "Alias": "Laird DVK SOM60x2 (43:B1:A4)",
        "Paired": 1,
        "Trusted": 1,
        "Blocked": 0,
        "LegacyPairing": 0,
        "Connected": 0,
        "UUIDs": [
          "00001800-0000-1000-8000-00805f9b34fb",
          "00001801-0000-1000-8000-00805f9b34fb",
          "0000180a-0000-1000-8000-00805f9b34fb",
          "be98076e-8e8d-11e8-9eb6-529269fb1459"
        ],
        "Modalias": "usb:v1D6Bp0246d0537",
        "Adapter": "/org/bluez/hci0",
        "ServicesResolved": 0
      },
      {
        "Address": "E0:13:7D:9D:2E:45",
        "AddressType": "random",
        "Name": "Nordic_UART_Service",
        "Alias": "Nordic_UART_Service",
        "Appearance": 833,
        "Paired": 0,
        "Trusted": 0,
        "Blocked": 0,
        "LegacyPairing": 0,
        "RSSI": -58,
        "Connected": 0,
        "UUIDs": [
          "00001800-0000-1000-8000-00805f9b34fb",
          "00001801-0000-1000-8000-00805f9b34fb",
          "6e400001-b5a3-f393-e0a9-e50e24dcca9e"
        ],
        "Adapter": "/org/bluez/hci0",
        "ServicesResolved": 0
      }
    ]
  }
}

bluetooth/controller[n]/device[device_address]

connect to device
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure --data '{"connected": 1}' | jq

returned JSON:

{
  "SDCERR": 0
  "InfoMsg": ""
}
read Bluetooth state
curl -s --location --request GET https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "Address": "E0:13:7D:9D:2E:45",
  "AddressType": "random",
  "Name": "Nordic_UART_Service",
  "Alias": "Nordic_UART_Service",
  "Appearance": 833,
  "Paired": 0,
  "Trusted": 0,
  "Blocked": 0,
  "LegacyPairing": 0,
  "**Connected**": 1,
  "UUIDs": [
    "00001800-0000-1000-8000-00805f9b34fb",
    "00001801-0000-1000-8000-00805f9b34fb",
    "6e400001-b5a3-f393-e0a9-e50e24dcca9e"
  ],
  "Adapter": "/org/bluez/hci0",
  "ServicesResolved": 0
}
get connection information
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "getConnInfo"
        }' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "rssi": -40,
  "tx_power": 10,
  "max_tx_power": 12
}
open vsp port

port is 1001

curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "gattConnect",
        "tcpPort": "1001",
        "vspSvcUuid": "6e400001-b5a3-f393-e0a9-e50e24dcca9e",
        "vspReadChrUuid": "6e400003-b5a3-f393-e0a9-e50e24dcca9e",
        "vspWriteChrUuid": "6e400002-b5a3-f393-e0a9-e50e24dcca9e",
        "socketRxType": "JSON"
        }' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "GattConnections": [
    {
      "device": "E0:13:7D:9D:2E:45",
      "port": 1001
    }
  ]
}
close vsp port
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "gattDisconnect"
        }' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}
check VSP service ports:
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "gattDisconnect"
        }' | jq

returned JSON

{
  "SDCERR": 0,
  "InfoMsg": "",
  "GattConnections": []
}
bluetooth disconnect
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure --data '{"connected": 0}' | jq

returned JSON:

{
  "SDCERR": 0
  "InfoMsg": ""
}
read Bluetoothstate
curl -s --location --request GET https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "Address": "E0:13:7D:9D:2E:45",
  "AddressType": "random",
  "Name": "Nordic_UART_Service",
  "Alias": "Nordic_UART_Service",
  "Appearance": 833,
  "Paired": 0,
  "Trusted": 0,
  "Blocked": 0,
  "LegacyPairing": 0,
  "**Connected**": 0,
  "UUIDs": [
    "00001800-0000-1000-8000-00805f9b34fb",
    "00001801-0000-1000-8000-00805f9b34fb",
    "6e400001-b5a3-f393-e0a9-e50e24dcca9e"
  ],
  "Adapter": "/org/bluez/hci0",
  "ServicesResolved": 0
}

hid connect

Bluetooth connect
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure --data '{"connected": 1}' | jq

returned JSON:

{
  "SDCERR": 0
  "InfoMsg": ""
}
read Bluetooth state
curl -s --location --request GET https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "Address": "00:07:BE:33:80:AB",
  "AddressType": "random",
  "Name": "Datalogic Gryphon GBT4500",
  "Alias": "Datalogic Gryphon GBT4500",
  "Appearance": 962,
  "Icon": "input-keyboard",
  "Paired": 1,
  "Trusted": 0,
  "Blocked": 0,
  "LegacyPairing": 0,
  "RSSI": -67,
  "**Connected**": 1,
  "UUIDs": [
  ],
  "Modalias": "usb:v1915pEEEEd0001",
  "Adapter": "/org/bluez/hci0",
  "ServicesResolved": 1,
  "WakeAllowed": 1
}
open vsp port 1001
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "hidConnect",
        "tcpPort": "1001"
        }' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

check HID service ports

curl -s --location --request PUT https://test.summit.com/bluetooth/controller0 --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "hidList"
        }' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "00:07:BE:33:80:AB",
  "HidConnections": [
    {
      "device": "",
      "port": 1001
    }
  ]
}

use nc to see tcp output. Scan a barcode and confirm results: nc test.summit.com 1001

{"Received": {"Barcode": "ABCDEF"}}
{"Received": {"Barcode": "Code 128"}}
{"Connected": 0}

ble start server

curl -s --location --request PUT https://test.summit.com/bluetooth/controller0 --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "bleStartServer",
        "tcpPort": "1001"
        }' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

use nc to see tcp output. Listen on port: nc test.summit.com 1001

{
    "connect":{
    "address":"E0:13:7D:9D:2E:45",
    "connected":true,
    "services":{
        "00001801-0000-1000-8000-00805f9b34fb":{
            "characteristics":[
                {
                    "00002b2a-0000-1000-8000-00805f9b34fb":{
                        "Flags":[
                            "read"
                        ]
                    }
                },
                {
                    "00002b29-0000-1000-8000-00805f9b34fb":{
                        "Flags":[
                            "read",
                            "write"{
    "connect":{
    "address":"E0:13:7D:9D:2E:45",
    "connected":true,
    "services":{
        "00001801-0000-1000-8000-00805f9b34fb":{
            "characteristics":[
                {
                    "00002b2a-0000-1000-8000-00805f9b34fb":{
                        "Flags":[
                            "read"
                        ]
                    }
                },
                {
                    "00002b29-0000-1000-8000-00805f9b34fb":{
                        "Flags":[
                            "read",
                            "write"
                        ]
                    }
                },
                {
                    "00002a05-0000-1000-8000-00805f9b34fb":{
                        "Flags":[
                            "indicate"
                        ]
                    }
                }
            ]
        },
        "6e400001-b5a3-f393-e0a9-e50e24dcca9e":{
            "characteristics":[
                {
                    "6e400002-b5a3-f393-e0a9-e50e24dcca9e":{
                        "Flags":[
                            "write-without-response",
                            "write"
                        ]
                    }
                },
                {
                    "6e400003-b5a3-f393-e0a9-e50e24dcca9e":{
                        "Flags":[
                            "notify"
                        ]
                    }
                }
            ]
        }
    },
    "timestamp":1637677328
    }
}

{
    "char":{
    "char_uuid":"6e400003-b5a3-f393-e0a9-e50e24dcca9e",
    "value":"616f65750d",
    "service_uuid":"6e400001-b5a3-f393-e0a9-e50e24dcca9e",
    "address":"E0:13:7D:9D:2E:45",
    "timestamp":1637677879
    }
}
                        ]
                    }
                },
                {
                    "00002a05-0000-1000-8000-00805f9b34fb":{
                        "Flags":[
                            "indicate"
                        ]
                    }
                }
            ]
        },
        "6e400001-b5a3-f393-e0a9-e50e24dcca9e":{
            "characteristics":[
                {
                    "6e400002-b5a3-f393-e0a9-e50e24dcca9e":{
                        "Flags":[
                            "write-without-response",
                            "write"
                        ]
                    }
                },
                {
                    "6e400003-b5a3-f393-e0a9-e50e24dcca9e":{
                        "Flags":[
                            "notify"
                        ]
                    }
                }
            ]
        }
    },
    "timestamp":1637677328
    }
}

{
    "char":{
    "char_uuid":"6e400003-b5a3-f393-e0a9-e50e24dcca9e",
    "value":"616f65750d",
    "service_uuid":"6e400001-b5a3-f393-e0a9-e50e24dcca9e",
    "address":"E0:13:7D:9D:2E:45",
    "timestamp":1637677879
    }
}

check BLE server status and port

curl -s --location --request PUT https://test.summit.com/bluetooth/controller0 --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "bleServerStatus"
        }' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "00:07:BE:33:80:AB",
  "started": true,
  "port": 1234
}

ble enable websockets

curl -s --location --request PUT https://test.summit.com/bluetooth/controller0 --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "bleEnableWebsockets"
        }' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

use curl to see notifications. Listen: (must replace all instances of test.summit.com with target’s address)

curl --include --header "Connection: Upgrade" --header "Upgrade: websocket" --header "Host: test.summit.com" --header "Origin: http://test.summit.com/bluetoothWebsocket/ws" --header "Sec-WebSocket-Key: 1243SGVsbG8sIHdvcmxkIQ==" --header "Sec-WebSocket-Version: 13" --request GET https://test.summit.com/bluetoothWebsocket/ws --insecure -b cookie --output -

returned WebSockets-wrapped JSON:

{
    "connect":{
    "address":"E0:13:7D:9D:2E:45",
    "connected":true,
    "services":{
        "00001801-0000-1000-8000-00805f9b34fb":{
            "characteristics":[
                {
                    "00002b2a-0000-1000-8000-00805f9b34fb":{
                        "Flags":[
                            "read"
                        ]
                    }
                },
                {
                    "00002b29-0000-1000-8000-00805f9b34fb":{
                        "Flags":[
                            "read",
                            "write"{
    "connect":{
    "address":"E0:13:7D:9D:2E:45",
    "connected":true,
    "services":{
        "00001801-0000-1000-8000-00805f9b34fb":{
            "characteristics":[
                {
                    "00002b2a-0000-1000-8000-00805f9b34fb":{
                        "Flags":[
                            "read"
                        ]
                    }
                },
                {
                    "00002b29-0000-1000-8000-00805f9b34fb":{
                        "Flags":[
                            "read",
                            "write"
                        ]
                    }
                },
                {
                    "00002a05-0000-1000-8000-00805f9b34fb":{
                        "Flags":[
                            "indicate"
                        ]
                    }
                }
            ]
        },
        "6e400001-b5a3-f393-e0a9-e50e24dcca9e":{
            "characteristics":[
                {
                    "6e400002-b5a3-f393-e0a9-e50e24dcca9e":{
                        "Flags":[
                            "write-without-response",
                            "write"
                        ]
                    }
                },
                {
                    "6e400003-b5a3-f393-e0a9-e50e24dcca9e":{
                        "Flags":[
                            "notify"
                        ]
                    }
                }
            ]
        }
    },
    "timestamp":1637677328
    }
}

{
    "char":{
    "char_uuid":"6e400003-b5a3-f393-e0a9-e50e24dcca9e",
    "value":"616f65750d",
    "service_uuid":"6e400001-b5a3-f393-e0a9-e50e24dcca9e",
    "address":"E0:13:7D:9D:2E:45",
    "timestamp":1637677879
    }
}
                        ]
                    }
                },
                {
                    "00002a05-0000-1000-8000-00805f9b34fb":{
                        "Flags":[
                            "indicate"
                        ]
                    }
                }
            ]
        },
        "6e400001-b5a3-f393-e0a9-e50e24dcca9e":{
            "characteristics":[
                {
                    "6e400002-b5a3-f393-e0a9-e50e24dcca9e":{
                        "Flags":[
                            "write-without-response",
                            "write"
                        ]
                    }
                },
                {
                    "6e400003-b5a3-f393-e0a9-e50e24dcca9e":{
                        "Flags":[
                            "notify"
                        ]
                    }
                }
            ]
        }
    },
    "timestamp":1637677328
    }
}

{
    "char":{
    "char_uuid":"6e400003-b5a3-f393-e0a9-e50e24dcca9e",
    "value":"616f65750d",
    "service_uuid":"6e400001-b5a3-f393-e0a9-e50e24dcca9e",
    "address":"E0:13:7D:9D:2E:45",
    "timestamp":1637677879
    }
}
ble start discovery
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0 --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "bleStartDiscovery"
        }' | jq

Discovery notification events will be received over the connection previously established by bluetooth_ble_connect, for example:

Example data received

{
    "discovery":{
        "Address":"C4:93:D9:2E:C7:B0",
        "Alias":"Erik's Galaxy Note9",
        "Class":5898764,
        "Icon":"phone",
        "Name":"Erik's Galaxy Note9",
        "RSSI":-69,
        "UUIDs":[
            "00001105-0000-1000-8000-00805f9b34fb",
            "0000110a-0000-1000-8000-00805f9b34fb",
            "0000110c-0000-1000-8000-00805f9b34fb",
            "0000110e-0000-1000-8000-00805f9b34fb",
            "00001112-0000-1000-8000-00805f9b34fb",
            "00001115-0000-1000-8000-00805f9b34fb",
            "00001116-0000-1000-8000-00805f9b34fb",
            "0000111f-0000-1000-8000-00805f9b34fb",
            "0000112f-0000-1000-8000-00805f9b34fb",
            "00001200-0000-1000-8000-00805f9b34fb",
            "00001132-0000-1000-8000-00805f9b34fb"
        ],
        "timestamp":1637711953
    }
}
ble stop discovery
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0 --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "bleStopDiscovery"
        }' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}
ble connect
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure --data '{"command": "bleConnect"}' | jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}
read Bluetooth state:
curl -s --location --request GET https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure| jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": "",
  "Address": "E0:13:7D:9D:2E:45",
  "AddressType": "random",
  "Name": "Nordic_UART_Service",
  "Alias": "Nordic_UART_Service",
  "Appearance": 833,
  "Paired": 0,
  "Trusted": 1,
  "Blocked": 0,
  "LegacyPairing": 0,
  "Connected": 1,
  "UUIDs": [
    "00001800-0000-1000-8000-00805f9b34fb",
    "00001801-0000-1000-8000-00805f9b34fb",
    "6e400001-b5a3-f393-e0a9-e50e24dcca9e"
  ],
  "Adapter": "/org/bluez/hci0",
  "ServicesResolved": 1
}
ble gatt notify
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/E0:13:7D:9D:2E:45 --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "bleGatt",
        "operation": "notify",
        "enable": "True",
        "svcUuid": "6e400001-b5a3-f393-e0a9-e50e24dcca9e",
        "chrUuid": "6e400003-b5a3-f393-e0a9-e50e24dcca9e"
        }'| jq

Characteristic notification events will be received over the connection previously established by bluetooth_ble_connect, for example:

{
    "char":{
        "char_uuid":"6e400003-b5a3-f393-e0a9-e50e24dcca9e",
        "value":"0d",
        "service_uuid":"6e400001-b5a3-f393-e0a9-e50e24dcca9e",
        "address":"E0:13:7D:9D:2E:45",
        "timestamp":1637709735
    }
}
bluetooth GATT read
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/C0:EE:40:50:17:6B --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "bleGatt",
        "operation": "read",
        "svcUuid": "0000180d-0000-1000-8000-00805f9b34fb",
        "chrUuid": "00002a38-0000-1000-8000-00805f9b34fb"
        }'| jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

Read notification events will be received over the connection previously established by bluetooth_ble_connect, for example:

{
    "char":{
        "char_uuid":"00002a38-0000-1000-8000-00805f9b34fb",
        "value":"01",
        "service_uuid":"0000180d-0000-1000-8000-00805f9b34fb",
        "address":"C0:EE:40:50:17:6B",
        "timestamp":1637782343
    }
}
ble gatt write
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/C0:EE:40:50:17:6B --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "bleGatt",
        "operation": "write",
        "value": "0001020304",
        "svcUuid": "12345678-1234-5678-1234-56789abcdef0",
        "chrUuid": "12345678-1234-5678-1234-56789abcdef1"
        }'| jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}
ble gatt notify
curl -s --location --request PUT https://test.summit.com/bluetooth/controller0/C0:EE:40:50:17:6B --header 'Content-Type: application/json' -b cookie --insecure --data '{
        "command": "bleGatt",
        "operation": "notify",
        "enable": "True",
        "svcUuid": "0000180d-0000-1000-8000-00805f9b34fb",
        "chrUuid": "00002a37-0000-1000-8000-00805f9b34fb"
        }'
| jq

returned JSON:

{
  "SDCERR": 0,
  "InfoMsg": ""
}

Notification events will be received over the connection previously established by bluetooth_ble_connect, for example:

{
    "char":{
        "char_uuid":"00002a37-0000-1000-8000-00805f9b34fb",
        "value":"067f",
        "service_uuid":"0000180d-0000-1000-8000-00805f9b34fb",
        "address":"C0:EE:40:50:17:6B",
        "timestamp":1637783561
    }
}


Appendix

What is cURL?

See wikipedia entry

MS Windows and curl

Using curl from MS Windows.

cURL availability for MS Windows?

MS Windows interprets ‘ and “ differently from Linux

MS Windows shell processes the “ characters instead of passing them in tact to the curl application. To prevent this, “ characters must be ‘escaped’ by converting “ to /”.

This can easily be done using the SOM’s console or ssh port to access the tool sed which is part of the image on the SOM.

Example

This example of the connection endpoint is a curl command which creates a bridge-slave interface for wlan0 (change localhost to the ip address/FQDN of the SOM): Type the following command at a SOM prompt. Copy/Paste the line starting with curl. After paste, press control-d to end the creation of the file.

cat > create_bridge.sh
curl --header 'Content-Type: application/json' --request POST https://localhost/connection -b cookie --insecure --data '{"connection": { "id": "br-slave-wlan0", "uuid": "bd89b41c-5688-3e79-8353-f7391d8e5ce9", "interface-name": "wlan0", "master": "br0", "slave-type": "bridge"}, "802-11-wireless": { "mode": "ap", "band": "a", "channel": 36, "channel-width" : 80, "hidden" : 1, "ssid": "SOMWiFi" }, "802-11-wireless-security": { "group": "ccmp", "key-mgmt": "wpa-psk", "pairwise": "ccmp", "proto" : "rsn", "pmf" : 1, "psk" : "PASSWORD" }}'

Press ctrl-d to close the file.

ctrl-d

next, use sed to replace all the “ with “\ and create a bat file for windows:

sed 's#\"#\\\"#g' create_bridge.sh > create_bridge.bat

lastly, replace the ‘ character with “ in the new create_bridge.bat file:

sed -i 's/'\''/\"/g' -i create_bridge.bat

Here are the two files for comparison showing original “ changed to \” and ‘ changed to “ :

curl --header 'Content-Type: application/json' --request POST https://localhost/connection -b cookie --insecure --data '{"connection": { "id": "br-slave-wlan0", "uuid": "bd89b41c-5688-3e79-8353-f7391d8e5ce9", "interface-name": "wlan0", "master": "br0", "slave-type": "bridge"}, "802-11-wireless": { "mode": "ap", "band": "a", "channel": 36, "channel-width" : 80, "hidden" : 1, "ssid": "SOMWiFi" }, "802-11-wireless-security": { "group": "ccmp", "key-mgmt": "wpa-psk", "pairwise": "ccmp", "proto" : "rsn", "pmf" : 1, "psk" : "PASSWORD" }}'
curl --header "Content-Type: application/json" --request POST https://localhost/connection -b cookie --insecure --data "{\"connection\": { \"id\": \"br-slave-wlan0\", \"uuid\": \"bd89b41c-5688-3e79-8353-f7391d8e5ce9\", \"interface-name\": \"wlan0\", \"master\": \"br0\", \"slave-type\": \"bridge\"}, \"802-11-wireless\": { \"mode\": \"ap\", \"band\": \"a\", \"channel\": 36, \"channel-width\" : 80, \"hidden\" : 1, \"ssid\": \"SOMWiFi\" }, \"802-11-wireless-security\": { \"group\": \"ccmp\", \"key-mgmt\": \"wpa-psk\", \"pairwise\": \"ccmp\", \"proto\" : \"rsn\", \"pmf\" : 1, \"psk\" : \"PASSWORD\" }}"