Last active
April 22, 2023 12:42
-
-
Save derhuerst/7ac3a5edb9e32a8eb066a4a79da63833 to your computer and use it in GitHub Desktop.
VIAS RE 19 to Düsseldorf, unwired.at captive portal requests
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
POST /api/graphql HTTP/1.1 | |
Host: wasabi-splashpage.wifi.unwired.at | |
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:101.0) Gecko/20100101 Firefox/101.0 | |
Accept: */* | |
Accept-Language: en-GB,en;q=0.5 | |
Accept-Encoding: gzip, deflate, br | |
Referer: https://wasabi-splashpage.wifi.unwired.at/internet | |
content-type: application/json | |
Origin: https://wasabi-splashpage.wifi.unwired.at | |
Content-Length: 484 | |
DNT: 1 | |
Connection: keep-alive | |
Sec-Fetch-Dest: empty | |
Sec-Fetch-Mode: cors | |
Sec-Fetch-Site: same-origin | |
Pragma: no-cache | |
Cache-Control: no-cache | |
{ | |
"operationName": "online_status", | |
"variables": { | |
"user_session_id": "b6cc0660-f7af-11ec-a82e-5afd9165e965", | |
"language": "en" | |
}, | |
"query": "query online_status($user_session_id: ID!, $language: String!) {\n online_status: splashpage(\n user_session_id: $user_session_id\n language: $language\n ) {\n error {\n ...Error\n __typename\n }\n online\n user_session_id\n __typename\n }\n}\n\nfragment Error on Error {\n error_code\n error_message\n __typename\n}" | |
} | |
HTTP/2 200 OK | |
access-control-allow-origin: * | |
content-type: application/json; charset=utf-8 | |
date: Wed, 29 Jun 2022 14:05:34 GMT | |
etag: W/"93-HPVVc/ETWAzzrjBd5xWEICXScVs" | |
vary: Accept-Encoding, Accept-Encoding | |
x-powered-by: Express | |
content-length: 147 | |
X-Firefox-Spdy: h2 | |
{ | |
"data": { | |
"online_status": { | |
"error": null, | |
"online": true, | |
"user_session_id": "b6cc0660-f7af-11ec-a82e-5afd9165e965", | |
"__typename": "SplashpageResponse" | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
POST /api/graphql HTTP/1.1 | |
Host: wasabi-splashpage.wifi.unwired.at | |
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:101.0) Gecko/20100101 Firefox/101.0 | |
Accept: */* | |
Accept-Language: en-GB,en;q=0.5 | |
Accept-Encoding: gzip, deflate, br | |
Referer: https://wasabi-splashpage.wifi.unwired.at/internet | |
content-type: application/json | |
Origin: https://wasabi-splashpage.wifi.unwired.at | |
Content-Length: 1332 | |
DNT: 1 | |
Connection: keep-alive | |
Sec-Fetch-Dest: empty | |
Sec-Fetch-Mode: cors | |
Sec-Fetch-Site: same-origin | |
Pragma: no-cache | |
Cache-Control: no-cache | |
{ | |
"operationName": "session_info", | |
"variables": { | |
"user_session_id": "b6cc0660-f7af-11ec-a82e-5afd9165e965", | |
"language": "en" | |
}, | |
"query": "query session_info($user_session_id: ID!, $language: String!) {\n session_info: splashpage(user_session_id: $user_session_id, language: $language) {\n error {\n ...Error\n __typename\n }\n connected\n online\n policy_violation {\n ...PolicyViolationError\n __typename\n }\n user_session_info {\n ...UserSessionInfo\n __typename\n }\n __typename\n }\n}\n\nfragment Error on Error {\n error_code\n error_message\n __typename\n}\n\nfragment UserSessionInfo on UserSessionInfo {\n client_mac\n ap_mac\n ap_name\n user_session_id\n sync_user_session_id\n time_start\n state\n network_user_policy {\n network_user_policy_id\n max_mbytes_down\n max_mbytes_up\n daily_max_mbytes_down\n daily_max_mbytes_up\n max_bandwidth_down\n max_bandwidth_up\n max_pause_time\n accounting_interval\n timeout_session\n daily_max_session_time\n timeout_idle\n __typename\n }\n mbytes_down\n mbytes_up\n session_time\n __typename\n}\n\nfragment PolicyViolationError on Error {\n error_code\n error_message\n current_value_bytes\n max_value_bytes\n current_value_seconds\n max_value_seconds\n __typename\n}" | |
} | |
HTTP/2 200 OK | |
access-control-allow-origin: * | |
content-type: application/json; charset=utf-8 | |
date: Wed, 29 Jun 2022 14:05:34 GMT | |
etag: W/"327-1WHMiOJ86UMUZ341AigYBoZdb5o" | |
vary: Accept-Encoding, Accept-Encoding | |
x-powered-by: Express | |
content-length: 807 | |
X-Firefox-Spdy: h2 | |
{ | |
"data": { | |
"session_info": { | |
"error": null, | |
"connected": true, | |
"online": true, | |
"policy_violation": null, | |
"user_session_info": { | |
"client_mac": "0003FF0E2A5E", | |
"ap_mac": "00112B02C196", | |
"ap_name": "2302 R2", | |
"user_session_id": "b6cc0660-f7af-11ec-a82e-5afd9165e965", | |
"sync_user_session_id": null, | |
"time_start": "2022-06-29T13:30:59.980Z", | |
"state": "internet", | |
"network_user_policy": { | |
"network_user_policy_id": "Abellio", | |
"max_mbytes_down": 0, | |
"max_mbytes_up": 0, | |
"daily_max_mbytes_down": 500, | |
"daily_max_mbytes_up": 500, | |
"max_bandwidth_down": 5242, | |
"max_bandwidth_up": 3145, | |
"max_pause_time": 14400, | |
"accounting_interval": 480, | |
"timeout_session": 14400, | |
"daily_max_session_time": 0, | |
"timeout_idle": 600, | |
"__typename": "NetworkUserPolicy" | |
}, | |
"mbytes_down": 34.7, | |
"mbytes_up": 5.3, | |
"session_time": 1971, | |
"__typename": "UserSessionInfo" | |
}, | |
"__typename": "SplashpageResponse" | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type ActivateUserSessionResponse implements Response { | |
ap_mac: String | |
error: Error | |
policy: Policy | |
state: String | |
time_start: DateTime | |
user_session_id: ID | |
} | |
input AdminLogInput { | |
data: String | |
error_code: String | |
level: LogLevel! | |
message: String! | |
} | |
type Anchor { | |
id: ID | |
label: String | |
label_lang: [Translatable] | |
slug: String | |
} | |
input AnchorInput { | |
id: ID | |
label: [TranslatableInput] | |
slug: String | |
} | |
enum AuthType { | |
BASIC | |
NONE | |
} | |
enum AuthzPermission { | |
authz_admin_create | |
authz_apikey_edit | |
authz_customer_edit | |
authz_customer_view | |
authz_group_edit | |
authz_user_authoritive | |
authz_user_edit | |
authz_user_list | |
} | |
type Authz_AdminUser { | |
email: String! | |
firstname: String! | |
lastname: String! | |
user_id: ID! | |
} | |
scalar Authz_AdminUserID | |
input Authz_AdminUserSearchParams_Input { | |
email: String | |
firstname: String | |
lastname: String | |
} | |
type Authz_AdminUsersResponse { | |
admin_users: [Authz_AdminUser!]! | |
count: Int! | |
} | |
type Authz_Apikey { | |
apikey_id: ID! | |
date_created: DateTime! | |
key_data: String | |
name: String! | |
} | |
scalar Authz_ApikeyID | |
input Authz_CreateAdminUser_Input { | |
email: String! | |
firstname: String! | |
lastname: String! | |
} | |
type Authz_Customer { | |
customer_id: ID! | |
name: String! | |
} | |
scalar Authz_CustomerID | |
type Authz_CustomerPermissions { | |
customer_id: ID | |
permissions: [String!]! | |
} | |
input Authz_CustomerSearchParams_Input { | |
customer_id: ID | |
name: String | |
} | |
input Authz_Customer_Input { | |
name: String! | |
} | |
input Authz_EditAdminUser_Input { | |
email: String! | |
firstname: String! | |
lastname: String! | |
} | |
# a list of Authz API error codes | |
enum Authz_ErrorCodes { | |
BAD_INPUT_ERROR | |
EMAIL_NOT_VERIFIED | |
ERROR_GENERIC | |
INTERNAL_SERVER_ERROR | |
NOT_AUTHORIZED | |
NOT_AUTHORIZED_NO_CUSTOMER_RELATION | |
} | |
enum Authz_ID_Type { | |
apikey_id | |
customer_id | |
group_id | |
invite_id | |
} | |
type Authz_IdStatus { | |
id: ID! | |
status: Boolean! | |
} | |
type Authz_Invite { | |
customer_id: Authz_CustomerID! | |
email: String! | |
invite_id: Authz_InviteID! | |
roles: [Authz_RoleName!]! | |
token_expiration: DateTime! | |
} | |
scalar Authz_InviteID | |
type Authz_LoggedInUserData { | |
email: String! | |
firstname: String! | |
lastname: String! | |
ui_settings: SimpleJSON! | |
user_id: ID! | |
verify_email_until: DateTime | |
} | |
type Authz_LoginResponse { | |
token: String! | |
} | |
type Authz_PolicyApikey { | |
apikey_id: Authz_ApikeyID! | |
customer_id: Authz_CustomerID | |
role: Authz_RoleName! | |
} | |
type Authz_PolicyUser { | |
customer_id: Authz_CustomerID | |
role: Authz_RoleName! | |
user_id: Authz_AdminUserID! | |
} | |
scalar Authz_RoleName | |
# The `BigInt` scalar type represents non-fractional signed whole numeric values. BigInt can represent values between -(2^53) + 1 and 2^53 - 1. | |
scalar BigInt | |
# represents 52-bit long signed integers. | |
scalar Bigint | |
type CampaignWidget implements Widget { | |
date_created: DateTime! | |
date_updated: DateTime! | |
page_id: ID! | |
position: Int! | |
widget_id: ID! | |
} | |
input CampaignWidgetInput { | |
page_id: ID! | |
} | |
type ClientInfoResponse implements Response { | |
connected: Boolean | |
error: Error | |
policy: Policy | |
user_session_id: ID | |
} | |
input ConnectInput { | |
cause: String! | |
email: String! | |
first_name: String | |
last_name: String | |
source: String! | |
} | |
input ConnectMetaDataInput { | |
confirmation: Boolean | |
data_retention_seconds: Int | |
delay: Int | |
email_cid: String | |
require_sms_auth: Boolean | |
snippet_keys: ConnectSnippetsInput | |
variant: String | |
} | |
type ConnectSnippets { | |
button_text: String | |
connected_text: String | |
store_terms: String | |
terms_of_service: String | |
} | |
input ConnectSnippetsInput { | |
button_text: String | |
connected_text: String | |
store_terms: String | |
terms_of_service: String | |
} | |
type ConnectWidget implements Widget { | |
anchor: Anchor | |
button_text: String | |
confirmation: Boolean | |
connected_text: String | |
date_created: DateTime! | |
date_updated: DateTime! | |
delay: Int | |
email_mandatory: Boolean | |
enable_anchor: Boolean | |
meta_data: ConnectWidgetMetaData | |
page_id: ID! | |
position: Int! | |
require_sms_auth: Boolean | |
store_terms: String | |
store_terms_lang: [Translatable] | |
terms_of_service: String | |
variant: String | |
widget_id: ID! | |
} | |
input ConnectWidgetInput { | |
anchor: AnchorInput | |
confirmation: Boolean | |
delay: Int | |
email_mandatory: Boolean | |
enable_anchor: Boolean | |
meta_data: ConnectMetaDataInput | |
page_id: ID | |
require_sms_auth: Boolean | |
store_terms: [TranslatableInput] | |
variant: String | |
} | |
type ConnectWidgetMetaData { | |
confirmation: Boolean | |
data_retention_seconds: Int | |
delay: Int | |
email_cid: String | |
require_sms_auth: Boolean | |
snippet_keys: ConnectSnippets | |
variant: String | |
} | |
scalar ConstraintNumber | |
scalar ConstraintString | |
type CopiedResourceIds { | |
new_resource_id: String | |
orig_resource_id: String! | |
} | |
type CopyResourcesResponse implements Response { | |
copied_resource_ids: [CopiedResourceIds] | |
error: Error | |
} | |
type CustomOption { | |
email: String | |
id: ID | |
option_key: String | |
text: String | |
text_lang: [Translatable] | |
} | |
input CustomOptionInput { | |
email: String | |
id: ID | |
option_key: String | |
text: [TranslatableInput] | |
} | |
type Customer { | |
customer_id: ID! | |
groups: [Group] | |
name: String! | |
} | |
enum DMPermission { | |
dm_appliance_viewInternal | |
dm_auditlog_list | |
dm_auditlog_view | |
dm_customer_view | |
dm_devAccess | |
dm_devicepassword_view | |
dm_firmwareversion_edit | |
dm_firmwareversion_view | |
dm_group_edit | |
dm_group_view | |
dm_mtsg_view | |
dm_node_edit | |
dm_node_list | |
dm_node_view | |
dm_nodeservice_edit | |
dm_nodeservice_list | |
dm_nodeservice_view | |
dm_nodeserviceinstance_edit | |
dm_nodeserviceinstance_list | |
dm_nodeserviceinstance_view | |
dm_nodetype_edit | |
dm_nodetype_view | |
dm_rollout_edit | |
} | |
# appliance (= stargate) | |
# | |
# NOTES: | |
# - this is only used for UI visualization | |
# - all other properties are left out by design, because they are not relevant to the UI | |
type DM_Appliance { | |
active: Boolean! | |
appliance_id: ID! | |
mac: DM_Mac! | |
name: String! | |
} | |
# represents an ID which identifies a traffic exit point, aka appliance. | |
scalar DM_ApplianceID | |
type DM_AuditLogEvent implements DM_LogEvent { | |
audit_log_type: DM_AuditLogType! | |
event_name: String! | |
identity_name: String! | |
log_id: ID! | |
timestamp: DateTime! | |
} | |
type DM_AuditLogEventDetails implements DM_LogEvent { | |
event_data: String | |
log_id: ID! | |
timestamp: DateTime! | |
} | |
enum DM_AuditLogType { | |
group | |
node | |
} | |
# allows to specify which parts of an object to copy | |
# | |
# NOTE: | |
# - fields that are not null and true will result in data being copied | |
input DM_CopyConfigurationSelector_Input { | |
# copy hardware settings like power and channel per interface, only applies to devices | |
copy_hardware_radio_settings: Boolean | |
copy_node_accesses: Boolean | |
copy_node_location: Boolean | |
copy_node_networks: Boolean | |
copy_node_profile: Boolean | |
} | |
scalar DM_CountryCode | |
# represents an ID which identifies a customer of Unwired GmbH | |
scalar DM_CustomerID | |
# this is a device, it is a DM_Node | |
type DM_Device implements DM_Node { | |
accesses: [DM_NodeAccess!]! | |
ap_type: String | |
config_changed: DateTime! | |
created_at: DateTime! | |
deleted: Boolean! | |
firmware_version: String | |
gpio_configs: [DM_GPIOPortConfig!]! | |
group: DM_Group! | |
group_id: ID! | |
hardware: [DM_NodeHardware!]! | |
# timestamp of last heartbeat | |
last_heartbeat: DateTime | |
# timestamp of last config update | |
last_update: DateTime | |
# load string from linux | |
load: String | |
# local ipv4 gateway address | |
local_ipv4_gateway_address: DM_IPv4Address | |
# local ipv4 ip address | |
local_ipv4_ip_address: DM_IPv4Address | |
location: DM_NodeLocation | |
# unique identifier for enabled devices, and only for devices | |
# The mac syntax is always 12 all-uppercase hex digits. | |
mac: DM_Mac | |
name: String! | |
networks: [DM_NodeNetwork!]! | |
node_id: ID! | |
node_service_instances: [DM_NodeServiceInstance!]! | |
node_type: DM_NodeType! | |
node_type_id: ID! | |
online_status: DM_NodeOnlineStatus! | |
online_status_changed: DateTime! | |
profile: DM_NodeProfile! | |
rollout_end: DM_Time | |
rollout_start: DM_Time | |
rollout_state: DM_RolloutState! | |
rollout_timestamp_deploy: DateTime | |
rollout_timestamp_result: DateTime | |
rollout_version_last_good: String | |
status: DM_NodeStatus! | |
update_config: Boolean! | |
uplinks: [DM_NodeUplink!]! | |
# uptime in seconds | |
uptime: Int | |
use_default: Boolean! | |
# version_target_selector: tag or branch of the firmware to follow examples: "branch:19.07", "version:19.07-80", "tag:stable" defaults to node_type.version_target_selector | |
version_target_selector: String | |
} | |
type DM_DeviceCredentials { | |
password: String! | |
password_changed: DateTime! | |
} | |
# event types related to devices | |
enum DM_DeviceEventType { | |
device_offline | |
device_online | |
} | |
# describes the source of the heartbeat event | |
enum DM_DeviceHeartbeatSource { | |
device_3rdparty | |
firmware | |
openvpn | |
} | |
type DM_DeviceMgmtTunnelResponse { | |
changed: DateTime! | |
node_id: DM_NodeID! | |
openvpn: String! | |
} | |
# this is the device rollout work item to process a firmware update | |
type DM_DeviceRolloutWorkItem { | |
firmware_version: String! | |
mac: DM_Mac! | |
node_id: DM_NodeID! | |
online_status: DM_NodeOnlineStatus! | |
rollout_state: DM_RolloutState! | |
rollout_timestamp_deploy: DateTime | |
rollout_timestamp_result: DateTime | |
rollout_version_lastGood: String | |
selected_target_version: String! | |
version_target_selector: String! | |
} | |
input DM_Device_BaseConfig_Input { | |
gpio_configs: [DM_GPIOPortConfig_Input!] | |
location: DM_NodeLocation_Input! | |
mac: DM_Mac! | |
name: String! | |
node_id: DM_NodeID! | |
# this field is ignored internally and optional for merely for compatibility reasons. soon to be removed. | |
node_type_id: DM_NodeTypeID | |
profile: DM_NodeProfile! | |
radio_settings: [DM_NodeHardwareRadioSettings_Input!] | |
status: DM_NodeStatus! | |
use_default: Boolean! | |
} | |
input DM_Device_Input { | |
# location information for nodes defines the physical position of the node and a comment | |
# | |
# NOTE: | |
# - for this input type a location input with its required properties must be provided | |
location: DM_NodeLocation_Input! | |
# mac may be null when status is set to 'planning' | |
mac: DM_Mac | |
name: String! | |
node_type_id: ID! | |
parent_group_id: ID! | |
status: DM_NodeStatus! | |
use_default: Boolean! | |
} | |
input DM_Devices_Input { | |
devices: [DM_Device_Input!]! | |
} | |
# represents the elapsed time between two instants, e.g. 72h3m0.5s. | |
# The format is defined by the `ParseDuration` function of the go `time.Duration` datatype. | |
# | |
# See the go documentation of the [time.Duration](https://pkg.go.dev/time#ParseDuration) data type for further information. | |
scalar DM_Duration | |
# the main error type | |
# | |
# NOTE: | |
# - the error_message is meant for technical log output | |
# - the error_code should be used by consumer code to show UIs or make decisions based on specific | |
# error scenarios | |
type DM_Error { | |
error_code: DM_ErrorCodes | |
error_message: String | |
} | |
# a list of DM API error codes | |
enum DM_ErrorCodes { | |
BAD_INPUT_ERROR | |
DEVICE_REGENERATION_FAILED | |
ERROR_GENERIC | |
INTERNAL_SERVER_ERROR | |
NOT_AUTHORIZED | |
NOT_FOUND_AP_MAC | |
} | |
# this is a Firmware version identified by a branch name and a build number | |
type DM_FirmwareVersion { | |
branch: String! | |
build: Int! | |
tag: String | |
} | |
# Configuration for the digital input and outputs for a device. The name marks a specific port and must match a given port from the device type. | |
# Missing configs are equally treated as a port config with mode disabled. | |
type DM_GPIOPortConfig { | |
mode: DM_GPIOPortMode! | |
name: String! | |
} | |
# Configuration for the digital input and outputs for a device. The name marks a specific port and must match a given port from the device type. | |
# Missing configs are equally treated as a port config with mode disabled. | |
input DM_GPIOPortConfig_Input { | |
mode: DM_GPIOPortMode! | |
name: String! | |
} | |
enum DM_GPIOPortMode { | |
disabled | |
running | |
selftest | |
} | |
# a group, can have a parent | |
type DM_Group { | |
default_config: ID! | |
deleted: Boolean! | |
group_id: ID! | |
name: String! | |
parent_id: ID | |
} | |
# this is the group config object, it is a DM_Node | |
type DM_GroupConfig implements DM_Node { | |
accesses: [DM_NodeAccess!]! | |
config_changed: DateTime! | |
created_at: DateTime! | |
group: DM_Group! | |
group_id: ID! | |
group_service_instances: [DM_GroupServiceInstance!]! | |
hardware: [DM_NodeHardware!]! | |
location: DM_NodeLocation | |
name: String! | |
networks: [DM_NodeNetwork!]! | |
node_id: ID! | |
node_type: DM_NodeType! | |
node_type_id: ID! | |
profile: DM_NodeProfile! | |
rollout_end: DM_Time | |
rollout_start: DM_Time | |
update_config: Boolean! | |
uplinks: [DM_NodeUplink!]! | |
use_default: Boolean! | |
} | |
input DM_GroupConfig_BaseConfig_Input { | |
location: DM_NodeLocation_Input! | |
name: String! | |
node_id: DM_NodeID! | |
profile: DM_NodeProfile! | |
use_default: Boolean! | |
} | |
# represents an ID which identifies a group containing other groups or devices | |
scalar DM_GroupID | |
type DM_GroupServiceInstance { | |
access_id_provided: DM_NodeAccessID | |
access_id_used: DM_NodeAccessID! | |
container_image: String! | |
group_service_instance_id: DM_GroupServiceInstanceID! | |
node_id: DM_NodeID! | |
} | |
# internal data type | |
scalar DM_GroupServiceInstanceID | |
input DM_Group_Input { | |
# location information for groups is mostly used to set the comment field | |
# | |
# NOTE: | |
# - for this input type a location input with its required properties must be provided | |
location: DM_NodeLocation_Input! | |
name: String! | |
parent_group_id: ID | |
use_default: Boolean! | |
} | |
type DM_HeartbeatEvent implements DM_LogEvent { | |
delta: Int! | |
heartbeat_type: DM_HeartbeatType! | |
log_id: ID! | |
timestamp: DateTime! | |
} | |
enum DM_HeartbeatType { | |
ap_offline | |
ap_online | |
} | |
enum DM_ID_Type { | |
group_id | |
} | |
# represents an IPv4Address, e. g. 192.168.0.1 | |
scalar DM_IPv4Address | |
# represents an IP and the subnet it is in, in CIDR notation, e.g. 192.168.0.0/24 | |
scalar DM_IPv4Subnet | |
interface DM_LogEvent { | |
log_id: ID! | |
timestamp: DateTime! | |
} | |
type DM_LogEventsForNodeResponse { | |
count: Int! | |
logs: [DM_LogEvent!]! | |
} | |
# represents a physical address as used by Unwired to identify devices. | |
# The format of DM_Mac addresses does not contain dashes or colons and is all caps. | |
scalar DM_Mac | |
# network encryption types | |
enum DM_Network_Encryption { | |
none | |
wep | |
wpa2ccmp | |
wpa2psk | |
wpa2psktkip | |
wpa2psktkipaes | |
} | |
interface DM_Node { | |
accesses: [DM_NodeAccess!]! | |
config_changed: DateTime! | |
created_at: DateTime! | |
group: DM_Group! | |
# for devices: parent/owner group ID (from the group object) | |
# for group configurations: its own group ID (from the group object) | |
group_id: ID! | |
hardware: [DM_NodeHardware!]! | |
# location and location-related information of the node | |
# | |
# NOTE: | |
# - the location information is considered to be optional for reading | |
location: DM_NodeLocation | |
# name of the node (either device or group name) | |
name: String! | |
networks: [DM_NodeNetwork!]! | |
node_id: ID! | |
node_type: DM_NodeType! | |
# type_id is the identifier of the node type | |
# - "DEFAULT" for groups | |
# - not "DEFAULT" for the rest | |
node_type_id: ID! | |
# specifies the wifi profile for the node | |
profile: DM_NodeProfile! | |
# rollout_end: end of time range in which firmware upgrades and container are executed | |
rollout_end: DM_Time | |
# rollout_start: start of time range in which firmware and container upgrades are executed | |
rollout_start: DM_Time | |
update_config: Boolean! | |
uplinks: [DM_NodeUplink!]! | |
# specifies if this config inherits its properties | |
use_default: Boolean! | |
} | |
# describes how a device accesses networks and services | |
interface DM_NodeAccess { | |
access_id: DM_NodeAccessID! | |
name: String! | |
node_id: DM_NodeID! | |
type: DM_NodeAccess_Type! | |
} | |
# Bridge settings | |
type DM_NodeAccessBridge implements DM_NodeAccess { | |
access_id: DM_NodeAccessID! | |
name: String! | |
node_id: DM_NodeID! | |
type: DM_NodeAccess_Type! | |
} | |
# CloudNAT settings | |
type DM_NodeAccessCloudNAT implements DM_NodeAccess { | |
access_id: DM_NodeAccessID! | |
appliance: DM_Appliance! | |
name: String! | |
node_id: DM_NodeID! | |
# optional subnet, null means auto-assigned | |
subnet: DM_IPv4Subnet | |
type: DM_NodeAccess_Type! | |
uplink_id: DM_NodeUplinkID! | |
} | |
# DirectConnection settings | |
type DM_NodeAccessDirectConnection implements DM_NodeAccess { | |
access_id: DM_NodeAccessID! | |
loc_acct: Boolean! | |
name: String! | |
node_id: DM_NodeID! | |
type: DM_NodeAccess_Type! | |
uplink_id: DM_NodeUplinkID! | |
} | |
# represents an ID which identifies a node access, e.g. a VPN uplink. | |
scalar DM_NodeAccessID | |
# Multi-uplink settings | |
type DM_NodeAccessMultiUplink implements DM_NodeAccess { | |
access_id: DM_NodeAccessID! | |
appliance: DM_Appliance! | |
name: String! | |
node_id: DM_NodeID! | |
subnet: DM_IPv4Subnet | |
type: DM_NodeAccess_Type! | |
uplink_id: DM_NodeUplinkID! | |
} | |
# NAT settings | |
type DM_NodeAccessNAT implements DM_NodeAccess { | |
access_id: DM_NodeAccessID! | |
name: String! | |
node_id: DM_NodeID! | |
# optional subnet, null means auto-assigned | |
subnet: DM_IPv4Subnet | |
type: DM_NodeAccess_Type! | |
uplink_id: DM_NodeUplinkID! | |
} | |
# PortForward settings | |
type DM_NodeAccessPortForward implements DM_NodeAccess { | |
access_id: DM_NodeAccessID! | |
appliance: DM_Appliance! | |
name: String! | |
node_id: DM_NodeID! | |
type: DM_NodeAccess_Type! | |
uplink_id: DM_NodeUplinkID! | |
} | |
# Service settings | |
type DM_NodeAccessService implements DM_NodeAccess { | |
access_id: DM_NodeAccessID! | |
name: String! | |
node_id: DM_NodeID! | |
# subnet of the service, the subnet is autogenerated for a L3 service, and set to null for a L2 service | |
subnet: DM_IPv4Subnet | |
type: DM_NodeAccess_Type! | |
} | |
# VLAN settings | |
type DM_NodeAccessVLAN implements DM_NodeAccess { | |
access_id: DM_NodeAccessID! | |
loc_acct: Boolean! | |
name: String! | |
node_id: DM_NodeID! | |
# if loc_acct == true, appliance must be set | |
optional_appliance: DM_Appliance | |
type: DM_NodeAccess_Type! | |
uplink_id: DM_NodeUplinkID! | |
# optional vlan_id, null means untagged | |
vlan_id: Int | |
} | |
# VPN related settings | |
type DM_NodeAccessVPN implements DM_NodeAccess { | |
access_id: DM_NodeAccessID! | |
appliance: DM_Appliance! | |
filtered: Boolean! | |
name: String! | |
node_id: DM_NodeID! | |
type: DM_NodeAccess_Type! | |
uplink_id: DM_NodeUplinkID! | |
} | |
# An input describing a node access as part of the network config. | |
# | |
# Depending on the access_type, a different set of the optional fields is considered. | |
# See the enum docs for details. | |
input DM_NodeAccess_Input { | |
access_id: DM_NodeAccessID! | |
access_type: DM_NodeAccess_Type! | |
appliance_id: DM_ApplianceID | |
loc_acct: Boolean | |
# null means autoassigned | |
subnet: DM_IPv4Subnet | |
uplink_id: DM_NodeUplinkID | |
# 0 means untagged. value is checked against the allowed ranges on the node type. | |
vlan_id: Int | |
} | |
# Possible types for a node access. | |
# | |
# See the comments for which of the optional schema fields are considered optional or required on the input. | |
enum DM_NodeAccess_Type { | |
# no parameters | |
bridge | |
# the fields 'appliance_id' and 'uplink_id' are mandatory and the field 'subnet' is optional | |
cloud_nat | |
# the field 'uplink_id' is mandatory | |
direct_connection | |
# the fields 'appliance_id' and 'uplink_id' are mandatory and the field 'subnet' is optional | |
multi_uplink | |
# the field 'uplink_id' is mandatory and the field 'subnet' is optional | |
nat | |
# the fields 'appliance_id' and 'uplink_id' are mandatory | |
port_forward | |
# the field 'subnet' is optional | |
service | |
# the fields 'loc_acct' and 'uplink_id' are mandatory and the field 'vlan_id' is optional | |
# if 'loc_acct' is true, the field 'appliance_id' is mandatory' | |
vlan | |
# the fields 'appliance_id' and 'uplink_id' are mandatory | |
vpn | |
# the fields 'appliance_id' and 'uplink_id' are mandatory | |
vpn_filtered | |
} | |
interface DM_NodeHardware { | |
hardware_id: String! | |
hardware_type: DM_NodeHardwareType! | |
name: String! | |
node_id: ID! | |
} | |
type DM_NodeHardwareEthernet implements DM_NodeHardware { | |
hardware_id: String! | |
hardware_type: DM_NodeHardwareType! | |
name: String! | |
node_id: ID! | |
} | |
# represents an ID which identifies a node's hardware, e.g. eth0. | |
scalar DM_NodeHardwareID | |
type DM_NodeHardwareRadio implements DM_NodeHardware { | |
# either "auto" or an appropriate wifi channel (1-13 for 2.4GHz or 36-64 in increments of 4 for 5GHz) | |
channel: String! | |
hardware_id: String! | |
hardware_type: DM_NodeHardwareType! | |
name: String! | |
node_id: ID! | |
# numeric transmit power value. NULL or between 0 and 19. | |
power: Int | |
} | |
# The settings for a radio hardware. | |
input DM_NodeHardwareRadioSettings_Input { | |
# must be either "auto" or an appropriate channel (1-13 for 2.4GHz or 36-64 in increments of 4 for 5GHz) | |
channel: String! | |
hardware_id: DM_NodeHardwareID! | |
power: Int | |
} | |
enum DM_NodeHardwareType { | |
ethernet | |
radio24ghz | |
radio50ghz | |
wan | |
} | |
# represents an ID which identifies a node which in turn can be a device or a group. | |
scalar DM_NodeID | |
type DM_NodeLocation { | |
address: String | |
city: String | |
# comment about the node, can be used for anything | |
comment: String | |
# country is an ISO 3166-1 alpha-2 country code, i.e. exactly two capital letters | |
country: String! | |
floorplan_x: Int | |
floorplan_y: Int | |
info_url: String | |
latitude: Float | |
longitude: Float | |
node_id: ID! | |
zip: String | |
} | |
input DM_NodeLocation_Input { | |
address: String | |
city: String | |
# comment about the node, can be used for anything | |
# | |
# NOTE: | |
# - the comment needs to be empty by default | |
comment: String | |
# country is an ISO 3166-1 alpha-2 country code, i.e. exactly two capital letters | |
country: String! | |
floorplan_x: Int | |
floorplan_y: Int | |
info_url: String | |
latitude: Float | |
longitude: Float | |
zip: String | |
} | |
type DM_NodeNetwork { | |
access_id: DM_NodeAccessID! | |
active: Boolean! | |
active_from: DM_Time | |
active_to: DM_Time | |
client_separation: Boolean! | |
encryption: DM_Network_Encryption! | |
hardware_ids: [DM_NodeHardwareID!]! | |
loc_acct: Boolean! | |
max_clients: Int! | |
network_id: ID! | |
node_id: ID! | |
psk: String | |
ssid: String! | |
ssid_broadcast: Boolean! | |
vlan: Int | |
# Entries are only relevant if encryption is wpa2ccmp/802.1X | |
wpa2e_radacc: [DM_WPA2EConfig!]! | |
# Entries are only relevant if encryption is wpa2ccmp/802.1X | |
wpa2e_radauth: [DM_WPA2EConfig!]! | |
} | |
# represents an ID which identifies a node network which in turn could be e.g. a wireless network provided by the associated node/device. | |
scalar DM_NodeNetworkID | |
# An input describing a node network as part of the network config. | |
# | |
# 'active_from','active_to', 'client_separation', 'ssid_broadcast' and 'max_clients' are ignored on non-wifi networks. | |
# 'ssid' is mandatory as it is still used as the name for a non-wifi network. | |
# If 'encryption' is not 'none' and not 'wpa2ccmp', 'psk' is mandatory. | |
# If the network is a wifi network, the 'loc_acct' input value is ignored and always set to 'true'. | |
input DM_NodeNetwork_Input { | |
access_id: DM_NodeAccessID! | |
active: Boolean! | |
active_from: DM_Time | |
active_to: DM_Time | |
client_separation: Boolean | |
encryption: DM_Network_Encryption! | |
hardware_ids: [DM_NodeHardwareID!]! | |
loc_acct: Boolean | |
max_clients: Int | |
network_id: DM_NodeNetworkID! | |
psk: String | |
ssid: String! | |
ssid_broadcast: Boolean | |
vlan: Int | |
# Entries are only relevant if encryption is wpa2ccmp/802.1X | |
# Only the first entry in this list is currently supported, others will be ignored. | |
wpa2e_radacc: [DM_WPA2EConfigInput!] | |
# Entries are only relevant if encryption is wpa2ccmp/802.1X | |
# Only the first entry in this list is currently supported, others will be ignored. | |
wpa2e_radauth: [DM_WPA2EConfigInput!] | |
} | |
enum DM_NodeOnlineStatus { | |
applying_configuration | |
network_issues | |
offline | |
online | |
} | |
# the base wireless profile of a node | |
enum DM_NodeProfile { | |
high_density | |
standard | |
} | |
# DM_NodeService defines a (lxc) image which is used for creating service instances (containers) on a device. | |
type DM_NodeService { | |
access_gpsd_enabled: Boolean! | |
access_provided_subnet: String | |
container_image: String! | |
container_image_url: String! | |
container_version: String! | |
dhcp_lease_time_seconds: Int | |
dhcp_range: String | |
dhcp_range_template: String | |
environment_variables: String! | |
name: String! | |
node_service_id: DM_NodeServiceID! | |
provides_access: Boolean! | |
service_type: DM_NodeServiceType! | |
wipe_on_update: Boolean! | |
} | |
# represents an ID which identifies a node service which typically refers to a container image that can be executed on Unwired Cloud OS. | |
scalar DM_NodeServiceID | |
type DM_NodeServiceInstance { | |
access_id_provided: DM_NodeAccessID | |
access_id_used: DM_NodeAccessID! | |
config_mounts: [DM_NodeServiceInstanceConfigMount!]! | |
dhcp_range: String | |
group_service_instance_id: DM_GroupServiceInstanceID | |
node_id: DM_NodeID! | |
node_service: DM_NodeService! | |
node_service_instance_id: DM_NodeServiceInstanceID! | |
rollout_node_service_last_good: DM_NodeService! | |
rollout_state: DM_RolloutState! | |
rollout_timestamp_deploy: DateTime | |
rollout_timestamp_result: DateTime | |
} | |
type DM_NodeServiceInstanceConfigMount { | |
mode: Int! | |
mount_path: String! | |
node_service_instance_id: DM_NodeServiceInstanceID! | |
value_base64: String! | |
} | |
input DM_NodeServiceInstanceConfigMount_Input { | |
mode: Int! | |
mount_path: String! | |
value_base64: String! | |
} | |
# represents an ID which identifies a node service instance which refers to a container which is executed on Unwired Cloud OS. | |
scalar DM_NodeServiceInstanceID | |
# An input describing a node service instance as part of the network config. | |
# | |
# If a node_service_instance_id is set, the access IDs on that instance are updated. The node service ID is ignored. | |
# Otherwise (i.e. when the node_service_instance_id is missing), a new instance is created. In this case, the node service ID is required. | |
input DM_NodeServiceInstance_Input { | |
access_id_provided: DM_NodeAccessID | |
access_id_used: DM_NodeAccessID! | |
node_service_id: DM_NodeServiceID | |
node_service_instance_id: DM_NodeServiceInstanceID | |
} | |
enum DM_NodeServiceType { | |
container | |
} | |
input DM_NodeService_Input { | |
access_gpsd_enabled: Boolean! | |
access_provided_subnet: String | |
# if the instances created for this node service need an apikey, specify the roles it needs here. | |
apikey_roles: [DM_RoleName!] | |
container_image: String! | |
container_image_url: String! | |
container_version: String! | |
dhcp_lease_time_seconds: Int | |
dhcp_range: String | |
dhcp_range_template: String | |
environment_variables: String! | |
name: String! | |
provides_access: Boolean! | |
service_type: DM_NodeServiceType! | |
wipe_on_update: Boolean! | |
} | |
# node_settings as queried by the mtsg-cli | |
type DM_NodeSettingsResponse { | |
# the configured client network uplinks which are relevant for this MTSG device | |
accesses: [NodeAccess] | |
# timestamp of the last configuration change | |
changed: DateTime | |
# error of the operation, if any | |
error: DM_Error | |
# the ID of the node referenced by the given MAC address | |
node_id: ID | |
# WAN interface parameters | |
uplink: NodeUplink | |
} | |
# the deployment status of a node | |
enum DM_NodeStatus { | |
disabled | |
enabled | |
planning | |
waiting | |
} | |
# a nodes type configuration (network interfaces) | |
type DM_NodeType { | |
default_version_target_selector: String | |
ethernet: [DM_NodeHardwareID!]! | |
gpio_ports: [String!]! | |
name: String! | |
node_type_id: DM_NodeTypeID! | |
radio24ghz: [DM_NodeHardwareID!]! | |
radio50ghz: [DM_NodeHardwareID!]! | |
supports_services: Boolean! | |
vlan_ranges: DM_VLANRanges! | |
wan: DM_NodeHardwareID | |
} | |
# represents an ID which identifies the type of a given node, e.g. a Cloud GateWay (CGW) | |
scalar DM_NodeTypeID | |
input DM_NodeType_Input { | |
default_rollout_end: DM_Time | |
default_rollout_start: DM_Time | |
default_version_target_selector: String | |
ethernet: [DM_NodeHardwareID!] | |
gpio_ports: [String!] | |
name: String! | |
radio24ghz: [DM_NodeHardwareID!] | |
radio50ghz: [DM_NodeHardwareID!] | |
supports_services: Boolean! | |
vlan_ranges: DM_VLANRanges! | |
wan: DM_NodeHardwareID | |
} | |
interface DM_NodeUplink { | |
hardware_id: String | |
name: String! | |
node_id: ID! | |
uplink_id: ID! | |
wantype: DM_NodeUplinkWanType! | |
} | |
type DM_NodeUplinkDHCPClient implements DM_NodeUplink { | |
hardware_id: String | |
name: String! | |
node_id: ID! | |
uplink_id: ID! | |
wantype: DM_NodeUplinkWanType! | |
} | |
# represents an ID which identifies a node uplink which in turn could be an uplink with IP settings provided by a DHCP server. | |
scalar DM_NodeUplinkID | |
type DM_NodeUplinkStaticIPv4 implements DM_NodeUplink { | |
hardware_id: String | |
name: String! | |
node_id: ID! | |
uplink_id: ID! | |
wan_dns_servers: [DM_IPv4Address] | |
wan_gateway: DM_IPv4Address | |
wan_ipv4_network: DM_IPv4Subnet | |
wantype: DM_NodeUplinkWanType! | |
} | |
# hardware interface types | |
enum DM_NodeUplinkWanType { | |
WAN_dhcp_client | |
WAN_static_ipv4 | |
} | |
# An input describing a node uplink as part of the network config. | |
# | |
# If the wantype is WAN_dhcp_client, the fields wan_ipv4_network, wan_gateway, and wan_dns_servers are ignored. | |
# Otherwise (i.e. type WAN_static_ipv4), they are required. | |
input DM_NodeUplink_Input { | |
uplink_id: DM_NodeUplinkID! | |
wan_dns_servers: [DM_IPv4Address!] | |
wan_gateway: DM_IPv4Address | |
wan_ipv4_network: DM_IPv4Subnet | |
wantype: DM_NodeUplinkWanType! | |
} | |
# An input describing a node's network config. | |
input DM_Node_NetworkConfig_Input { | |
accesses: [DM_NodeAccess_Input!] | |
networks: [DM_NodeNetwork_Input!] | |
node_id: DM_NodeID! | |
node_service_instances: [DM_NodeServiceInstance_Input!] | |
# currently, a valid node network config needs EXACTLY ONE uplink. | |
# the field is a list for future extensibility. when it is longer than one, behaviour is UNDEFINED. | |
uplinks: [DM_NodeUplink_Input!]! | |
} | |
# A list of DM_Node_NetworkConfig_Input. | |
# This type only exists because directives on top-level input objects are not yet supported by gqlgen. | |
input DM_Node_NetworkConfig_Inputs { | |
inputs: [DM_Node_NetworkConfig_Input!] | |
} | |
# this is the base interface for all device events | |
interface DM_ReportingDeviceEvent { | |
datetime: DateTime! | |
type: DM_DeviceEventType! | |
} | |
# this event type describes the online/offline status of a device, not its uplink, it has no other properties | |
type DM_ReportingDeviceEventDeviceOnline implements DM_ReportingDeviceEvent { | |
datetime: DateTime! | |
type: DM_DeviceEventType! | |
} | |
# this is a list of events per device | |
type DM_ReportingDeviceEvents { | |
events: [DM_ReportingDeviceEvent!]! | |
mac: DM_Mac! | |
} | |
# this is a response status for a device (e.g. unknown device) | |
type DM_ReportingDeviceResponseStatus { | |
mac: DM_Mac! | |
status: DM_ReportingDeviceResponseStatusCode! | |
} | |
# this is a response status code (e.g. unknown device) | |
enum DM_ReportingDeviceResponseStatusCode { | |
device_unknown | |
} | |
# response for online heartbeat results, compatible to online heartbeat results | |
# | |
# NOTE: | |
# - devices is null on error | |
# - error is null on success | |
type DM_ReportingHeartbeatOfflineResponse { | |
device_errors: [DM_ReportingDeviceResponseStatus!] | |
devices: [DM_ReportingDeviceEvents!] | |
} | |
# response for online heartbeat results | |
# | |
# NOTE: | |
# - devices is null on error | |
# - error is null on success | |
type DM_ReportingHeartbeatOnlineResponse { | |
device_errors: [DM_ReportingDeviceResponseStatus!] | |
devices: [DM_ReportingDeviceEvents!] | |
} | |
scalar DM_RoleName | |
enum DM_RolloutState { | |
failed | |
in_progress | |
ok | |
rollback_failed | |
rollback_in_progress | |
rollback_ok | |
} | |
# represents an instant in time in the format hh:dd:ss, e.g. 23:15:10. | |
scalar DM_Time | |
# time_span are defined with a start and an end | |
input DM_TimeSpan { | |
end: DM_Time! | |
start: DM_Time! | |
} | |
# ranges of valid vlan IDs on accesses of type VLAN. | |
# valid values are single IDs (e.g. "3"), the start and end of a range divided by a "-" (e.g. "3-12"), | |
# or a comma-separated combination of those (e.g. 3,5-10). | |
# "0" denotes "untagged". | |
scalar DM_VLANRanges | |
# Represents a (radius) config used for WPA2-Enterprise encryption | |
type DM_WPA2EConfig { | |
ip: DM_IPv4Address! | |
key: String! | |
port: Int! | |
} | |
input DM_WPA2EConfigInput { | |
ip: DM_IPv4Address! | |
key: String! | |
port: Int! | |
} | |
scalar DateTime | |
# Contains all available Email CIDs (Campain IDs) for a given customer. | |
type EmailCIDsResponse implements Response { | |
email_cids: [String] | |
error: Error | |
} | |
type EmergencyRequestReason { | |
reason: String | |
reason_lang: [Translatable] | |
} | |
input EmergencyRequestReasonInput { | |
reason: [TranslatableInput] | |
} | |
enum EmergencyRequestStatus { | |
confirmed | |
delivered | |
requested | |
} | |
type EmergencyRequestWidget implements Widget { | |
anchor: Anchor | |
date_created: DateTime! | |
date_updated: DateTime! | |
disclaimer: String | |
disclaimer_lang: [Translatable] | |
enable_anchor: Boolean | |
meta_data: EmergencyRequestWidgetMetaData | |
page_id: ID! | |
position: Int! | |
reasons: [EmergencyRequestReason!] | |
status: EmergencyRequestStatus | |
widget_id: ID! | |
} | |
input EmergencyRequestWidgetInput { | |
anchor: AnchorInput | |
disclaimer: [TranslatableInput] | |
enable_anchor: Boolean | |
meta_data: EmergencyRequestWidgetMetaDataInput | |
page_id: ID! | |
reasons: [EmergencyRequestReasonInput] | |
} | |
type EmergencyRequestWidgetMetaData { | |
target_topic: String | |
} | |
input EmergencyRequestWidgetMetaDataInput { | |
target_topic: String | |
} | |
type EmptyResponse implements Response { | |
error: Error | |
} | |
type Error { | |
current_value_bytes: BigInt | |
current_value_seconds: BigInt | |
error_code: ErrorCodes | |
error_message: String | |
max_value_bytes: BigInt | |
max_value_seconds: BigInt | |
} | |
enum ErrorCodes { | |
BAD_INPUT | |
DAILY_DOWNLOAD_LIMIT_REACHED | |
DAILY_SESSION_TIME_EXCEEDED | |
DAILY_UPLOAD_LIMIT_REACHED | |
INTERNAL_SERVER_ERROR | |
INVALID | |
INVALID_CUSTOMER | |
INVALID_GROUP_ALREADY_IN_USE | |
INVALID_USER_SESSION_ID | |
INVALID_WIDGET_ID | |
NOT_AUTHORIZED | |
NOT_AUTHORIZED_CODE | |
NOT_FOUND | |
NOT_FOUND_AP_MAC | |
NOT_FOUND_CODE | |
RATE_LIMIT_REACHED | |
RESOURCES_STILL_REFERENCED | |
SEND_SMS_FAILED | |
SPLASHPAGE_REFERENCED_BY_GROUPS | |
} | |
# EthernetSettings referenced by a NodeNetwork | |
type EthernetSettings { | |
# an optional VLAN ID if VLAN tagging should be used (range: 0 to 4095) | |
vlan: Int | |
} | |
# A email address (lead) collected from the (lead-collection) connect widget with additional meta data information. | |
type ExportEmail { | |
ap_mac: String | |
country: String | |
date_created: DateTime | |
email: String! | |
email_cid: String | |
language: String | |
usages: [ExportEmailUsage] | |
} | |
type ExportEmailUsage { | |
collection_id: String | |
collection_terms: String | |
} | |
type ExportEmailsResponse implements Response { | |
emails: [ExportEmail] | |
error: Error | |
} | |
# This type reports user sessions that failed in the sync back to | |
# the sync client | |
type FailedUserSessionSync { | |
client_mac: String! | |
error_code: UserSessionSyncErrorCode! | |
} | |
type FeedConfig { | |
auth_type: AuthType! | |
last_feed_log: String | |
last_process_id: String | |
password: String | |
update_interval: Int | |
url: String! | |
username: String | |
} | |
# Can be updated per attribute. | |
input FeedConfigInput { | |
auth_type: AuthType | |
last_feed_log: String | |
last_process_id: String | |
# If sending within a feed config array, the operation defines the operation applied to the element. | |
operation: FeedConfigInputOperation | |
password: String | |
update_interval: Int | |
url: String | |
username: String | |
} | |
enum FeedConfigInputOperation { | |
delete | |
insert | |
log | |
upsert | |
} | |
type FeedOverviewResponse implements Response { | |
error: Error | |
feed_overview_widgets: [FeedOverviewWidget] | |
} | |
type FeedOverviewWidget { | |
customer: Customer | |
feed_config: FeedConfig | |
page: Page | |
splashpage: SplashpageShort | |
widget: Widget | |
} | |
type FeedWidget { | |
applicable_ap_macs: [String]! | |
customer_id: ID! | |
feed_config: FeedConfig! | |
splashpage_default_lang: String! | |
splashpage_id: ID! | |
splashpage_supported_lang: [String]! | |
widget: Widget! | |
} | |
type FeedWidgetResponse implements Response { | |
error: Error | |
user_session_id: ID | |
widget: Widget | |
} | |
type FeedWidgetsResponse implements Response { | |
error: Error | |
widgets: [FeedWidget] | |
} | |
type File { | |
autoclean: Boolean! | |
byte_file_size: String! | |
customer_id: ID! | |
date_created: String! | |
etag: String | |
filename: String! | |
height: Int | |
mimetype: String! | |
original: Boolean! | |
original_url: String | |
previews: [Preview] | |
resource_id: ID! | |
title: String | |
url: String! | |
width: Int | |
} | |
type GeoFeedPoint { | |
icon_url: String | |
icon_width: Int | |
lat: Float! | |
long: Float! | |
text: String | |
text_lang: [Translatable] | |
} | |
input GeoFeedPointInput { | |
icon_url: String | |
icon_width: Int | |
lat: Float! | |
long: Float! | |
text: [TranslatableInput] | |
} | |
type Group { | |
assigned_splashpage_title: String | |
group_id: Int! | |
name: String! | |
parent_id: Int | |
} | |
enum GroupReportType { | |
advanced | |
basic | |
} | |
type GroupsResponse implements Response { | |
error: Error | |
groups: [Group] | |
} | |
# Interfaces referenced by a NodeNetwork | |
type Interfaces { | |
# if "eth1" specifies that this client network is supposed to be available on the secondary | |
ethernet_secondary: String | |
# if "radio0" specifies that this client network is supposed to be available on the 2.4GHz wifi radio | |
radio24ghz: String | |
# if "radio1" specifies that this client network is supposed to be available on the 5GHz wifi radio | |
radio50ghz: String | |
} | |
type IsActiveUserSessionResponse implements Response { | |
error: Error | |
is_active_user_session: Boolean | |
} | |
type IsValidUserSessionResponse implements Response { | |
error: Error | |
valid: Boolean | |
} | |
input JourneyInfoByApsResponseInput { | |
aps: [String]! | |
journey: String! | |
} | |
input JourneyInfoJsonFromFeedInput { | |
by_aps_responses: [JourneyInfoByApsResponseInput] | |
} | |
input JourneyInfoMetaDataInput { | |
feed_config: FeedConfigInput | |
target_topic: String | |
variant: String | |
} | |
type JourneyInfoWidget implements Widget { | |
anchor: Anchor | |
date_created: DateTime! | |
date_updated: DateTime! | |
enable_anchor: Boolean | |
hold_text: String | |
hold_text_lang: [Translatable] | |
is_ready: Boolean | |
json: String | |
meta_data: JourneyInfoWidgetMetaData | |
page_id: ID! | |
position: Int! | |
update_interval: Int | |
variant: String | |
widget_id: ID! | |
} | |
input JourneyInfoWidgetInput { | |
anchor: AnchorInput | |
enable_anchor: Boolean | |
hold_text: [TranslatableInput] | |
json_from_feed: JourneyInfoJsonFromFeedInput | |
meta_data: JourneyInfoMetaDataInput | |
page_id: ID | |
update_interval: Int | |
variant: String | |
} | |
type JourneyInfoWidgetMetaData { | |
feed_config: FeedConfig | |
target_topic: String | |
variant: String | |
} | |
enum LogLevel { | |
error | |
warn | |
} | |
type LoginMethodPolicy { | |
login_method: String! | |
network_user_policy_id: String! | |
} | |
input LoginMethodPolicyInput { | |
login_method: String! | |
network_user_policy_id: String! | |
} | |
type LoginMethodPolicyResponse implements Response { | |
error: Error | |
login_method_policies: [LoginMethodPolicy] | |
} | |
input MovingMapMetaDataInput { | |
feed_config: FeedConfigInput | |
geo_feed_configs: [FeedConfigInput!] | |
} | |
type MovingMapWidget implements Widget { | |
anchor: Anchor | |
date_created: DateTime! | |
date_updated: DateTime! | |
enable_anchor: Boolean | |
geo_points: [GeoFeedPoint!] | |
icon: String | |
is_ready: Boolean | |
json: String | |
meta_data: MovingMapWidgetMetaData | |
page_id: ID! | |
position: Int! | |
update_interval: Int | |
widget_id: ID! | |
} | |
input MovingMapWidgetInput { | |
anchor: AnchorInput | |
enable_anchor: Boolean | |
geo_points: [GeoFeedPointInput] | |
icon: String | |
json_from_feed: JourneyInfoJsonFromFeedInput | |
meta_data: MovingMapMetaDataInput | |
page_id: ID | |
} | |
type MovingMapWidgetMetaData { | |
feed_config: FeedConfig | |
geo_feed_configs: [FeedConfig!] | |
} | |
type Mutation { | |
# adds an admin user to a customer | |
# Through this, an admin user gains access to the customer related actions and entities | |
# | |
# NOTES: | |
# - returns false on error | |
Authz_add_admin_user_to_customer( | |
customer_id: ID! | |
roles: [Authz_RoleName!]! | |
user_id: ID! | |
): Boolean! | |
# Adds a group to a customer. | |
Authz_add_group_to_customer(customer_id: ID!, group_id: ID!): Boolean! | |
# Log into Unwired Edge Cloud Console. | |
Authz_admin_login(email: String!, password: String!): Authz_LoginResponse | |
# invalidate login cookie | |
Authz_admin_logout: Boolean! | |
Authz_admin_token_login(token: String!): Authz_LoginResponse | |
# Changes password for your own account. | |
Authz_change_password( | |
new_password: String! | |
new_password_verified: String! | |
old_password: String! | |
): Boolean! | |
# Changes password with a challenge token. | |
Authz_change_password_by_challenge( | |
challenge: String! | |
new_password: String! | |
new_password_verified: String! | |
): Boolean! | |
# Change password for another user which is only allowed if you have authoritive access for the given user. | |
Authz_change_password_for_user(email: String!, password: String!): Boolean! | |
# Creates a user with a given input. | |
Authz_create_admin_user(input: Authz_CreateAdminUser_Input!): Authz_AdminUser | |
# Creates a user with a given input and password. The mutation is only allowed if the request has authoritive ownership of users (e.g. authentication provider). | |
# You should not provide a password if it is a social login, otherwise it is mandatory. | |
Authz_create_admin_user_with_defaults( | |
input: Authz_CreateAdminUser_Input! | |
password: String | |
social: Boolean! | |
): Authz_AdminUser | |
# Creates an apikey with the given parameters, and returns it. | |
# Note that after this creation call the returned key data is not accessible any longer, as it is not saved in plain text. | |
Authz_create_apikey( | |
customer_id: ID! | |
# this parameter only exists for compatibility with older API versions. | |
# it is ignored, as it is not possible to create internal apikeys. | |
internal: Boolean | |
name: String! | |
roles: [Authz_RoleName!] | |
): Authz_Apikey | |
Authz_create_customer(input: Authz_Customer_Input!): Authz_Customer | |
# Creates an invite and send it to the given email address. If the email address exists in our system, invitation flow will be skipped | |
# and Authz_create_policy_user will be used instead. | |
Authz_create_invite( | |
customer_id: Authz_CustomerID! | |
email: String! | |
roles: [Authz_RoleName!]! | |
): Authz_Invite | |
# Deletes the user with the given ID. | |
# Only users with the privilege 'all customers' can delete users other than themselves. | |
Authz_delete_admin_user(user_id: Authz_AdminUserID!): Boolean! | |
# removes an admin user from a customer | |
# Through this, an admin user loses access to the customer related actions and entities | |
# | |
# NOTES: | |
# - returns false on error | |
Authz_delete_admin_user_from_customer( | |
customer_id: ID! | |
user_id: ID! | |
): Boolean! | |
Authz_delete_customer(customer_id: ID!): Boolean! | |
# Removes a group from a customer. | |
Authz_delete_group_from_customer(customer_id: ID!, group_id: ID!): Boolean! | |
# Updates the user specified by the given ID from the given input. | |
# Only users with the privilege 'all customers' can edit users other than themselves | |
Authz_edit_admin_user( | |
input: Authz_EditAdminUser_Input! | |
user_id: Authz_AdminUserID! | |
): Authz_AdminUser | |
# Redeems the invite with the logged in user. Creates a user policy from the invite and revokes the invite afterwards. | |
Authz_redeem_invite(token: String!): Boolean! | |
# Requests a new password challenge token to a given email address. | |
Authz_request_password_challenge(email: String!): Boolean! | |
# Resends the email verification notification. | |
Authz_resend_email_verfication: Boolean! | |
# Revoke an apikey. | |
Authz_revoke_apikey(apikey_id: ID!): Boolean! | |
# Revokes an invite, so the link with the token won't be valid anymore. | |
Authz_revoke_invite(invite_id: Authz_InviteID!): Boolean! | |
# Sets the roles on the apikey for the customer it belongs to, overwriting the previous assignments. | |
# | |
# The calling identity cannot hand out a role it does not have. | |
Authz_set_apikey_roles( | |
apikey_id: Authz_ApikeyID! | |
roles: [Authz_RoleName!]! | |
): Boolean! | |
# Sets the roles on the user for the customer, overwriting the previous assignments. | |
# | |
# The calling identity cannot hand out a role it does not have. | |
Authz_set_user_roles( | |
customer_id: Authz_CustomerID! | |
roles: [Authz_RoleName!]! | |
user_id: Authz_AdminUserID! | |
): Boolean! | |
Authz_update_customer( | |
customer_id: ID! | |
input: Authz_Customer_Input! | |
): Authz_Customer | |
# Updates the user ui settings | |
Authz_update_ui_settings(ui_settings: SimpleJSON!): Boolean! | |
# Marks a given user email address as verified. | |
Authz_verify_email_for_user(email: String!): Boolean | |
# Create a node service from the input, and return the created node service. | |
DM_add_node_service(input: DM_NodeService_Input!): DM_NodeService! | |
# Create a node service instance from the input, and return the created node service. | |
DM_add_node_service_instance( | |
access_id_used: DM_NodeAccessID! | |
config_mounts: [DM_NodeServiceInstanceConfigMount_Input!] | |
node_id: DM_NodeID! | |
node_service_id: DM_NodeServiceID! | |
): DM_NodeServiceInstance! | |
# batch heartbeat API | |
# | |
# NOTE: | |
# - source defines where the heartbeat came from | |
# - macs is a list of MAC addresses, that are proven to be alive at the time this function is executed | |
# - this operation is all or nothing at all, returns true on success | |
DM_batch_device_heartbeat( | |
macs: [DM_Mac!]! | |
source: DM_DeviceHeartbeatSource! | |
): Boolean! | |
# for each node given by node_ids, sets the appliance of all accesses of a type given in types to appliance_id. | |
# additionally, it changes the type of all touched accesses to the type given by the new appliance (i.e. filtered or non-filtered). | |
# | |
# if an access is configured with an mts appliance and the new appliance is non-mts (or vice versa), the access is not changed. | |
# | |
# returns whether anything was changed, which can be false if the nodes do not have an access of any of the given types, | |
# or none of them match the new appliance on the mts property. | |
DM_change_nodes_appliance( | |
appliance_id: DM_ApplianceID! | |
node_ids: [DM_NodeID!]! | |
types: [DM_NodeAccess_Type!]! | |
): Boolean! | |
# Converts a group to a root group of a given customer (by customer_id). | |
# This means the parent group is removed and the group will not derive config | |
# anymore, or technically use_default will be set to 0 automatically. | |
# Can also be used to move a group to another customer. | |
DM_convert_to_root_group( | |
customer_id: DM_CustomerID! | |
group_id: DM_GroupID! | |
): Boolean! | |
# copy over specific parts of a configuration from one node to another | |
# | |
# NOTE: | |
# - this mutation will skip any node that is inheriting settings (use_default = true) | |
# - source_node_id can be a device node_id or the default_config node_id of a group | |
# - returns null on error | |
DM_copy_node_configuration( | |
source_node_id: DM_NodeID! | |
target_macs: [DM_Mac!] | |
target_node_ids: [DM_NodeID!] | |
what: DM_CopyConfigurationSelector_Input! | |
): [DM_Node!] | |
# creates new devices | |
# | |
# NOTES: | |
# - returns null on error | |
# - BadInputError can have validation errors set in the error extensions: { validations: { duplicated_macs: [] } } | |
DM_create_devices(devices_input: DM_Devices_Input!): [DM_Device!] | |
# Creates a new firmware version | |
DM_create_firmware_version( | |
branch: String! | |
build: Int! | |
tag: String | |
): DM_FirmwareVersion! | |
# create new groups for a specific customer | |
# | |
# NOTES: | |
# - all newly created groups need to be assigned to a customer | |
# - this operation is all or nothing at all, returns null on error | |
DM_create_groups( | |
customer_id: DM_CustomerID! | |
groups_input: [DM_Group_Input!]! | |
): [DM_Group!] | |
# Create a node_type. | |
# "input" argument must be complete, missing values will be set to null. | |
DM_create_node_type( | |
input: DM_NodeType_Input! | |
node_type_id: DM_NodeTypeID! | |
): DM_NodeType! | |
# Delete a node service. True on success, false on failure. | |
DM_del_node_service(id: DM_NodeServiceID!): Boolean! | |
# Delete a node service instance. True on success, false on failure. | |
DM_del_node_service_instance(id: DM_NodeServiceInstanceID!): Boolean! | |
# Soft deletes the nodes with the given IDs and all its dependent types. | |
DM_delete_nodes(node_ids: [DM_NodeID!]): Boolean! | |
# Move devices to a given group. Devices can be selected both by their node_id as well as their MAC address (union). | |
# | |
# PARAMS: | |
# - target_group_id: the group ID of the target group | |
# - node_ids: nodes to move (ID) | |
# - macs: nodes to move (MAC) | |
# | |
# RETURNS: | |
# - moved devices (null on error) | |
# | |
# NOTES: | |
# - This will move the devices, regenerate the node configuration and refresh inheritance | |
DM_move_devices( | |
macs: [DM_Mac!] | |
node_ids: [DM_NodeID!] | |
target_group_id: DM_GroupID! | |
): [DM_Device!] | |
# move a group tree to another parent | |
# | |
# This will regenerate the device configuration of all devices affected and refresh inheritance for all groups and devices in the sub-tree. | |
# It will return the updated source group | |
# | |
# NOTES: | |
# - returns null on error | |
DM_move_group( | |
source_group_id: DM_GroupID! | |
target_group_id: DM_GroupID! | |
): DM_Group | |
# regenerate the device configuration of a list of node_ids (device or group_config) or macs (device). | |
# node_id of group_config regenerates all the children of the group tree | |
# | |
# NOTE: | |
# - this function is not fast and should be called only when necessary from UI interactions (and with a progress indicator) | |
# - returns null on error | |
DM_regenerate_node_configurations( | |
macs: [DM_Mac!] | |
node_ids: [DM_NodeID!] | |
): [DM_Node!] | |
# Resets the rollout_state of given device | |
# node_id or mac must be set, mac will be ignored if node_id is set | |
DM_reset_device_rollout_state(mac: DM_Mac, node_id: DM_NodeID): Boolean! | |
# Sets the given tag to a specific firmware version | |
# if the given tag is already set it will be deleted first then the new tag will be set to the given branch/build | |
DM_set_firmware_version_tag( | |
branch: String! | |
build: Int! | |
tag: String! | |
): DM_FirmwareVersion! | |
# Set the node service instance's node service to the given ID, triggering an upgrade or rollback. | |
# Making sure the change is compatible and that it's just a different version of the same node service (container name) is up to the client. | |
DM_set_node_service_instance_target_version( | |
clear_persistent_storage: Boolean! | |
id: DM_NodeServiceInstanceID! | |
target_version: DM_NodeServiceID! | |
): DM_NodeServiceInstance! | |
# saves the given devices' base configs, regenerates the device configuration and returns the updated view. | |
DM_update_device_base_configs( | |
inputs: [DM_Device_BaseConfig_Input!]! | |
): [DM_Device!] | |
# Sets the rollout state for a device. | |
DM_update_device_rollout_state( | |
id: DM_NodeID! | |
state: DM_RolloutState! | |
timestamp_deploy: DateTime | |
timestamp_result: DateTime | |
version_last_good: String! | |
): Boolean! | |
# saves the given group configs' base configs, regenerates the device configuration of all inheriting devices and returns the updated view. | |
DM_update_group_config_base_configs( | |
inputs: [DM_GroupConfig_BaseConfig_Input!]! | |
): [DM_GroupConfig!] | |
# update a group's name | |
DM_update_group_name(group_id: DM_GroupID!, name: String!): DM_Group | |
# saves the given nodes' network configs, regenerates the device configs and returns the updated view. | |
# if a node is a group config, the network configuration is also copied to inheriting devices and their configs also regenerated. | |
# | |
# this mutation wipes the existing network config and completely recreates it from the input, except for node service instances. | |
# see the input type docs for details. | |
DM_update_node_network_configs( | |
input: DM_Node_NetworkConfig_Inputs! | |
): [DM_Node!] | |
# Update the rollout config for nodes. | |
# If the node is a device and does not inherit the config. Allowed updates: version_target_selector and time span. | |
# If the node is a device and does inherit the config. Allowed updates: version_target_selector. | |
# If the node is a group config and does not inherit the config. Allowed updates: time_span. | |
# If the node is a group config and does inherit the config. Allowed updates: nothing. | |
# If One of the given node_ids/macs or group_ids violate the above rules an BadInputError is returned and nothing is updated. | |
# | |
# PARAMS: | |
# - node_ids: unique identifier of the given devices | |
# - macs: mac of given devices | |
# - group_ids: unique identifier of the given groups | |
# - version_target_selector: tag or branch of the firmware to follow examples: "branch:19.07", "version:19.07-80", "tag:stable", "disabled" | |
# - time_span: with start and end time | |
# | |
# RETURNS: | |
# - success indicator | |
DM_update_node_rollout_config( | |
group_ids: [DM_GroupID!] | |
macs: [DM_Mac!] | |
node_ids: [DM_NodeID!] | |
time_span: TimeSpanOptional | |
version_target_selector: StringOptional | |
): Boolean! | |
# Sets the config mounts for a node service instance. | |
DM_update_node_service_instance_config_mounts( | |
config_mounts: [DM_NodeServiceInstanceConfigMount_Input!]! | |
id: DM_NodeServiceInstanceID! | |
): Boolean! | |
# Sets the rollout state for a node service instance. | |
DM_update_node_service_instance_rollout_state( | |
id: DM_NodeServiceInstanceID! | |
state: DM_RolloutState! | |
timestamp_deploy: DateTime | |
timestamp_result: DateTime | |
version_last_good: DM_NodeServiceID! | |
): Boolean! | |
# Update node_type rollout configuration. | |
# | |
# PARAMS: | |
# - node_type_id: unique identifier of the given node_type | |
# - version_target_selector: tag or branch of the firmware to follow examples: "branch:19.07", "version:19.07-80", "tag:stable", "disabled" | |
# - time_span: with start and end time | |
# | |
# RETURNS: | |
# - success indicator | |
DM_update_node_type_rollout_config( | |
node_type_id: DM_NodeTypeID! | |
time_span: TimeSpanOptional | |
version_target_selector: StringOptional | |
): Boolean! | |
# Generates a report for a given group id, year, month and report type. | |
# This will send a email including the report to the authenticated user when the generation is finished. | |
Reporting_generate_reports( | |
group_id: ID! | |
month: Int! | |
type: GroupReportType! | |
year: Int! | |
): Reporting_GenerateReportsResponse | |
# Assigns a splashpage to group. All descendant groups without an assigned splashpage will be affected. | |
add_group_to_splashpage(group_id: Int!, splashpage_id: String!): EmptyResponse | |
add_splashpage_sharing(customer_id: ID!, splashpage_id: ID!): Boolean | |
# Logs an frontend error to the API. | |
admin_log(input: AdminLogInput!): EmptyResponse | |
auth_challenge_sms( | |
phone_number: String! | |
user_session_id: ID! | |
widget_id: ID! | |
): EmptyResponse | |
client_connect( | |
code: String | |
input: ConnectInput | |
login_method: String | |
user_agent_country: String | |
user_agent_lang: String | |
user_session_id: ID! | |
widget_id: ID | |
): UserSessionIdResponse | |
client_logout(user_session_id: ID!): UserSessionIdResponse | |
copy_resources_to_customer( | |
customer_id: String! | |
resource_ids: [String!] | |
): CopyResourcesResponse | |
copy_splashpage( | |
customer_id_destination: ID | |
splashpage_id: ID! | |
): SplashpageResponse | |
copy_widget( | |
language: String | |
page_id_destination: ID! | |
widget_id_source: ID! | |
): WidgetResponse | |
# Create a new Network User Policy. | |
create_network_user_policy( | |
input: NetworkUserPolicyInput! | |
): NetworkUserPolicyResponse | |
create_page( | |
input: PageInput! | |
language: String | |
splashpage_id: ID! | |
): PageResponse | |
create_snippet(input: SnippetInput!): SnippetResponse | |
create_splashpage( | |
customer_id: ID! | |
input: SplashpageInput! | |
language: String | |
): SplashpageResponse | |
create_widget( | |
campaign_input: CampaignWidgetInput | |
connect_input: ConnectWidgetInput | |
emergency_request_input: EmergencyRequestWidgetInput | |
journey_info_input: JourneyInfoWidgetInput | |
language: String | |
moving_map_input: MovingMapWidgetInput | |
simple_text_input: SimpleTextWidgetInput | |
structured_text_input: StructuredTextWidgetInput | |
support_form_input: SupportFormWidgetInput | |
support_info_input: SupportInfoWidgetInput | |
wifi4EU_input: Wifi4EUWidgetInput | |
): WidgetResponse | |
# Unassign a group from a splashpage. | |
delete_group_from_splashpage(group_id: Int!): EmptyResponse | |
# Delete a given Network User Policy. | |
delete_network_user_policy(network_user_policy_id: ID!): EmptyResponse | |
delete_page(page_id: ID!): EmptyResponse | |
delete_resource(resource_id: ID!): EmptyResponse | |
delete_snippet(snippet_id: ID!): EmptyResponse | |
delete_splashpage(splashpage_id: ID!): EmptyResponse | |
delete_widget(widget_id: ID!): EmptyResponse | |
generate_preview(height: Int, resource_id: ID!, width: Int): ResourceResponse | |
health_mutation_remote_api: Boolean | |
health_mutation_resource_api: Boolean | |
move_page(from: Int!, id: ID!, language: String, to: Int!): PagesResponse | |
move_widget(from: Int!, id: ID!, language: String, to: Int!): WidgetsResponse | |
remove_splashpage_sharing(customer_id: ID!, splashpage_id: ID!): Boolean | |
request_emergency( | |
phone_number: String | |
user_session_id: ID! | |
widget_id: ID! | |
): EmptyResponse | |
request_hold( | |
hold: RequestHoldInput! | |
user_session_id: ID! | |
widget_id: ID! | |
): EmptyResponse | |
session_sync( | |
ap_mac: String! | |
input: UserSessionsSyncInput! | |
server_mac: String! | |
): UserSessionsSyncResponse | |
splashpage_log(input: SplashpageLogInput!, user_session_id: ID): EmptyResponse | |
store_resource( | |
autoclean: Boolean! | |
customer_id: ID! | |
etag: String | |
file: Upload! | |
original_url: String | |
title: String | |
): ResourceResponse | |
support_form_submit( | |
input: SupportFormSubmitInput! | |
user_session_id: ID! | |
widget_id: ID! | |
): EmptyResponse | |
# Update a given Network User Policy. | |
update_network_user_policy( | |
input: NetworkUserPolicyUpdateInput! | |
network_user_policy_id: ID! | |
): NetworkUserPolicyResponse | |
update_page(input: PageInput!, language: String, page_id: ID!): PageResponse | |
update_snippet(input: SnippetInput!, snippet_id: ID!): SnippetResponse | |
update_splashpage( | |
customer_id: ID | |
input: SplashpageInput! | |
language: String | |
splashpage_id: ID! | |
): SplashpageResponse | |
update_widget( | |
campaign_input: CampaignWidgetInput | |
connect_input: ConnectWidgetInput | |
emergency_request_input: EmergencyRequestWidgetInput | |
journey_info_input: JourneyInfoWidgetInput | |
language: String | |
moving_map_input: MovingMapWidgetInput | |
simple_text_input: SimpleTextWidgetInput | |
structured_text_input: StructuredTextWidgetInput | |
support_form_input: SupportFormWidgetInput | |
support_info_input: SupportInfoWidgetInput | |
widget_id: ID! | |
wifi4EU_input: Wifi4EUWidgetInput | |
): WidgetResponse | |
user_session_accounting( | |
input: UserSessionAccountingBatchInput! | |
): EmptyResponse | |
} | |
type NetworkUserPoliciesResponse implements Response { | |
error: Error | |
network_user_policies: [NetworkUserPolicy] | |
} | |
type NetworkUserPolicy { | |
accounting_interval: Int! | |
daily_max_mbytes_down: Int | |
daily_max_mbytes_up: Int | |
daily_max_session_time: Int | |
max_bandwidth_down: Int! | |
max_bandwidth_up: Int! | |
max_mbytes_down: Int | |
max_mbytes_up: Int | |
max_pause_time: Int! | |
network_user_policy_id: ID! | |
timeout_idle: Int! | |
timeout_session: Int! | |
} | |
input NetworkUserPolicyInput { | |
accounting_interval: Int! | |
daily_max_mbytes_down: Int | |
daily_max_mbytes_up: Int | |
daily_max_session_time: Int | |
max_bandwidth_down: Int! | |
max_bandwidth_up: Int! | |
max_mbytes_down: Int | |
max_mbytes_up: Int | |
max_pause_time: Int! | |
network_user_policy_id: ID! | |
timeout_idle: Int! | |
timeout_session: Int! | |
} | |
type NetworkUserPolicyResponse implements Response { | |
error: Error | |
network_user_policy: NetworkUserPolicy | |
} | |
input NetworkUserPolicyUpdateInput { | |
accounting_interval: Int | |
daily_max_mbytes_down: Int | |
daily_max_mbytes_up: Int | |
daily_max_session_time: Int | |
max_bandwidth_down: Int | |
max_bandwidth_up: Int | |
max_mbytes_down: Int | |
max_mbytes_up: Int | |
max_pause_time: Int | |
network_user_policy_id: ID | |
timeout_idle: Int | |
timeout_session: Int | |
} | |
# NodeAccess describes common parts of client network uplinks | |
interface NodeAccess { | |
# the ID of this access referenced by the given node | |
access_id: ID! | |
# the name of this access reference by the node referenced by the given MAC address | |
name: String! | |
# the ID of the node referenced by the given MAC address | |
node_id: ID! | |
# an array of multiple client networks (i.e. NodeNetwork) associated with a specific internet access | |
node_networks: [NodeNetwork!]! | |
# the type of the internet access configuration, can be OpenVPN or NAT or VLAN | |
type: NodeAccessType! | |
} | |
# NodeAccessNAT describes a NAT client network uplink | |
type NodeAccessNAT implements NodeAccess { | |
# the ID of this access referenced by the given node | |
access_id: ID! | |
# the name of this access reference by the node referenced by the given MAC address | |
name: String! | |
# the ID of the node referenced by the given MAC address | |
node_id: ID! | |
# an array of multiple client networks (i.e. NodeNetwork) associated with a specific internet access | |
node_networks: [NodeNetwork!]! | |
# the subnet of the client network should be set to this | |
subnet: String! | |
# the type of the internet access configuration, can be OpenVPN or NAT or VLAN | |
type: NodeAccessType! | |
} | |
# NodeAccessOpenVPN describes an OpenVPN client network uplink (filtered or unfiltered) | |
type NodeAccessOpenVPN implements NodeAccess { | |
# the ID of this access referenced by the given node | |
access_id: ID! | |
# the OpenVPN configuration | |
config: String! | |
# the name of this access reference by the node referenced by the given MAC address | |
name: String! | |
# the ID of the node referenced by the given MAC address | |
node_id: ID! | |
# an array of multiple client networks (i.e. NodeNetwork) associated with a specific internet access | |
node_networks: [NodeNetwork!]! | |
# the type of the internet access configuration, can be OpenVPN or NAT or VLAN | |
type: NodeAccessType! | |
} | |
# NodeAccessType identifies the access type usable by MTSG nodes. | |
enum NodeAccessType { | |
NAT | |
OpenVPN | |
VLAN | |
} | |
type NodeAccessVLAN implements NodeAccess { | |
# the ID of this access referenced by the given node | |
access_id: ID! | |
# the name of this access reference by the node referenced by the given MAC address | |
name: String! | |
# the ID of the node referenced by the given MAC address | |
node_id: ID! | |
# an array of multiple client networks (i.e. NodeNetwork) associated with a specific internet access | |
node_networks: [NodeNetwork!]! | |
# the type of the internet access configuration, can be OpenVPN or NAT or VLAN | |
type: NodeAccessType! | |
# VLAN ID (range: 0 to 4095) | |
vlan: Int! | |
} | |
# NodeNetwork referenced by a NodeAccess | |
type NodeNetwork { | |
# the access ID referencing this network | |
access_id: ID! | |
# a set of properties describing an ethernet client network | |
ethernet_settings: EthernetSettings! | |
# associates radio and ethernet interfaces with functionality of the client network | |
interfaces: Interfaces! | |
# the ID of this network referenced by the given access ID | |
network_id: ID! | |
# the ID of the node referenced by the given MAC address | |
node_id: ID! | |
# a set of properties describing the wifi settings | |
wifi_settings: WifiSettings! | |
} | |
# NodeUplink describes the WAN side of the given node | |
interface NodeUplink { | |
# the ID of the network interface used by this uplink | |
hardware_id: String! | |
# the name of this uplink | |
name: String! | |
# the ID of the node referenced by the given MAC address | |
node_id: ID! | |
# the ID of the uplink referenced by the node with the given MAC address | |
uplink_id: ID! | |
} | |
# NodeUplinkDHCPv4 describes parameters relevant when DHCPv4 client mode is active on the given node's WAN interface. | |
type NodeUplinkDHCPv4 implements NodeUplink { | |
# the ID of the network interface used by this uplink | |
hardware_id: String! | |
# the name of this uplink | |
name: String! | |
# the ID of the node referenced by the given MAC address | |
node_id: ID! | |
# the ID of the uplink referenced by the node with the given MAC address | |
uplink_id: ID! | |
} | |
# NodeUplinkDHCPv4 describes parameters relevant when addresses are assigned statically for the given node's WAN interface. | |
type NodeUplinkStaticv4 implements NodeUplink { | |
# the ID of the network interface used by this uplink | |
hardware_id: String! | |
# the name of this uplink | |
name: String! | |
# the ID of the node referenced by the given MAC address | |
node_id: ID! | |
# the ID of the uplink referenced by the node with the given MAC address | |
uplink_id: ID! | |
# the DNS servers used by this WAN interface | |
wandnsservers: String! | |
# the IP address of the gateway for this WAN interface | |
wangateway: String! | |
# the IP address of this WAN interface | |
wanipaddress: String! | |
# the netmask of this WAN interface | |
wannetmask: String! | |
} | |
type Page { | |
label: String | |
label_lang: [Translatable] | |
page_id: ID! | |
position: Int! | |
route: String! | |
splashpage_id: ID | |
widgets: [Widget] | |
} | |
input PageInput { | |
label: [TranslatableInput] | |
route: String | |
} | |
type PageResponse implements Response { | |
error: Error | |
page: Page | |
} | |
type PagesResponse implements Response { | |
error: Error | |
pages: [Page] | |
} | |
type PoiMatch { | |
stop: PoiMatchStop | |
} | |
input PoiMatchInput { | |
stop: PoiMatchStopInput | |
} | |
type PoiMatchStop { | |
ds100: String | |
ibnr: String | |
id: String | |
name: String | |
} | |
input PoiMatchStopInput { | |
ds100: String | |
ibnr: String | |
id: String | |
name: String | |
} | |
type PoiMatchTranslatable { | |
lang: String | |
value: [PoiMatch] | |
} | |
type Policy { | |
accounting_interval: Int! | |
bandwidth_down_kbps: Int! | |
bandwidth_up_kbps: Int! | |
network_user_policy_id: String! | |
} | |
input PolicyInput { | |
accounting_interval: Int! | |
bandwidth_down_kbps: Int! | |
bandwidth_up_kbps: Int! | |
network_user_policy_id: String! | |
} | |
type Preview { | |
filename: String! | |
height: Int! | |
url: String! | |
width: Int! | |
} | |
type Query { | |
Authz_admin_users( | |
search_params: Authz_AdminUserSearchParams_Input | |
skip: Int | |
take: Int | |
): Authz_AdminUsersResponse | |
# Finds multiple users with their identifier. | |
Authz_admin_users_by_ids(user_ids: [Authz_AdminUserID!]!): [Authz_AdminUser!]! | |
# Returns all apikeys for a given customer_id. | |
# If customer_id is ommitted, all apikeys accessible for the credentials are returned. | |
Authz_apikeys(customer_id: ID!): [Authz_Apikey!] | |
# retrieves the customer_id for a given group_id if in the access scope of the current credentials. | |
Authz_customer_id_for_group_id(group_id: ID!): Authz_CustomerID | |
# retrieves the customer_id for a given node_id if in the access scope of the current credentials. | |
Authz_customer_ids_for_node(node_id: ID!): [ID!]! | |
Authz_customers( | |
search_params: Authz_CustomerSearchParams_Input | |
skip: Int | |
take: Int | |
): [Authz_Customer!] | |
# Finds the user identified by the given ID. | |
# DEPRECATED | |
Authz_find_admin_user(user_id: Authz_AdminUserID!): Authz_AdminUser! | |
# lists all invites on a customer within access scope of currently used credentials | |
Authz_get_invites(customer_id: Authz_CustomerID!): [Authz_Invite!]! | |
# Returns the permissions of the currently used credentials. | |
Authz_get_permissions: [Authz_CustomerPermissions!]! | |
# gets all the current policies for the given apikey_id | |
Authz_get_policies_apikey(apikey_id: Authz_ApikeyID!): [Authz_PolicyApikey] | |
# gets all the current policies for the given user_id | |
Authz_get_policies_user(user_id: Authz_AdminUserID!): [Authz_PolicyUser] | |
# returns all permission roles visible to the current credentials on a given customer. | |
Authz_get_roles(customer_id: Authz_CustomerID): [Authz_RoleName!] | |
# gets all user policies for a customer | |
Authz_get_user_policies_for_customer( | |
customer_id: Authz_CustomerID | |
): [Authz_PolicyUser!] | |
# Checks the requested group IDs for access and returns a sorted list with a true/false value for each one. | |
# If recursive is set to true, it also returns the children of the requested IDs. | |
# Groups are organized in a tree structure. The credential has access to the group and its subgroups. | |
Authz_group_ids(recursive: Boolean!, requested_ids: [ID!]!): [Authz_IdStatus!] | |
# Returns all the group IDs the credential has access to filtered by given customer_ids | |
# Groups are organized in a tree structure. The credential has access to the group and its subgroups. | |
Authz_group_ids_by_customer_ids( | |
customer_ids: [ID!]! | |
recursive: Boolean! | |
): [ID!] | |
Authz_has_access_to_customer_ids(customer_ids: [ID!]): Boolean! | |
Authz_has_access_to_group_ids(group_ids: [ID!]): Boolean! | |
Authz_has_access_to_macs(macs: [DM_Mac!]): Boolean! | |
Authz_has_access_to_node_ids(node_ids: [ID!]): Boolean! | |
# Returns the currently logged in user. | |
Authz_logged_in_user: Authz_LoggedInUserData! | |
# Checks the requested node IDs for access and returns a sorted list with a true/false value for each one. | |
Authz_node_ids(requested_ids: [ID!]!): [Authz_IdStatus!] | |
# Query the client-side configuration settings of the management tunnel for a given MTSG device. | |
# | |
# PARAMS: | |
# - mac: device to get the settings of (MAC) | |
# - minimum_ttl: minimum TTL of certificates for the requested configuration | |
# | |
# NOTES: | |
# - If the optional minimum_ttl is omitted, certificates will have a minimum TTL of 6 weeks. | |
# | |
# RETURNS: | |
# - management tunnel client-side configuration settings | |
DM_DeviceMgmtTunnel( | |
mac: DM_Mac! | |
minimum_ttl: DM_Duration | |
): DM_DeviceMgmtTunnelResponse | |
# Find all stargates the user has access to. | |
DM_appliances: [DM_Appliance!] | |
# Find log event by log id. | |
DM_find_log_by_id(log_id: ID!): DM_AuditLogEventDetails | |
# Find devices that need firmware upgrade | |
# | |
# Result is ordered by rollout_state (inprogress is returned first). | |
DM_firmware_get_work(limit: Int!): [DM_DeviceRolloutWorkItem!] | |
# Get credentials for a device | |
DM_get_device_credentials(mac: DM_Mac!): DM_DeviceCredentials | |
# gets a recursive list of nodes inside the transitive hull of all specified group_ids configurations up to n levels of recursiveness | |
# | |
# NOTES: | |
# - this returns all nodes, device configurations and group configuration nodes that inherit the given configurations | |
# - if a specified group_id is not allowed to be accessed, the whole query fails | |
# - if group_ids is an empty array, the query fails | |
# - recursive defines the level of recursiveness (0 .. roots only, 1 .. first level, 2 .. first two levels, -1 means all nodes (full recursion)) | |
# - returns null on error | |
DM_get_inherited_nodes_by_group_ids( | |
group_ids: [DM_GroupID!]! | |
recursive: Int! | |
): [DM_Node!] | |
# Finds the highest container_version for each container_image so that the rollout service can check if any instances need to be upgraded. | |
# It includes either public node services or node services related to the given customer. | |
# The customer_id is required for all requests without privilege all_customers. | |
DM_get_newest_node_services(customer_id: DM_CustomerID): [DM_NodeService!]! | |
# Gets the node service instances with the given IDs. | |
DM_get_node_service_instances( | |
ids: [DM_NodeServiceInstanceID!]! | |
): [DM_NodeServiceInstance!] | |
# Find node service instances with the given rollout states. | |
# | |
# Result is ordered by node_id asc, node_service_instance_id asc. | |
DM_get_node_service_instances_by_rollout_state( | |
limit: Int | |
skip: Int | |
state_selectors: [DM_RolloutState!]! | |
): [DM_NodeServiceInstance!] | |
# gets a list of all available node types | |
# | |
# NOTES: | |
# - returns null on error | |
DM_get_node_types: [DM_NodeType!] | |
# gets a recursive list of nodes of all specified group_ids up to n levels of recursiveness | |
# | |
# NOTES: | |
# - this returns all nodes, device configurations and group configuration nodes | |
# - if a specified group_id is not allowed to be accessed, the whole query fails | |
# - if group_ids is an empty array, the query fails | |
# - recursive defines the level of recursiveness (0 .. roots only, 1 .. first level, 2 .. first two levels, -1 means all nodes (full recursion)) | |
# - returns null on error | |
DM_get_nodes_by_group_ids( | |
group_ids: [DM_GroupID!]! | |
recursive: Int! | |
): [DM_Node!] | |
# Find node service instances running versions of the container lower than the provided version. | |
# "running" implies an active device - not deleted, enabled, and online. | |
# Meant to be used by the rollout service to determine which instances to upgrade. | |
# Which also means, it will only return instances which are within the node's rollout or (node type's default) time span, | |
# see node_status.rollout_start, node_status.rollout_end, node_type.default_rollout_start and node_type.default_rollout_end. | |
# | |
# Result is ordered by node_id asc, node_service_instance_id asc. | |
DM_get_old_node_service_instances( | |
container_image: String! | |
container_version_lower_than: String! | |
limit: Int | |
skip: Int | |
): [DM_NodeServiceInstance!] | |
# Find all log events for a given node. | |
DM_log_events_for_node( | |
limit: Int! | |
node_id: DM_NodeID! | |
skip: Int! | |
): DM_LogEventsForNodeResponse! | |
# query a list of nodes | |
# queries the unique union of node_ids and macs | |
# | |
# NOTE: | |
# - a node_id can be a device node_id or the default_config node_id of a group | |
# - a mac address can only be a device mac address | |
# - a group_id can be a group_id of a group config and queries only the group config | |
# - returns null on error | |
# - returns all DM_Node the customer has access to (ignores all others) | |
# - if node_ids and macs and group_ids is empty the query fails | |
DM_nodes( | |
group_ids: [DM_GroupID!] | |
macs: [DM_Mac!] | |
node_ids: [DM_NodeID!] | |
): [DM_Node!] | |
# query offline heartbeat data (offline means independent of internet uplink) | |
# | |
# NOTES: | |
# - macs should contain values of active devices, if not they will be included in device_errors | |
# - event_selectors must contain at least one entry | |
# - returns null on error | |
DM_reporting_heartbeat_offline( | |
after_or_at: DateTime! | |
before: DateTime! | |
event_selectors: [DM_DeviceEventType!]! | |
macs: [DM_Mac!]! | |
): DM_ReportingHeartbeatOfflineResponse | |
# query online heartbeat data (online means internet uplink online status dependent) | |
# | |
# NOTES: | |
# - macs should contain values of active devices, if not they will be included in device_errors | |
# - event_selectors must contain at least one entry | |
# - returns null on error | |
DM_reporting_heartbeat_online( | |
after_or_at: DateTime! | |
before: DateTime! | |
event_selectors: [DM_DeviceEventType!]! | |
macs: [DM_Mac!]! | |
): DM_ReportingHeartbeatOnlineResponse | |
# retrieves nodes by a search string (which wildcard matches against the name of group configs and against name and mac of devices, but also exactly matches against node_id and group_id) | |
# Note: | |
# - only nodes in the own access scope will be retrieved, means within assigned groups on your customers. | |
# - mac search needs at least 4 chars, otherwise nodes are only searched by name, where only 3 chars are needed. | |
# - if the node_id or the group_id (on group_configs) exactly matches, it also will be found. | |
DM_search_nodes(search: String!): [DM_Node!] | |
activate_user_session( | |
client_mac: String! | |
fallback_ap_mac: String! | |
server_mac: String! | |
): ActivateUserSessionResponse | |
customer_shares_for_splashpage(splashpage_id: ID!): [Customer!] | |
# Retrive all available Email CIDs (Campain IDs) for a given customer. | |
email_cids(customer_id: String): EmailCIDsResponse | |
# Exports all email addresses collected by a lead collection connect widget. | |
# Omit email_cid if you want to export leads for all campaigns. Optionally use time_start and time_end to filter the date range. | |
export_emails( | |
customer_id: String | |
email_cid: String | |
time_end: DateTime | |
time_start: DateTime | |
): ExportEmailsResponse | |
# Request an overview of all configured feeds for a given customer. | |
feed_overview(customer_id: ID): FeedOverviewResponse | |
feed_widget( | |
ap_mac: String | |
language: String | |
user_session_id: ID | |
widget_id: ID! | |
): FeedWidgetResponse | |
# Get all accesible feed widgets. | |
feed_widgets: FeedWidgetsResponse | |
# fetch or issue a new tinc keypair for a device with a tinc-enabled appliance or | |
# fetch or issue a new tinc keypair for an appliance | |
# | |
# this query will create a keypair if it doesn't exist for the mac, or return | |
# the existing keypair | |
# | |
# this query will notify the appliance about the newly created keypair | |
fetch_or_issue_tinc_keypair(mac: String!): TincKeyResponse | |
# generates a new tinc keypair for a device with a tinc-enabled appliance or | |
# generates a new tinc keypair for an appliance | |
# | |
# this query will always result in a new keypair and overwrite and invalidate | |
# the old one | |
# | |
# this query will notify the appliance about the newly created keypair | |
generate_tinc_keypair(mac: String!): TincKeyResponse | |
get_internet_user_sessions(server_mac: String!): UserSessionsResponse | |
# Fetch all groups for a given customer (Deprecated). | |
groups(customer_id: String): GroupsResponse | |
health_remote_api: Boolean | |
health_resource_api: Boolean | |
health_wasabi_auth: Boolean! | |
health_wasabi_dm: Boolean! | |
health_wasabi_reporting: Boolean! | |
is_active_user_session(user_session_id: ID!): IsActiveUserSessionResponse | |
is_valid_user_session(user_session_id: ID!): IsValidUserSessionResponse | |
login_method_policy( | |
customer_id: ID | |
splashpage_id: ID! | |
): LoginMethodPolicyResponse | |
# Fetch all accessible network user policies. | |
network_user_policies: NetworkUserPoliciesResponse | |
# Fetch a Network User Policy by their id. | |
network_user_policy(network_user_policy_id: String): NetworkUserPolicyResponse | |
# Query the node settings for the given MTSG device identified by its MAC address. | |
# | |
# PARAMS: | |
# - mac: MTSG device to get the settings of (MAC) | |
# - minimum_ttl: minimum TTL of certificates for the requested configuration | |
# | |
# NOTES: | |
# - If the optional minimum_ttl is omitted, certificates will have a minimum TTL of 6 weeks. | |
# | |
# RETURNS: | |
# - node_settings (uplink, accesses, networks, and configuration meta data) | |
node_settings(mac: String!, minimum_ttl: DM_Duration): DM_NodeSettingsResponse | |
resource_by_origin_info( | |
customer_id: ID! | |
etag: String | |
original_url: String! | |
): ResourceResponse | |
resources( | |
customer_id: String! | |
filename: String | |
mimetype: String | |
resource_id: ID | |
skip: Int | |
take: Int | |
): ResourcesResponse | |
session_info(user_session_id: ID!): UserSessionInfoResponse | |
shared_splashpages_for_customer(customer_id: ID!): [SplashpageShort!] | |
snippets(key: String, language: String): SnippetsResponse | |
snippets_only: SnippetsOnlyResponse | |
splashpage( | |
initial: Boolean | |
language: String! | |
user_session_id: ID! | |
): SplashpageResponse | |
splashpage_editor(language: String, splashpage_id: ID): SplashpageResponse | |
splashpage_local_api( | |
ap_mac: String! | |
expected_splashpage_id: String | |
since: DateTime | |
): SplashpageLocalApiResponse | |
splashpage_preview( | |
ap_mac: String! | |
client_mac: String | |
initial: Boolean | |
language: String! | |
): SplashpageResponse | |
# Fetch all splashpages for a given customer. | |
splashpages(customer_id: String!): SplashpagesResponse | |
} | |
enum ReportingPermission { | |
reporting_group_emailreport | |
} | |
enum Reporting_ErrorCodes { | |
BAD_INPUT_ERROR | |
ERROR_GENERIC | |
INTERNAL_SERVER_ERROR | |
NOT_AUTHORIZED | |
} | |
# This type includes information about a successfull report generation. | |
# Like the email address the generated report is sent to. | |
type Reporting_GenerateReportsResponse { | |
email: String! | |
} | |
enum Reporting_ID_Type { | |
group_id | |
} | |
input RequestHoldInput { | |
ds100: ID | |
ibnr: ID | |
transport_id: ID! | |
tributary_id: ID | |
} | |
type ResourceResponse implements Response { | |
error: Error | |
resource: File | |
} | |
type ResourcesResponse implements Response { | |
count: Int | |
error: Error | |
resources: [File] | |
} | |
interface Response { | |
error: Error | |
} | |
enum ResultCode { | |
MODIFIED | |
NOT_MODIFIED | |
} | |
enum SessionEvent { | |
garden_start | |
internet_interim | |
internet_pause | |
internet_resume | |
internet_start | |
internet_stop | |
support_form_submit | |
} | |
input SessionEventInput { | |
bytes_down_delta: BigInt | |
bytes_up_delta: BigInt | |
event_type: SessionEvent! | |
message_id: ID! | |
method: String | |
time_start: DateTime! | |
} | |
enum SessionState { | |
garden | |
internet | |
pause | |
stop | |
} | |
scalar SimpleJSON | |
input SimpleTextMetaDataInput { | |
feed_config: FeedConfigInput | |
snippet_keys: SimpleTextSnippetsInput | |
} | |
type SimpleTextSnippets { | |
content: String | |
} | |
input SimpleTextSnippetsInput { | |
content: String | |
} | |
type SimpleTextWidget implements Widget { | |
anchor: Anchor | |
content: String | |
content_lang: [Translatable] | |
date_created: DateTime! | |
date_updated: DateTime! | |
enable_anchor: Boolean | |
is_ready: Boolean | |
meta_data: SimpleTextWidgetMetaData | |
page_id: ID! | |
position: Int! | |
update_interval: Int | |
widget_id: ID! | |
} | |
input SimpleTextWidgetInput { | |
anchor: AnchorInput | |
content: [TranslatableInput] | |
enable_anchor: Boolean | |
meta_data: SimpleTextMetaDataInput | |
page_id: ID | |
update_interval: Int | |
} | |
type SimpleTextWidgetMetaData { | |
feed_config: FeedConfig | |
snippet_keys: SimpleTextSnippets | |
} | |
type Snippet { | |
column: String! | |
key: String! | |
lang: String! | |
position: Int! | |
snippet_id: String! | |
value: String! | |
widget_type: String! | |
} | |
input SnippetInput { | |
column: String | |
key: String | |
lang: String | |
value: String | |
widget_type: String | |
} | |
type SnippetOnly { | |
key: String! | |
widget_type: String! | |
} | |
type SnippetResponse implements Response { | |
error: Error | |
snippet: Snippet | |
} | |
type SnippetsOnlyResponse implements Response { | |
error: Error | |
snippets_only: [SnippetOnly] | |
} | |
type SnippetsResponse implements Response { | |
error: Error | |
snippets: [Snippet] | |
} | |
type Splashpage { | |
background_image: String | |
color_primary: String! | |
color_secondary: String! | |
customer_id: ID! | |
default_lang: String | |
destination_url: String | |
logo_image: String | |
matomo_tracking_id: String | |
pages: [Page]! | |
splashpage_id: ID! | |
supported_lang: [String] | |
title: String! | |
} | |
input SplashpageInput { | |
background_image: String | |
color_primary: String | |
color_secondary: String | |
customer_id: ID | |
default_lang: String | |
destination_url: String | |
login_method_policy: [LoginMethodPolicyInput] | |
logo_image: String | |
supported_lang: [String] | |
title: String | |
} | |
type SplashpageLocalApiResponse implements Response { | |
error: Error | |
login_method_policies: [LoginMethodPolicy!] | |
network_user_policies: [NetworkUserPolicy!] | |
resources: [File] | |
result_code: ResultCode | |
splashpage_lang: [SplashpageTranslatable!] | |
tls_certificate: TLSCertificate | |
} | |
input SplashpageLogInput { | |
data: String | |
error_code: String | |
level: LogLevel! | |
message: String! | |
} | |
type SplashpageResponse implements Response { | |
connected: Boolean | |
error: Error | |
online: Boolean | |
policy_violation: Error | |
preview_ap_macs: [String] | |
splashpage: Splashpage | |
user_session_id: ID | |
user_session_info: UserSessionInfo | |
} | |
type SplashpageShort { | |
customer_id: ID! | |
customer_name: String! | |
default_lang: String | |
group_splashpage: [Group] | |
groups: [Group] | |
matomo_tracking_id: String | |
preview_ap_macs: [String] | |
splashpage_id: ID! | |
supported_lang: [String] | |
title: String! | |
} | |
type SplashpageTranslatable { | |
lang: String! | |
splashpage: Splashpage! | |
} | |
type SplashpagesResponse implements Response { | |
error: Error | |
splashpages: [SplashpageShort] | |
} | |
input StringOptional { | |
value: String | |
} | |
type StructuredTextCategory { | |
anchor: Anchor | |
enable_anchor: Boolean | |
entries: [StructuredTextEntry] | |
id: ID | |
label: String | |
label_lang: [Translatable] | |
} | |
input StructuredTextCategoryInput { | |
anchor: AnchorInput | |
enable_anchor: Boolean | |
entries: [StructuredTextEntryInput]! | |
id: ID | |
label: [TranslatableInput] | |
} | |
type StructuredTextEntry { | |
POI_match: [PoiMatch] | |
POI_match_lang: [PoiMatchTranslatable] | |
content: String | |
content_lang: [Translatable] | |
id: ID | |
title: String | |
title_lang: [Translatable] | |
} | |
input StructuredTextEntryInput { | |
POI_match: [TranslatablePoiMatchInput] | |
content: [TranslatableInput]! | |
id: ID | |
title: [TranslatableInput]! | |
} | |
input StructuredTextMetaDataInput { | |
feed_config: FeedConfigInput | |
} | |
type StructuredTextWidget implements Widget { | |
categories: [StructuredTextCategory] | |
date_created: DateTime! | |
date_updated: DateTime! | |
is_ready: Boolean | |
meta_data: StructuredTextWidgetMetaData | |
page_id: ID! | |
position: Int! | |
update_interval: Int | |
widget_id: ID! | |
} | |
input StructuredTextWidgetInput { | |
anchor: AnchorInput | |
categories: [StructuredTextCategoryInput] | |
enable_anchor: Boolean | |
meta_data: StructuredTextMetaDataInput | |
page_id: ID | |
update_interval: Int | |
} | |
type StructuredTextWidgetMetaData { | |
feed_config: FeedConfig | |
} | |
input SupportFormSubmitInput { | |
email: String | |
firstname: String | |
lastname: String | |
option_key: String | |
phone_number: String | |
user_text: String | |
} | |
input SupportFormSubmitSyncInput { | |
input: SupportFormSubmitInput! | |
user_session_info: UserSessionInfoInput! | |
widget_id: ID! | |
} | |
type SupportFormWidget implements Widget { | |
custom_options: [CustomOption] | |
date_created: DateTime! | |
date_updated: DateTime! | |
page_id: ID! | |
position: Int! | |
widget_id: ID! | |
} | |
input SupportFormWidgetInput { | |
custom_options: [CustomOptionInput] | |
page_id: ID! | |
} | |
type SupportInfoWidget implements Widget { | |
date_created: DateTime! | |
date_updated: DateTime! | |
page_id: ID! | |
position: Int! | |
widget_id: ID! | |
} | |
input SupportInfoWidgetInput { | |
page_id: ID! | |
} | |
type TLSCertificate { | |
cert: String! | |
private_key: String! | |
} | |
input TimeSpanOptional { | |
value: DM_TimeSpan | |
} | |
type TincKey { | |
pem_private: String! | |
pem_public: String! | |
} | |
type TincKeyResponse implements Response { | |
error: Error | |
hosts: [TincPublicKey!] | |
tinc: TincKey | |
} | |
type TincPublicKey { | |
mac: String! | |
pem_public: String! | |
} | |
type Translatable { | |
lang: String! | |
value: String! | |
} | |
input TranslatableInput { | |
lang: String! | |
value: String! | |
} | |
input TranslatablePoiMatchInput { | |
lang: String! | |
value: [PoiMatchInput] | |
} | |
# The `Upload` scalar type represents a file upload. | |
scalar Upload | |
type Usage { | |
mbytes_down: Float! | |
mbytes_up: Float! | |
session_time: Int! | |
} | |
type UserSession { | |
ap_mac: String | |
client_mac: String | |
policy: Policy | |
state: String | |
time_start: DateTime | |
user_session_id: String | |
} | |
input UserSessionAccountingBatchInput { | |
accounting_batch: [UserSessionAccountingInput] | |
server_mac: String! | |
} | |
input UserSessionAccountingInput { | |
bytes_down_delta: BigInt | |
bytes_up_delta: BigInt | |
message_id: ID | |
user_session_id: String! | |
} | |
type UserSessionIdResponse implements Response { | |
error: Error | |
state: String | |
time_start: DateTime | |
user_session_id: ID | |
} | |
type UserSessionInfo { | |
ap_mac: String | |
ap_name: String | |
client_mac: String | |
daily_max_mbytes_down: Int | |
@deprecated(reason: "use network_user_policy.daily_max_mbytes_down") | |
daily_max_mbytes_up: Int | |
@deprecated(reason: "use network_user_policy.daily_max_mbytes_up") | |
daily_max_session_time: Int | |
@deprecated(reason: "use network_user_policy.daily_max_session_time") | |
max_mbytes_down: Int | |
@deprecated(reason: "use network_user_policy.max_mbytes_down") | |
max_mbytes_up: Int | |
@deprecated(reason: "use network_user_policy.max_mbytes_up") | |
mbytes_down: Float | |
mbytes_up: Float | |
network_user_policy: NetworkUserPolicy | |
policy: Policy @deprecated(reason: "Use network_user_policy") | |
session_time: Int | |
state: String | |
sync_user_session_id: String | |
time_start: DateTime | |
time_start_internet: DateTime | |
timeout_session: Int | |
@deprecated(reason: "use network_user_policy.timeout_session") | |
user_session_id: String | |
} | |
input UserSessionInfoInput { | |
ap_mac: String | |
client_mac: String | |
mbytes_down: Float | |
mbytes_up: Float | |
network_user_policy: NetworkUserPolicyInput | |
policy: PolicyInput | |
session_time: Int | |
state: String | |
time_start: DateTime | |
time_start_internet: DateTime | |
user_session_id: String | |
} | |
type UserSessionInfoResponse implements Response { | |
error: Error | |
user_session: UserSessionInfo | |
} | |
type UserSessionSync { | |
assigned_policy: NetworkUserPolicy! | |
client_mac: String! | |
current_usage: Usage! | |
daily_usage: Usage! | |
state: SessionState! | |
time_end: DateTime | |
time_start: DateTime! | |
time_start_internet: DateTime | |
user_session_id: ID! | |
} | |
enum UserSessionSyncErrorCode { | |
# input data was invalid | |
INVALID_INPUT_DATA | |
# sync output data was invalid | |
INVALID_OUTPUT_DATA | |
} | |
input UserSessionSyncInput { | |
client_mac: String! | |
lead: ConnectInput | |
session_events: [SessionEventInput] | |
state: SessionState | |
support_form_submits: [SupportFormSubmitSyncInput] | |
time_end: DateTime | |
time_start: DateTime! | |
time_start_internet: DateTime | |
user_agent_country: String | |
user_agent_lang: String | |
user_session_id: ID | |
} | |
type UserSessionsResponse implements Response { | |
error: Error | |
user_sessions: [UserSession] | |
} | |
input UserSessionsSyncInput { | |
user_sessions: [UserSessionSyncInput] | |
} | |
type UserSessionsSyncResponse implements Response { | |
error: Error | |
failed_user_sessions: [FailedUserSessionSync] | |
user_sessions: [UserSessionSync] | |
} | |
interface Widget { | |
date_created: DateTime! | |
date_updated: DateTime! | |
page_id: ID! | |
position: Int! | |
widget_id: ID! | |
} | |
type WidgetResponse implements Response { | |
error: Error | |
widget: Widget | |
} | |
type WidgetsResponse implements Response { | |
error: Error | |
widgets: [Widget] | |
} | |
type Wifi4EUWidget implements Widget { | |
date_created: DateTime! | |
date_updated: DateTime! | |
network_identifier: String! | |
page_id: ID! | |
position: Int! | |
self_test: Boolean | |
widget_id: ID! | |
} | |
input Wifi4EUWidgetInput { | |
network_identifier: String! | |
page_id: ID! | |
self_test: Boolean | |
} | |
# WifiSettings referenced by a NodeNetwork | |
type WifiSettings { | |
# true if the SSID of the wifi network should be broadcasted | |
broadcast: Boolean! | |
# true if clients are prevented from interacting with each other | |
client_separation: Boolean! | |
# encryption: can be none, wpa2psk, wpa2ccmp, wpa2psktkip, wpa2psktkipaes | |
encryption: DM_Network_Encryption! | |
# the maximum allowed number of associated clients | |
max_clients: Int! | |
# is the pre-shared key used by this configuration (for wpa2 with psk) | |
psk: String! | |
# the SSID of the wifi network | |
ssid: String! | |
} | |
type _AuthzServiceEntityPlaceholder { | |
id: ID! | |
} | |
type _DMServiceEntityPlaceholder { | |
id: ID! | |
} | |
type _ReportingServiceEntityPlaceholder { | |
id: ID! | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"__validationErrors": [], | |
"_queryType": "Query", | |
"_mutationType": "Mutation", | |
"_subscriptionType": null, | |
"_directives": [ | |
"@include", | |
"@skip", | |
"@deprecated", | |
"@specifiedBy" | |
], | |
"_typeMap": { | |
"ActivateUserSessionResponse": "ActivateUserSessionResponse", | |
"String": "String", | |
"ID": "ID", | |
"AdminLogInput": "AdminLogInput", | |
"Anchor": "Anchor", | |
"AnchorInput": "AnchorInput", | |
"AuthType": "AuthType", | |
"AuthzPermission": "AuthzPermission", | |
"Authz_AdminUser": "Authz_AdminUser", | |
"Authz_AdminUserID": "Authz_AdminUserID", | |
"Authz_AdminUserSearchParams_Input": "Authz_AdminUserSearchParams_Input", | |
"Authz_AdminUsersResponse": "Authz_AdminUsersResponse", | |
"Int": "Int", | |
"Authz_Apikey": "Authz_Apikey", | |
"Authz_ApikeyID": "Authz_ApikeyID", | |
"Authz_CreateAdminUser_Input": "Authz_CreateAdminUser_Input", | |
"Authz_Customer": "Authz_Customer", | |
"Authz_CustomerID": "Authz_CustomerID", | |
"Authz_CustomerPermissions": "Authz_CustomerPermissions", | |
"Authz_CustomerSearchParams_Input": "Authz_CustomerSearchParams_Input", | |
"Authz_Customer_Input": "Authz_Customer_Input", | |
"Authz_EditAdminUser_Input": "Authz_EditAdminUser_Input", | |
"Authz_ErrorCodes": "Authz_ErrorCodes", | |
"Authz_ID_Type": "Authz_ID_Type", | |
"Authz_IdStatus": "Authz_IdStatus", | |
"Boolean": "Boolean", | |
"Authz_Invite": "Authz_Invite", | |
"Authz_InviteID": "Authz_InviteID", | |
"Authz_LoggedInUserData": "Authz_LoggedInUserData", | |
"Authz_LoginResponse": "Authz_LoginResponse", | |
"Authz_PolicyApikey": "Authz_PolicyApikey", | |
"Authz_PolicyUser": "Authz_PolicyUser", | |
"Authz_RoleName": "Authz_RoleName", | |
"BigInt": "BigInt", | |
"Bigint": "Bigint", | |
"CampaignWidget": "CampaignWidget", | |
"CampaignWidgetInput": "CampaignWidgetInput", | |
"ClientInfoResponse": "ClientInfoResponse", | |
"ConnectInput": "ConnectInput", | |
"ConnectMetaDataInput": "ConnectMetaDataInput", | |
"ConnectSnippets": "ConnectSnippets", | |
"ConnectSnippetsInput": "ConnectSnippetsInput", | |
"ConnectWidget": "ConnectWidget", | |
"ConnectWidgetInput": "ConnectWidgetInput", | |
"ConnectWidgetMetaData": "ConnectWidgetMetaData", | |
"ConstraintNumber": "ConstraintNumber", | |
"ConstraintString": "ConstraintString", | |
"CopiedResourceIds": "CopiedResourceIds", | |
"CopyResourcesResponse": "CopyResourcesResponse", | |
"CustomOption": "CustomOption", | |
"CustomOptionInput": "CustomOptionInput", | |
"Customer": "Customer", | |
"DMPermission": "DMPermission", | |
"DM_Appliance": "DM_Appliance", | |
"DM_ApplianceID": "DM_ApplianceID", | |
"DM_AuditLogEvent": "DM_AuditLogEvent", | |
"DM_AuditLogEventDetails": "DM_AuditLogEventDetails", | |
"DM_AuditLogType": "DM_AuditLogType", | |
"DM_CopyConfigurationSelector_Input": "DM_CopyConfigurationSelector_Input", | |
"DM_CountryCode": "DM_CountryCode", | |
"DM_CustomerID": "DM_CustomerID", | |
"DM_Device": "DM_Device", | |
"DM_DeviceCredentials": "DM_DeviceCredentials", | |
"DM_DeviceEventType": "DM_DeviceEventType", | |
"DM_DeviceHeartbeatSource": "DM_DeviceHeartbeatSource", | |
"DM_DeviceMgmtTunnelResponse": "DM_DeviceMgmtTunnelResponse", | |
"DM_DeviceRolloutWorkItem": "DM_DeviceRolloutWorkItem", | |
"DM_Device_BaseConfig_Input": "DM_Device_BaseConfig_Input", | |
"DM_Device_Input": "DM_Device_Input", | |
"DM_Devices_Input": "DM_Devices_Input", | |
"DM_Duration": "DM_Duration", | |
"DM_Error": "DM_Error", | |
"DM_ErrorCodes": "DM_ErrorCodes", | |
"DM_FirmwareVersion": "DM_FirmwareVersion", | |
"DM_GPIOPortConfig": "DM_GPIOPortConfig", | |
"DM_GPIOPortConfig_Input": "DM_GPIOPortConfig_Input", | |
"DM_GPIOPortMode": "DM_GPIOPortMode", | |
"DM_Group": "DM_Group", | |
"DM_GroupConfig": "DM_GroupConfig", | |
"DM_GroupConfig_BaseConfig_Input": "DM_GroupConfig_BaseConfig_Input", | |
"DM_GroupID": "DM_GroupID", | |
"DM_GroupServiceInstance": "DM_GroupServiceInstance", | |
"DM_GroupServiceInstanceID": "DM_GroupServiceInstanceID", | |
"DM_Group_Input": "DM_Group_Input", | |
"DM_HeartbeatEvent": "DM_HeartbeatEvent", | |
"DM_HeartbeatType": "DM_HeartbeatType", | |
"DM_ID_Type": "DM_ID_Type", | |
"DM_IPv4Address": "DM_IPv4Address", | |
"DM_IPv4Subnet": "DM_IPv4Subnet", | |
"DM_LogEvent": "DM_LogEvent", | |
"DM_LogEventsForNodeResponse": "DM_LogEventsForNodeResponse", | |
"DM_Mac": "DM_Mac", | |
"DM_Network_Encryption": "DM_Network_Encryption", | |
"DM_Node": "DM_Node", | |
"DM_NodeAccess": "DM_NodeAccess", | |
"DM_NodeAccessBridge": "DM_NodeAccessBridge", | |
"DM_NodeAccessCloudNAT": "DM_NodeAccessCloudNAT", | |
"DM_NodeAccessDirectConnection": "DM_NodeAccessDirectConnection", | |
"DM_NodeAccessID": "DM_NodeAccessID", | |
"DM_NodeAccessMultiUplink": "DM_NodeAccessMultiUplink", | |
"DM_NodeAccessNAT": "DM_NodeAccessNAT", | |
"DM_NodeAccessPortForward": "DM_NodeAccessPortForward", | |
"DM_NodeAccessService": "DM_NodeAccessService", | |
"DM_NodeAccessVLAN": "DM_NodeAccessVLAN", | |
"DM_NodeAccessVPN": "DM_NodeAccessVPN", | |
"DM_NodeAccess_Input": "DM_NodeAccess_Input", | |
"DM_NodeAccess_Type": "DM_NodeAccess_Type", | |
"DM_NodeHardware": "DM_NodeHardware", | |
"DM_NodeHardwareEthernet": "DM_NodeHardwareEthernet", | |
"DM_NodeHardwareID": "DM_NodeHardwareID", | |
"DM_NodeHardwareRadio": "DM_NodeHardwareRadio", | |
"DM_NodeHardwareRadioSettings_Input": "DM_NodeHardwareRadioSettings_Input", | |
"DM_NodeHardwareType": "DM_NodeHardwareType", | |
"DM_NodeID": "DM_NodeID", | |
"DM_NodeLocation": "DM_NodeLocation", | |
"Float": "Float", | |
"DM_NodeLocation_Input": "DM_NodeLocation_Input", | |
"DM_NodeNetwork": "DM_NodeNetwork", | |
"DM_NodeNetworkID": "DM_NodeNetworkID", | |
"DM_NodeNetwork_Input": "DM_NodeNetwork_Input", | |
"DM_NodeOnlineStatus": "DM_NodeOnlineStatus", | |
"DM_NodeProfile": "DM_NodeProfile", | |
"DM_NodeService": "DM_NodeService", | |
"DM_NodeServiceID": "DM_NodeServiceID", | |
"DM_NodeServiceInstance": "DM_NodeServiceInstance", | |
"DM_NodeServiceInstanceConfigMount": "DM_NodeServiceInstanceConfigMount", | |
"DM_NodeServiceInstanceConfigMount_Input": "DM_NodeServiceInstanceConfigMount_Input", | |
"DM_NodeServiceInstanceID": "DM_NodeServiceInstanceID", | |
"DM_NodeServiceInstance_Input": "DM_NodeServiceInstance_Input", | |
"DM_NodeServiceType": "DM_NodeServiceType", | |
"DM_NodeService_Input": "DM_NodeService_Input", | |
"DM_NodeSettingsResponse": "DM_NodeSettingsResponse", | |
"DM_NodeStatus": "DM_NodeStatus", | |
"DM_NodeType": "DM_NodeType", | |
"DM_NodeTypeID": "DM_NodeTypeID", | |
"DM_NodeType_Input": "DM_NodeType_Input", | |
"DM_NodeUplink": "DM_NodeUplink", | |
"DM_NodeUplinkDHCPClient": "DM_NodeUplinkDHCPClient", | |
"DM_NodeUplinkID": "DM_NodeUplinkID", | |
"DM_NodeUplinkStaticIPv4": "DM_NodeUplinkStaticIPv4", | |
"DM_NodeUplinkWanType": "DM_NodeUplinkWanType", | |
"DM_NodeUplink_Input": "DM_NodeUplink_Input", | |
"DM_Node_NetworkConfig_Input": "DM_Node_NetworkConfig_Input", | |
"DM_Node_NetworkConfig_Inputs": "DM_Node_NetworkConfig_Inputs", | |
"DM_ReportingDeviceEvent": "DM_ReportingDeviceEvent", | |
"DM_ReportingDeviceEventDeviceOnline": "DM_ReportingDeviceEventDeviceOnline", | |
"DM_ReportingDeviceEvents": "DM_ReportingDeviceEvents", | |
"DM_ReportingDeviceResponseStatus": "DM_ReportingDeviceResponseStatus", | |
"DM_ReportingDeviceResponseStatusCode": "DM_ReportingDeviceResponseStatusCode", | |
"DM_ReportingHeartbeatOfflineResponse": "DM_ReportingHeartbeatOfflineResponse", | |
"DM_ReportingHeartbeatOnlineResponse": "DM_ReportingHeartbeatOnlineResponse", | |
"DM_RoleName": "DM_RoleName", | |
"DM_RolloutState": "DM_RolloutState", | |
"DM_Time": "DM_Time", | |
"DM_TimeSpan": "DM_TimeSpan", | |
"DM_VLANRanges": "DM_VLANRanges", | |
"DM_WPA2EConfig": "DM_WPA2EConfig", | |
"DM_WPA2EConfigInput": "DM_WPA2EConfigInput", | |
"DateTime": "DateTime", | |
"EmailCIDsResponse": "EmailCIDsResponse", | |
"EmergencyRequestReason": "EmergencyRequestReason", | |
"EmergencyRequestReasonInput": "EmergencyRequestReasonInput", | |
"EmergencyRequestStatus": "EmergencyRequestStatus", | |
"EmergencyRequestWidget": "EmergencyRequestWidget", | |
"EmergencyRequestWidgetInput": "EmergencyRequestWidgetInput", | |
"EmergencyRequestWidgetMetaData": "EmergencyRequestWidgetMetaData", | |
"EmergencyRequestWidgetMetaDataInput": "EmergencyRequestWidgetMetaDataInput", | |
"EmptyResponse": "EmptyResponse", | |
"Error": "Error", | |
"ErrorCodes": "ErrorCodes", | |
"EthernetSettings": "EthernetSettings", | |
"ExportEmail": "ExportEmail", | |
"ExportEmailUsage": "ExportEmailUsage", | |
"ExportEmailsResponse": "ExportEmailsResponse", | |
"FailedUserSessionSync": "FailedUserSessionSync", | |
"FeedConfig": "FeedConfig", | |
"FeedConfigInput": "FeedConfigInput", | |
"FeedConfigInputOperation": "FeedConfigInputOperation", | |
"FeedOverviewResponse": "FeedOverviewResponse", | |
"FeedOverviewWidget": "FeedOverviewWidget", | |
"FeedWidget": "FeedWidget", | |
"FeedWidgetResponse": "FeedWidgetResponse", | |
"FeedWidgetsResponse": "FeedWidgetsResponse", | |
"File": "File", | |
"GeoFeedPoint": "GeoFeedPoint", | |
"GeoFeedPointInput": "GeoFeedPointInput", | |
"Group": "Group", | |
"GroupReportType": "GroupReportType", | |
"GroupsResponse": "GroupsResponse", | |
"Interfaces": "Interfaces", | |
"IsActiveUserSessionResponse": "IsActiveUserSessionResponse", | |
"IsValidUserSessionResponse": "IsValidUserSessionResponse", | |
"JourneyInfoByApsResponseInput": "JourneyInfoByApsResponseInput", | |
"JourneyInfoJsonFromFeedInput": "JourneyInfoJsonFromFeedInput", | |
"JourneyInfoMetaDataInput": "JourneyInfoMetaDataInput", | |
"JourneyInfoWidget": "JourneyInfoWidget", | |
"JourneyInfoWidgetInput": "JourneyInfoWidgetInput", | |
"JourneyInfoWidgetMetaData": "JourneyInfoWidgetMetaData", | |
"LogLevel": "LogLevel", | |
"LoginMethodPolicy": "LoginMethodPolicy", | |
"LoginMethodPolicyInput": "LoginMethodPolicyInput", | |
"LoginMethodPolicyResponse": "LoginMethodPolicyResponse", | |
"MovingMapMetaDataInput": "MovingMapMetaDataInput", | |
"MovingMapWidget": "MovingMapWidget", | |
"MovingMapWidgetInput": "MovingMapWidgetInput", | |
"MovingMapWidgetMetaData": "MovingMapWidgetMetaData", | |
"Mutation": "Mutation", | |
"NetworkUserPoliciesResponse": "NetworkUserPoliciesResponse", | |
"NetworkUserPolicy": "NetworkUserPolicy", | |
"NetworkUserPolicyInput": "NetworkUserPolicyInput", | |
"NetworkUserPolicyResponse": "NetworkUserPolicyResponse", | |
"NetworkUserPolicyUpdateInput": "NetworkUserPolicyUpdateInput", | |
"NodeAccess": "NodeAccess", | |
"NodeAccessNAT": "NodeAccessNAT", | |
"NodeAccessOpenVPN": "NodeAccessOpenVPN", | |
"NodeAccessType": "NodeAccessType", | |
"NodeAccessVLAN": "NodeAccessVLAN", | |
"NodeNetwork": "NodeNetwork", | |
"NodeUplink": "NodeUplink", | |
"NodeUplinkDHCPv4": "NodeUplinkDHCPv4", | |
"NodeUplinkStaticv4": "NodeUplinkStaticv4", | |
"Page": "Page", | |
"PageInput": "PageInput", | |
"PageResponse": "PageResponse", | |
"PagesResponse": "PagesResponse", | |
"PoiMatch": "PoiMatch", | |
"PoiMatchInput": "PoiMatchInput", | |
"PoiMatchStop": "PoiMatchStop", | |
"PoiMatchStopInput": "PoiMatchStopInput", | |
"PoiMatchTranslatable": "PoiMatchTranslatable", | |
"Policy": "Policy", | |
"PolicyInput": "PolicyInput", | |
"Preview": "Preview", | |
"Query": "Query", | |
"ReportingPermission": "ReportingPermission", | |
"Reporting_ErrorCodes": "Reporting_ErrorCodes", | |
"Reporting_GenerateReportsResponse": "Reporting_GenerateReportsResponse", | |
"Reporting_ID_Type": "Reporting_ID_Type", | |
"RequestHoldInput": "RequestHoldInput", | |
"ResourceResponse": "ResourceResponse", | |
"ResourcesResponse": "ResourcesResponse", | |
"Response": "Response", | |
"ResultCode": "ResultCode", | |
"SessionEvent": "SessionEvent", | |
"SessionEventInput": "SessionEventInput", | |
"SessionState": "SessionState", | |
"SimpleJSON": "SimpleJSON", | |
"SimpleTextMetaDataInput": "SimpleTextMetaDataInput", | |
"SimpleTextSnippets": "SimpleTextSnippets", | |
"SimpleTextSnippetsInput": "SimpleTextSnippetsInput", | |
"SimpleTextWidget": "SimpleTextWidget", | |
"SimpleTextWidgetInput": "SimpleTextWidgetInput", | |
"SimpleTextWidgetMetaData": "SimpleTextWidgetMetaData", | |
"Snippet": "Snippet", | |
"SnippetInput": "SnippetInput", | |
"SnippetOnly": "SnippetOnly", | |
"SnippetResponse": "SnippetResponse", | |
"SnippetsOnlyResponse": "SnippetsOnlyResponse", | |
"SnippetsResponse": "SnippetsResponse", | |
"Splashpage": "Splashpage", | |
"SplashpageInput": "SplashpageInput", | |
"SplashpageLocalApiResponse": "SplashpageLocalApiResponse", | |
"SplashpageLogInput": "SplashpageLogInput", | |
"SplashpageResponse": "SplashpageResponse", | |
"SplashpageShort": "SplashpageShort", | |
"SplashpageTranslatable": "SplashpageTranslatable", | |
"SplashpagesResponse": "SplashpagesResponse", | |
"StringOptional": "StringOptional", | |
"StructuredTextCategory": "StructuredTextCategory", | |
"StructuredTextCategoryInput": "StructuredTextCategoryInput", | |
"StructuredTextEntry": "StructuredTextEntry", | |
"StructuredTextEntryInput": "StructuredTextEntryInput", | |
"StructuredTextMetaDataInput": "StructuredTextMetaDataInput", | |
"StructuredTextWidget": "StructuredTextWidget", | |
"StructuredTextWidgetInput": "StructuredTextWidgetInput", | |
"StructuredTextWidgetMetaData": "StructuredTextWidgetMetaData", | |
"SupportFormSubmitInput": "SupportFormSubmitInput", | |
"SupportFormSubmitSyncInput": "SupportFormSubmitSyncInput", | |
"SupportFormWidget": "SupportFormWidget", | |
"SupportFormWidgetInput": "SupportFormWidgetInput", | |
"SupportInfoWidget": "SupportInfoWidget", | |
"SupportInfoWidgetInput": "SupportInfoWidgetInput", | |
"TLSCertificate": "TLSCertificate", | |
"TimeSpanOptional": "TimeSpanOptional", | |
"TincKey": "TincKey", | |
"TincKeyResponse": "TincKeyResponse", | |
"TincPublicKey": "TincPublicKey", | |
"Translatable": "Translatable", | |
"TranslatableInput": "TranslatableInput", | |
"TranslatablePoiMatchInput": "TranslatablePoiMatchInput", | |
"Upload": "Upload", | |
"Usage": "Usage", | |
"UserSession": "UserSession", | |
"UserSessionAccountingBatchInput": "UserSessionAccountingBatchInput", | |
"UserSessionAccountingInput": "UserSessionAccountingInput", | |
"UserSessionIdResponse": "UserSessionIdResponse", | |
"UserSessionInfo": "UserSessionInfo", | |
"UserSessionInfoInput": "UserSessionInfoInput", | |
"UserSessionInfoResponse": "UserSessionInfoResponse", | |
"UserSessionSync": "UserSessionSync", | |
"UserSessionSyncErrorCode": "UserSessionSyncErrorCode", | |
"UserSessionSyncInput": "UserSessionSyncInput", | |
"UserSessionsResponse": "UserSessionsResponse", | |
"UserSessionsSyncInput": "UserSessionsSyncInput", | |
"UserSessionsSyncResponse": "UserSessionsSyncResponse", | |
"Widget": "Widget", | |
"WidgetResponse": "WidgetResponse", | |
"WidgetsResponse": "WidgetsResponse", | |
"Wifi4EUWidget": "Wifi4EUWidget", | |
"Wifi4EUWidgetInput": "Wifi4EUWidgetInput", | |
"WifiSettings": "WifiSettings", | |
"_AuthzServiceEntityPlaceholder": "_AuthzServiceEntityPlaceholder", | |
"_DMServiceEntityPlaceholder": "_DMServiceEntityPlaceholder", | |
"_ReportingServiceEntityPlaceholder": "_ReportingServiceEntityPlaceholder", | |
"__Schema": "__Schema", | |
"__Type": "__Type", | |
"__TypeKind": "__TypeKind", | |
"__Field": "__Field", | |
"__InputValue": "__InputValue", | |
"__EnumValue": "__EnumValue", | |
"__Directive": "__Directive", | |
"__DirectiveLocation": "__DirectiveLocation" | |
}, | |
"_subTypeMap": {}, | |
"_implementationsMap": { | |
"Response": { | |
"objects": [ | |
"ActivateUserSessionResponse", | |
"ClientInfoResponse", | |
"CopyResourcesResponse", | |
"EmailCIDsResponse", | |
"EmptyResponse", | |
"ExportEmailsResponse", | |
"FeedOverviewResponse", | |
"FeedWidgetResponse", | |
"FeedWidgetsResponse", | |
"GroupsResponse", | |
"IsActiveUserSessionResponse", | |
"IsValidUserSessionResponse", | |
"LoginMethodPolicyResponse", | |
"NetworkUserPoliciesResponse", | |
"NetworkUserPolicyResponse", | |
"PageResponse", | |
"PagesResponse", | |
"ResourceResponse", | |
"ResourcesResponse", | |
"SnippetResponse", | |
"SnippetsOnlyResponse", | |
"SnippetsResponse", | |
"SplashpageLocalApiResponse", | |
"SplashpageResponse", | |
"SplashpagesResponse", | |
"TincKeyResponse", | |
"UserSessionIdResponse", | |
"UserSessionInfoResponse", | |
"UserSessionsResponse", | |
"UserSessionsSyncResponse", | |
"WidgetResponse", | |
"WidgetsResponse" | |
], | |
"interfaces": [] | |
}, | |
"Widget": { | |
"objects": [ | |
"CampaignWidget", | |
"ConnectWidget", | |
"EmergencyRequestWidget", | |
"JourneyInfoWidget", | |
"MovingMapWidget", | |
"SimpleTextWidget", | |
"StructuredTextWidget", | |
"SupportFormWidget", | |
"SupportInfoWidget", | |
"Wifi4EUWidget" | |
], | |
"interfaces": [] | |
}, | |
"DM_LogEvent": { | |
"objects": [ | |
"DM_AuditLogEvent", | |
"DM_AuditLogEventDetails", | |
"DM_HeartbeatEvent" | |
], | |
"interfaces": [] | |
}, | |
"DM_Node": { | |
"objects": [ | |
"DM_Device", | |
"DM_GroupConfig" | |
], | |
"interfaces": [] | |
}, | |
"DM_NodeAccess": { | |
"objects": [ | |
"DM_NodeAccessBridge", | |
"DM_NodeAccessCloudNAT", | |
"DM_NodeAccessDirectConnection", | |
"DM_NodeAccessMultiUplink", | |
"DM_NodeAccessNAT", | |
"DM_NodeAccessPortForward", | |
"DM_NodeAccessService", | |
"DM_NodeAccessVLAN", | |
"DM_NodeAccessVPN" | |
], | |
"interfaces": [] | |
}, | |
"DM_NodeHardware": { | |
"objects": [ | |
"DM_NodeHardwareEthernet", | |
"DM_NodeHardwareRadio" | |
], | |
"interfaces": [] | |
}, | |
"DM_NodeUplink": { | |
"objects": [ | |
"DM_NodeUplinkDHCPClient", | |
"DM_NodeUplinkStaticIPv4" | |
], | |
"interfaces": [] | |
}, | |
"DM_ReportingDeviceEvent": { | |
"objects": [ | |
"DM_ReportingDeviceEventDeviceOnline" | |
], | |
"interfaces": [] | |
}, | |
"NodeAccess": { | |
"objects": [ | |
"NodeAccessNAT", | |
"NodeAccessOpenVPN", | |
"NodeAccessVLAN" | |
], | |
"interfaces": [] | |
}, | |
"NodeUplink": { | |
"objects": [ | |
"NodeUplinkDHCPv4", | |
"NodeUplinkStaticv4" | |
], | |
"interfaces": [] | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment