#%RAML 1.0 title: Operations Manager REST mediaType: application/json annotationTypes: deprecated: properties: replaceWith: type: string description: | Describe the alternative resource/method that can be used as a substitute. required: true since: type: string pattern: (0[1-9]|10|11|12)/20[0-9]{2} required: true description: Describe when the resource/method became deprecated in the format (mm/YYYY) allowedTargets: [Resource, Method] displayName: Deprecated description: | A deprecated resource or method is *not* recommended for new work. The resource or method will be removed in a future version of the API. Deprecation does NOT mean it is not supported anymore in the current version. deprecatedProperty: properties: replaceWith: type: object description: | Describe the alternative property in an object that can be used as a substitute. required: false since: type: string pattern: (0[1-9]|10|11|12)/20[0-9]{2} required: true description: Describe when the property became deprecated in the format (mm/YYYY) allowedTargets: [TypeDeclaration] displayName: Deprecated Property description: | A deprecated property is *not* recommended for new work. Deprecated properties will take precedence over their new counterparts by overlaying those changes to maintain backwards compatibility if the deprecated property has been replaced with a new alias. For example if new_key is an alias for a deprecated property old_key, if both old_key and new_key are given in the same operation, new_key will be applied first, and then the old_key will be applied last, overwriting the new_key value. If a PATCH operation has been emulated, it is recommended to first remove the deprecated properties before re-using that data in a PUT. The property will be removed in a future version of the API. Deprecation does NOT mean it is not supported anymore in the current version. version: v2 documentation: - title: Operations Manager REST API content: This API allows control and inspection of an Opengear Operations Manager appliance. baseUri: https://{appliancehost}/api/v2 protocols: [ HTTPS ] securitySchemes: token: description: Operations Manager base authentication scheme type: Basic Authentication describedBy: headers: Authorization: description: authorization session token type: string displayName: Authorization example: Token 521a00e57d4a461b3e4bb0c55166f97c types: error: type: object properties: error: type: array description: A list of errors items: type: object properties: type: type: integer code: type: integer level: type: integer text: type: string args: type: object credentials: type: object properties: username: type: string password: type: string new_password: type: string required: false confirm_password: type: string required: false errorString: type: object properties: error: type: string getSessionResponse: type: object properties: state: type: string session: type: string user: type: string required: false last_challenge: type: string required: false putUsers: type: object properties: "users": type: array description: The users to add items: type: object properties: "username": type: string "password": type: string description: The plaintext password to set for the user. "hashed_password": type: string required: false description: A hashed password, compatible with the crypt GNU C Library function, to set for the user. "description": type: string required: false "groups": type: array description: A list of group ids items: string setUser: type: object properties: "user": type: object properties: username: type: string description: type: string required: false enabled: type: boolean password: type: string required: false description: The plaintext password to set for the user. hashed_password: type: string required: false description: A hashed password, compatible with the crypt GNU C Library function, to set for the user. no_password: type: boolean description: Remote authentication is used if this flag is set. ssh_password_enabled: description: Whether SSH password access is enabled (default is true). If false a user can only use SSH with SSH keys. type: boolean required: false groups: type: array description: A list of groups for which this user is a member. items: string getUserResponse: type: object properties: "user": type: object properties: "username": type: string "description": type: string required: false "enabled": type: boolean "id": type: string "no_password": type: boolean description: Remote authentication is used if this flag is set. "ssh_password_enabled": type: boolean description: Whether SSH password access is enabled (default is true). If false a user can only use SSH with SSH keys. "hashed_password": type: string description: A hashed password compatible with the crypt GNU C Library function. "rights": type: object properties: "delete": type: boolean "modify": type: boolean "groups": type: array description: A list of groups items: string "groupNames": type: array description: A list of group names items: string getUserResponseSingle: type: object properties: "username": type: string "description": type: string required: false "enabled": type: boolean "id": type: string "no_password": type: boolean "ssh_password_enabled": type: boolean "hashed_password": type: string description: A hashed password compatible with the crypt GNU C Library function. "rights": type: object properties: "delete": type: boolean "modify": type: boolean "groups": type: array description: A list of groups items: string "groupNames": type: array description: A list of group names items: string getUserListResponse: type: object properties: "users": type: array items: type: getUserResponseSingle meta: metaResponse userSSHAuthorizedKey: type: object properties: id: type: string description: ID of SSH key key: type: string description: The SSH key userSSHAuthorizedKeys: type: object properties: authorized_keys: type: array items: userSSHAuthorizedKey allUsersSSHAuthorizedKey: type: userSSHAuthorizedKey properties: username: type: string description: The user associated with the SSH key allUsersSSHAuthorizedKeys: type: object properties: system_authorized_keys: type: array items: allUsersSSHAuthorizedKey allUsersSSHAuthorizedKeyPost: type: object properties: system_authorized_key: type: object properties: key: type: string description: The SSH key username: type: string description: The user associated with the SSH key allUsersSSHAuthorizedKeyGet: type: object properties: system_authorized_key: type: allUsersSSHAuthorizedKey userSSHAuthorizedKeyGet: type: object properties: authorized_key: type: userSSHAuthorizedKey userSSHAuthorizedKeyPost: type: object properties: authorized_key: type: object properties: key: type: string getLLDPResponse: type: object properties: "lldp": type: object properties: "enabled": type: boolean "description": type: string "platform": type: string "physifs": type: array items: type: string putLLDP: type: object properties: "lldp" : type: object properties: "enabled": type: boolean "description": type: string required: false "platform": type: string required: false "physifs": type: array items: type: string lldpChassis: type: object properties: lldpstat: type: object properties: name: type: string mac: type: string Bridge: type: boolean Router: type: boolean Station: type: boolean Wlan: type: boolean descr: type: string mgmt_ip: type: array items: type: string lldpNeighbor: type: object properties: lldp-status-neighbor: type: array items: type: object properties: name: type: string remote_name: type: string remote_mac: type: string mgmt_ip: type: array items: type: string port_name: type: string port: type: string id: type: integer getSyslogServerResponse: type: object properties: "syslogServer": type: object properties: "id": type: string "port": type: integer "protocol": type: string "address": type: string "description": type: string "port_logging_enabled": type: boolean "min_severity": type: string enum: [ "info", "alert", "critical", "debug", "emergency", "error", "info", "notice", "warning" ] getSyslogServerResponseSingle: type: object properties: "id": type: string "port": type: integer "protocol": type: string "address": type: string "description": type: string "port_logging_enabled": type: boolean "min_severity": type: string enum: [ "info", "alert", "critical", "debug", "emergency", "error", "info", "notice", "warning" ] getSyslogServerListResponse: type: object properties: "syslogServers": type: array items: type: getSyslogServerResponseSingle putSyslogServer: type: object properties: "syslogServer" : type: object properties: "port": type: integer required: false "protocol": type: string required: false "address": type: string "description": type: string required: false "port_logging_enabled": type: boolean required: false "min_severity": type: string required: false enum: [ "info", "alert", "critical", "debug", "emergency", "error", "info", "notice", "warning" ] getLogLinesResponse: type: object properties: "id": string "no_of_log_lines": integer "log_lines": type: array items: string getSyslogLinesResponse: type: object properties: "syslog": type: getLogLinesResponse getPortLogLinesResponse: type: object properties: "portlog": type: getLogLinesResponse user: type: object properties: "id": string "username": string "description": string "enabled": boolean "groups": type: array items: string getGroupResponse: type: object properties: "group": type: getGroupResponseSingle getGroupResponseSingle: type: object properties: "id": type: string "enabled": type: boolean "groupname": type: string "mode": type: string "role": type: string "description": type: string required: false "members": type: array items: type: string "ports": type: array required: false items: type: string "rights": type: object properties: "delete": type: boolean "modify": type: boolean getGroupListResponse: type: object properties: "groups": type: array items: type: getGroupResponseSingle meta: metaResponse putGroups: type: object properties: "groups": type: array description: The groups to add items: type: object properties: "name": "type": string "required": true "description": "type": string "required": false "roles": "type": array "required": true "items": "type": string "ports": "type": array "required": true "items": "type": boolean setGroup: type: object properties: "group": type: object properties: "groupname": type: string "enabled": type: boolean "mode": type: string "role": type: string "description": type: string required: false "ports": type: array required: false items: type: string responseToSessionChallenge: type: object properties: session: type: string state: type: object challenge: description: Next challenge (if any) type: string deleteSessionResponse: type: object properties: session: type: string success: type: string state: type: string user: type: string extendSessionResponse: type: object properties: session: type: string success: type: boolean state: type: object seconds_remaining: type: integer format: int32 putPortIpAliasList: type: array items: type: putPortIpAliasListSingle putPortIpAliasListSingle: type: object properties: "ipaddress": type: string "interface": type: string getPortIpAliasListSingle: type: object properties: "id": string "port": string "ipaddress": type: string "interface": type: string getPortIpAliasList: type: array items: type: getPortIpAliasListSingle postPortIpAlias: type: object properties: port_ip_alias: type: object properties: "port": string "ipaddress": type: string "interface": type: string putPortById: type: object properties: port: type: object properties: parity: type: string description: The format of the parity byte. label: type: string description: The label for the serial port. stopbits: type: string description: The number of stop bits between characters. pinout: type: string description: The physical pinout of the port connector. enum: [ "X1", "X2", "USB" ] ip_alias: type: putPortIpAliasList description: An IP address for dedicated access to a specific serial or USB console port. required: false baudrate: type: string description: The communication rate of the port. mode: type: string description: The mode that the port is in. enum: [ "disabled", "consoleServer", "localConsole" ] logging_level: type: string description: Indicates the logging level for the port. enum: [ "disabled", "eventsOnly", "eventsAndReceivedCharacters", "eventsAndAllCharacters" ] databits: type: string description: The number of data bits in a character. escape_char: type: string description: '[**consoleServer mode only**] The escape character for pmshell.' terminal_emulation: type: string description: '[**localConsole mode only**] The terminal emulation type.' kernel_debug: type: boolean description: '[**localConsole mode only**] Emits kernel debug messages from the chosen port. Only one instance of this is allowed per device.' getPortByIdResponseSingle: type: object properties: port: type: getPortResponse getPortResponse: type: object properties: parity: type: string description: The format of the parity byte. label: type: string description: The label for the serial port. id: type: string description: The ID of the serial port. This ID can be used to fetch individual ports using the /ports/ endpoint. stopbits: type: string description: The number of stop bits between characters. status: type: string description: The status of the RJ45 and USB serial ports. If the serial port type is RJ45, then this will always return 'ok'. enum: [ "ok", "disconnected" ] pinout: type: string description: The physical pinout of the port connector. enum: [ "X1", "X2", "USB" ] available_pinouts: type: array items: type: string description: > Valid values for the "pinout" property of this port. Pinout settings are not applicable for USB ports and must always be set to "USB". In addition, some units do not support pinout switching on all ports and in those cases the pinout must always be set to "X2". ip_alias: type: getPortIpAliasList description: An IP address for dedicated access to a specific serial or USB console port. baudrate: type: string description: The communication rate of the port. mode: type: string description: The mode that the port is in. enum: [ "disabled", "consoleServer", "localConsole" ] logging_level: type: string description: Indicates the logging level for the port. enum: [ "disabled", "eventsOnly", "eventsAndReceivedCharacters", "eventsAndAllCharacters" ] databits: type: string description: The number of data bits in a character. escape_char: type: string description: '[**consoleServer mode only**] The escape character for pmshell.' terminal_emulation: type: string description: '[**localConsole mode only**] The terminal emulation type.' kernel_debug: type: boolean description: '[**localConsole mode only**] Emits kernel debug messages from the chosen port. Only one instance of this is allowed per device.' sessions: type: array items: type: getPortSessionResponse device: type: string getPortByIdResponseList: type: object properties: "ports": type: array items: type: getPortResponse meta: metaResponse getPortSessionResponse: type: object properties: username: string client_pid: integer getPortSessionResponseSingle: type: object properties: port_session: type: getPortSessionResponse getPortSessionResponseList: type: object properties: port_sessions: type: array items: type: getPortSessionResponse deleteMultiplePortSessionsResponse: type: object properties: disconnected_session_count: integer putMgmtPortById: type: object properties: "managementport": type: object properties: "device": type: string "enabled": type: boolean "kerneldebug": type: boolean "termemulation": type: string enum: [ "vt100", "vt102", "vt220", "linux", "ansi" ] "baud": type: string "databits": type: string "parity": type: string "stopbits": type: string getMgmtPortByIdResponse: type: object properties: "managementport": type: object properties: "id": type: string "device": type: string "enabled": type: boolean "kerneldebug": type: boolean "termemulation": type: string enum: [ "vt100", "vt102", "vt220", "linux", "ansi" ] "baud": type: string "databits": type: string "parity": type: string "stopbits": type: string getMgmtPortListResponseSingle: type: object properties: "id": string "device": string "enabled": boolean "kerneldebug": boolean "termemulation": type: string enum: [ "vt100", "vt102", "vt220", "linux", "ansi" ] "baud": string "databits": string "parity": string "stopbits": string getMgmtPortByIdResponseList: type: object properties: "managementports": type: array items: type: getMgmtPortListResponseSingle meta: metaResponse putPortPowerAction: type: object properties: "cmd": type: object properties: "action": type: string enum: [ # valid values are defined by ogpowergroup and validated in Port.lua "on", "off", "cycle", "status" ] putPortPowerActionResponse: type: object properties: "cmd": type: string getSearchResponse: type: object properties: "search": type: object properties: "id": type: string searchFieldsResponse: type: object properties: "fields": type: array items: type: string getPhysifList : description: "A list of network interfaces" type: object properties: "physifs": type: array items: type: physifItemSingle bondSetting: type: object properties: "mode": type: string enum: [ "balance-rr", "active-backup", "balance-xor", "broadcast", "802.3ad", "balance-tlb", "balance-alb" ] "poll_interval": type: integer required: false description: > Specifies the MII link monitoring frequency in milliseconds. This determines how often the link state of each slave is inspected for link failures. A value of zero disables MII link monitoring. "primary_slave": type: (string | nil) required: false description: > Reference to the primary interface which will be added to the bond first. This interface will be the preffered interface for applicable bond modes such as active_backup. Only nil if the bond has no slave interfaces. bridgeSetting: type: object properties: "stp_enabled": type: boolean required: false description: > Enable Spanning Tree Protocol (STP) on the bridge. STP communicates with other switches on the network to prevent bridge loops and allows for backup links to be used. vlanSetting: type: object properties: "parent_physif": type: string required: false description: > Primary physical interface used for vlan configuration "vlan_id": type: integer required: false description: > The VLAN identifier (VID) for this interface. putPhysif: type: object description: "A single physical interface" properties: "physif": type: object properties: "enabled": type: "boolean" "mtu": type: number required: false "description": type: string required: false "ethernet_setting": type: object required: false properties: "link_speed": type: string "cellular_setting": type: object required: false properties: "apn": type: string required: false (deprecatedProperty): replaceWith: {"cellular_setting": { "sims": [{"apn": "apn"}]}} since: 10/2020 "username": type: string required: false (deprecatedProperty): replaceWith: {"cellular_setting": { "sims": [{"username": "username"}]}} since: 10/2020 "password": type: string required: false (deprecatedProperty): replaceWith: {"cellular_setting": { "sims": [{"password": "password"}]}} since: 10/2020 "iptype": type: string required: false (deprecatedProperty): replaceWith: {"cellular_setting": { "sims": [{"iptype": "IPv4v6"}]}} since: 10/2020 "id": type: string "active_sim": type: number minimum: 1 maximum: 2 required: false "sims": type: array items: type: object required: false properties: "id": type: string "slot": type: number minimum: 1 maximum: 2 required: false "apn": type: string required: false "username": type: string required: false "password": type: string required: false "iptype": type: string required: false "slaves": type: array required: false description: > A list of slave interface references. items: type: string "bond_setting": type: bondSetting required: false "bridge_setting": type: bridgeSetting required: false "vlan_setting": type: vlanSetting required: false postPhysif: type: object description: "A single interface" properties: "physif": type: object properties: "enabled": type: boolean "mtu": type: number required: false "description": type: string required: false "media": type: string enum: [ "bridge", "bond", "vlan", ] "slaves": description: > A list of physif uuids to become the aggregate slaves. Network connections and other settings from the first slave will be assigned to the aggregate. Network connections and other settings from other slaves will be removed. The first slave is set as the primary interface for a bond. type: array required: false items: type: string "bond_setting": type: bondSetting required: false "bridge_setting": type: bridgeSetting required: false "vlan_setting": type: vlanSetting required: false physifItemSingle: type: object description: "A network physical interface" properties: "enabled": type: "boolean" "name": type: string "mtu": type: number required: false "device": type: string "description": type: string "media": type: string "id": type: string "master": type: string description: "The UUID of the aggregate physif if this interface belongs to one" required: false "ethernet_setting": type: object required: false properties: "link_speed": type: string "id": type: string "cellular_setting": type: object required: false properties: "apn": type: string required: false (deprecatedProperty): replaceWith: {"cellular_setting": { "sims": [{"apn": "apn"}]}} since: 10/2020 "username": type: string required: false (deprecatedProperty): replaceWith: {"cellular_setting": { "sims": [{"username": "username"}]}} since: 10/2020 "password": type: string required: false (deprecatedProperty): replaceWith: {"cellular_setting": { "sims": [{"password": "password"}]}} since: 10/2020 "iptype": type: string required: false (deprecatedProperty): replaceWith: {"cellular_setting": { "sims": [{"iptype": "IPv4v6"}]}} since: 10/2020 "id": type: string "active_sim": type: number minimum: 1 maximum: 2 required: false "sims": type: array items: type: object required: false properties: "id": type: string "slot": type: number minimum: 1 maximum: 2 "apn": type: string required: false "username": type: string required: false "password": type: string required: false "iptype": type: string required: false "runtime_status": type: object required: false properties: "id": type: string "iccid": type: string required: false "status": type: string required: false "bond_setting": type: bondSetting required: false "bridge_setting": type: bridgeSetting required: false "vlan_setting": type: object required: false properties: "parent_physif": type: string description: > Reference to the primary interface which will be used for this VLAN interface "vlan_id": type: integer description: > The VLAN tag ID associated with this VLAN interface "slaves": type: array required: false description: > A list of slave interface references. items: type: string "runtime_status": type: object properties: "status": type: string "carrier": type: string required: false "id": type: string physifItem: type: object description: "A network physical interface" properties: "physif": type: physifItemSingle conn_return_status_ipv4_address: description: "A type used to represent IPv4 Address type of a conn" type: object "properties": "id": type: string "address": "type": string required: false "netmask": type: string required: false conn_return_status_ipv6_address: description: "A type used to represent IPv4 Address type of a conn" type: object "properties": "id": type: string "address": "type": string required: false "prefix_length": type: number required: false getConnList : description: "A list of network Conns" type: object properties: conns: type: array items: properties: "id": type: string required: false description: type: string "physif": type: string name: type: string "mode": type: string "runtime_status": type: object properties: "status": type: string "last_status_change": type: number "id": type: string "addresses": type: (conn_return_status_ipv4_address | conn_return_status_ipv6_address)[] "gateway": type: string "dns1": type: string "dns2": type: string required: false "ipv4_static_settings": type: object properties: "id": type: string "netmask": type: string "address": type: string "broadcast": type: string required: false "gateway": type: string required: false "dns1": type: string required: false "dns2": type: string required: false required: false "ipv6_static_settings": type: object properties: "id": type: string "prefix_length": type: string "address": type: string "gateway": type: string required: false "dns1": type: string required: false "dns2": type: string required: false required: false connItem: type: object description: "A network Conn" properties: "conn": type: object properties: "name": type: string required: false "ipv4_static_settings": type: object properties: "id": type: string required: false "netmask": type: string "address": type: string "broadcast": type: string required: false "gateway": type: string required: false "dns1": type: string required: false "dns2": type: string required: false required: false "ipv6_static_settings": type: object properties: "id": type: string "prefix_length": type: number "address": type: string "gateway": type: string required: false "dns1": type: string required: false "dns2": type: string required: false required: false "id": type: string required: false "mode": type: string description: type: string required: false "physif": type: string "runtime_status": type: object properties: "status": type: string "addresses": type: (conn_return_status_ipv4_address | conn_return_status_ipv6_address)[] "last_status_change": type: number "id": type: string required: false putConnItem: type: object description: "A list of network Conns" properties: conn: type: object properties: "mode": type: string "physif": type: string "ipv4_static_settings": type: object properties: "netmask": type: string "address": type: string "broadcast": type: string required: false "gateway": type: string required: false "dns1": type: string required: false "dns2": type: string required: false required: false "ipv6_static_settings": type: object properties: "prefix_length": type: string "address": type: string "gateway": type: string required: false "dns1": type: string required: false "dns2": type: string required: false required: false getSupportReport: type: object description: "A concise system report" properties: "support_report": type: object properties: "contents": type: string description: "A new line delimited dump of the current state of the system." "zip_file": type: string description: "url to a zip file which contains the system report." systemSSHPort: type: object properties: system_ssh_port: type: object properties: port: number systemHostname: type: object properties: system_hostname: type: object properties: hostname: string systemBanner: type: object properties: system_banner: type: object properties: banner: string systemTimezone: type: object properties: system_timezone: type: object properties: timezone: string systemTime: type: object properties: time: type: object properties: time: type: string systemVersion: type: object properties: system_version: type: object properties: rest_api_version: string firmware_version: string systemAdminInfo: description: "A map of the Operations Manager System Admin Information" type: object properties: system_admin_info: type: object properties: hostname: string contact: string location: string lighthouseEnrollmentsList: description: "A list of the lighthouse enrollments" type: object properties: lighthouse-enrollments: type: array items: properties: "port": type: integer required: false "address": type: string "id": type: string "bundle": type: string required: false "status": type: string lighthouseEnrollmentItem: type: object description: "Lighthouse Enrollment information" properties: lighthouse_enrollment: type: object properties: "port": type: integer required: false "address": type: string "id": type: string "bundle": type: string required: false "status": type: string lighthouseEnrollmentPost: type: object description: "Data to use to initiate a callhome enrollment" properties: lighthouse_enrollment: type: object properties: "address": type: string "port": type: integer required: false "bundle": type: string required: false "token": type: string registrationItem: type: object description: "Data used to register node to Lighthouse" properties: "id": type: string "package_password": type: string "server": type: string "server_api_port": type: integer required: false lh_ext_eps: type: array required: false items: properties: "server": type: string "server_api_port": type: integer required: false "server_vpn_port": type: integer required: false registrationAddress: type: object description: "Object containing address to update lhvpn_tunnel to" properties: "address": type: string systemSerialNumber: type: object properties: system_serial_number: type: object properties: serial_number: string systemModelName: type: object properties: system_model_name: type: object properties: model_name: string sshResponse: type: object properties: ssh: type: object properties: ssh_url_delimiter: type: string sshPut: type: object properties: ssh: type: object properties: ssh_url_delimiter: type: string required: false maxstartups_start: type: integer required: false maxstartups_rate: type: integer required: false maxstartups_full: type: integer required: false unauthenticated_serial_port_access: type: boolean required: false metaResponse: type: object properties: searchId: type: string required: false total_pages: type: string required: false firmwareUpgradeStatus: type: object properties: system_firmware_upgrade_status: type: object properties: state: type: string enum: [ "pending", "running", "error", "finished" ] error_message: required: false type: string enum: [ "format_error", "download_error", "version_error", "runtime_error" ] script_metadata: description: "Operations Manager Script Configuration" type: object properties: script_timeout: type: integer description: The number of minutes that the script is allowed to run script_checksum: type: string description: The SHA1 checksum of the script script_execution_status: description: "Operations Manager Script Execution Status" type: object properties: script_status: type: string enum: [ "in_progress", "timed_out", "completed" ] script_info: description: "Script Upload Status" type: object properties: "info": type: string "execution_id": type: integer getFirewallServicesListItemPort: description: "A firewall service port" type: object properties: "protocol": type: string "port": type: integer getFirewallServicesListItem: description: "A firewall service" type: object properties: "id": type: string "name": type: string "label": type: string "ports": type: array items: type: getFirewallServicesListItemPort getFirewallServicesListResponse: description: "A list of firewall services" type: object properties: "firewall_services": type: array items: type: getFirewallServicesListItem meta: metaResponse setFirewallService: description: "A single firewall service" type: object properties: "firewall_service": type: object properties: "name": type: string "label": type: string "ports": type: array items: type: getFirewallServicesListItemPort getFirewallServiceResponse: description: "A single firewall service" type: object properties: "firewall_service": type: getFirewallServicesListItem getFirewallPortForwardRuleListItem: description: "A firewall port forwarding rule" type: object properties: "protocol": type: string "from_port": type: string "to_port": type: integer "to_address": required: false type: string getFirewallCustomRuleListItem: description: "A custom firewall rule" type: object properties: "rule_content": description: > Additional rich rules to be applied to this zone using firewalld 'rich language'. see https://firewalld.org/documentation/man-pages/firewalld.richlanguage.html type: string "description": required: false type: string description: > Human-readable description (optional)for this rich rule item. getFirewallPortForwardRuleListResponse: description: "A list of firewall port forwarding rules" type: object properties: "firewall_port_forward_rule": type: array items: type: getFirewallPortForwardRuleListItem getFirewallCustomRuleListResponse: description: "A list of firewall custom rules" type: object properties: "firewall_custom_rule": type: array items: type: getFirewallCustomRuleListItem setFirewallPortForwardRule: description: "A single firewall port forwarding rule" type: object properties: "firewall_port_forward_rule": type: object properties: "name": type: string "label": type: string getFirewallPortFowardRuleResponse: description: "A single firewall port forwarding rule" type: object properties: "firewall_port_forward_rule": type: getFirewallPortForwardRuleListItem getFirewallZonesListItem: description: "A firewall zone" type: object properties: "id": type: string "name": type: string "label": type: string "description": type: string "physifs": type: array items: type: string "permit_all_traffic": type: boolean "masquerade": type: boolean "permitted_services": type: array items: type: string "port_forwarding_rules": type: array items: type: getFirewallPortForwardRuleListItem "custom_rules": type: array items: type: getFirewallCustomRuleListItem getFirewallZonesListResponse: description: "A list of firewall zones" type: object properties: "firewall_zones": type: array items: type: getFirewallZonesListItem meta: metaResponse setFirewallZone: description: "A single firewall zone" type: object properties: "firewall_zone": type: object properties: "name": type: string "label": type: string "description": type: string "physifs": type: array items: type: string "permit_all_traffic": type: boolean "masquerade": type: boolean "permitted_services": type: array required: false items: type: string "port_forwarding_rules": type: array required: false items: type: getFirewallPortForwardRuleListItem "custom_rules": type: array required: false items: type: getFirewallCustomRuleListItem getFirewallZoneResponse: description: "A single firewall zone" type: object properties: "firewall_zone": type: getFirewallZonesListItem getFirewallRulesListItem: description: "A firewall rule" type: object properties: "id": type: string "service": type: string "zone": type: string getFirewallRulesListResponse: description: "A list of firewall rules" type: object properties: "firewall_rules": type: array items: type: getFirewallRulesListItem meta: metaResponse bulkDeleteFirewallRuleList: description: "A list of firewall rule ids" type: object properties: "firewall_rules": type: array items: type: string setFirewallRule: description: "A single firewall rule" type: object properties: "firewall_rule": type: object properties: "service": type: string "zone": type: string getFirewallRuleResponse: description: "A single firewall rule" type: object properties: "firewall_rule": type: getFirewallRulesListItem getFirewallPredefinedServicesListItemPort: description: "A predefined firewall service port" type: object properties: protocol: type: string port: description: "Can be a numeric port number or a range such as 5900-5903" type: string getFirewallPredefinedServicesListItem: description: "A predefined firewall service" type: object properties: name: type: string label: type: string ports: type: array items: type: getFirewallPredefinedServicesListItemPort getFirewallPredefinedServicesListResponse: description: "A list of predefined firewall services" type: object properties: predefined_firewall_services: type: array items: type: getFirewallPredefinedServicesListItem meta: metaResponse getFirewallPoliciesListItem: description: "A firewall policy" type: object properties: "id": type: string "name": type: string "description": type: string required: false "ingress_zones": type: array items: type: string "egress_zones": type: array items: type: string getFirewallPoliciesListResponse: description: "A list of firewall policies" type: object properties: "firewall_policies": type: array items: type: getFirewallPoliciesListItem meta: metaResponse setFirewallPolicy: description: "A single firewall policy" type: object properties: "firewall_policy": type: object properties: "name": type: string "description": type: string required: false "ingress_zones": type: array items: type: string "egress_zones": type: array items: type: string getFirewallPolicyResponse: description: "A single firewall policy" type: object properties: "firewall_policy": type: getFirewallPoliciesListItem cellReliabilityTestConfiguration: description: "The cell reliability test configuration" type: object properties: "cell_reliability_test": type: object properties: "enabled": type: boolean "period": type: integer minimum: 0 "test_url": type: array "signal_strength_threshold": type: object properties: "lower": type: integer minimum: 0 maximum: 100 "upper": type: integer minimum: 0 maximum: 100 snmpManager: description: "The SNMP manager legacy configuration" type: object properties: snmp_manager: type: object properties: "protocol": type: string enum: [ "UDP", "TCP", "UDP6", "TCP6" ] "address": type: string required: false "port": type: integer minimum: 1 maximum: 65535 required: false "msg_type": type: string description: Type of SNMP message to send. enum: [ "TRAP", "INFORM", ] "version": type: string enum: [ "v1", "v2c", "v3", ] "community": type: string required: false "auth_protocol": type: string enum: [ "SHA", "MD5", ] required: false "auth_password": type: string required: false "username": type: string required: false "engine_id": type: string required: false "privacy_protocol": type: string enum: [ "AES", "DES", ] required: false "privacy_password": type: string required: false "security_level": type: string enum: [ "noAuthNoPriv", "authNoPriv", "authPriv", ] required: false snmpManagerResponse: description: "The SNMP manager legacy configuration" type: object properties: snmp_manager: type: object properties: "id": type: string "protocol": type: string enum: [ "UDP", "TCP", "UDP6", "TCP6" ] "address": type: string required: false "port": type: integer minimum: 1 maximum: 65535 required: false "msg_type": type: string description: Type of SNMP message to send. enum: [ "TRAP", "INFORM", ] "version": type: string enum: [ "v1", "v2c", "v3", ] "community": type: string required: false "auth_protocol": type: string enum: [ "SHA", "MD5", ] required: false "auth_password": type: string required: false "username": type: string required: false "engine_id": type: string required: false "privacy_protocol": type: string enum: [ "AES", "DES", ] required: false "privacy_password": type: string required: false "security_level": type: string enum: [ "noAuthNoPriv", "authNoPriv", "authPriv", ] required: false snmpAlertManager: description: "The SNMP manager configuration" type: object properties: snmp_alert_manager: type: object properties: "name": type: string required: false "protocol": type: string enum: [ "UDP", "TCP", "UDP6", "TCP6" ] "address": type: string required: false "port": type: integer minimum: 1 maximum: 65535 required: false "msg_type": type: string description: Type of SNMP message to send. enum: [ "TRAP", "INFORM", ] "version": type: string enum: [ "v1", "v2c", "v3", ] "community": type: string required: false "auth_protocol": type: string enum: [ "SHA", "MD5", ] required: false "auth_password": type: string required: false "username": type: string required: false "engine_id": type: string required: false "privacy_protocol": type: string enum: [ "AES", "DES", ] required: false "privacy_password": type: string required: false "security_level": type: string enum: [ "noAuthNoPriv", "authNoPriv", "authPriv", ] required: false snmpManagerListItem: description: "The SNMP manager configuration" type: object properties: "id": type: string "name": type: string required: false "protocol": type: string enum: [ "UDP", "TCP", "UDP6", "TCP6" ] "address": type: string required: false "port": type: integer minimum: 1 maximum: 65535 required: false "msg_type": type: string description: Type of SNMP message to send. enum: [ "TRAP", "INFORM", ] "version": type: string enum: [ "v1", "v2c", "v3", ] "community": type: string required: false "auth_protocol": type: string enum: [ "SHA", "MD5", ] required: false "auth_password": type: string required: false "username": type: string required: false "engine_id": type: string required: false "privacy_protocol": type: string enum: [ "AES", "DES", ] required: false "privacy_password": type: string required: false "security_level": type: string enum: [ "noAuthNoPriv", "authNoPriv", "authPriv", ] required: false snmpAlertManagerResponse: description: "The SNMP manager configuration" type: object properties: snmp_alert_manager: type: snmpManagerListItem getSnmpAlertManagerList: description: "A list of SNMP Managers" type: object properties: "snmp_alert_managers": type: array items: type: snmpManagerListItem snmpd: description: "The SNMP Daemon configuration" type: object properties: snmpd: type: object properties: "enabled": type: boolean default: false required: false "port": type: integer minimum: 1 maximum: 65535 default: 161 required: false "protocol": type: string enum: [ "UDP", "TCP", ] default: UDP required: false "enable_legacy_versions": type: boolean default: false required: false "rocommunity": type: string required: false "rwcommunity": type: string required: false "enable_secure_snmp": type: boolean default: false required: false "security_level": type: string enum: [ "noauth", "auth", "priv", ] default: "priv" required: false "security_name": type: string required: false "engine_id": type: string required: false "auth_protocol": type: string enum: [ "SHA", "MD5", ] required: false "auth_use_plaintext": type: boolean default: false required: false "auth_password": type: string required: false "auth_localized_key": type: string required: false "priv_protocol": type: string enum: [ "AES", "DES", ] required: false "priv_use_plaintext": type: boolean default: false required: false "priv_password": type: string required: false "priv_localized_key": type: string required: false authenticationAlert: description: "Configuration for authentication alerts" type: object properties: authentication_trap_group: type: object properties: "enabled": type: boolean systemAlert: description: "Configuration for system alerts" type: object properties: system_trap_group: type: object properties: "enabled": type: boolean "power_supply_millivolt_lower": type: integer "power_supply_millivolt_upper": type: integer networkingAlert: description: "Configuration for networking alerts" type: object properties: "networking_trap_group": type: object properties: "enabled": type: boolean "signal_strength_threshold_lower": type: integer required: false "signal_strength_threshold_upper": type: integer required: false configChangeAlert: description: "Configuration for config change based alerts" type: object properties: config_change_trap_group: type: object properties: "enabled": type: boolean failoverSettings: type: object properties: "enabled": type: boolean "probe_physif": type: string description: "A Failover event occurs if the probe_address is not reachable on this network interface." "probe_address": description: "Probe address can be an IPv4 address, IPv6 address or a hostname. Be aware that hostnames may not resolve during Failover depending on DNS settings." type: string failoverSettingsResponse: description: "The failover settings" type: object properties: "failover_settings": type: failoverSettings failoverSettingsPut: description: "The failover settings" type: object properties: "failover_settings": type: failoverSettings properties: "probe_physif": type: string description: "[**Optional when Failover is disabled**]
A Failover event occurs if the probe_address is not reachable on this network interface." portlogSettings: description: "The port log settings" type: object properties: "portlog_settings": type: object properties: "facility": type: string enum: [ "daemon", "auth", "authpriv", "cron", "daemon", "ftp", "kern", "lpr", "mail", "news", "syslog", "user", "uucp", "local0", "local1", "local2", "local3", "local4", "local5", "local6", "local7" ] "severity": type: string enum: [ "info", "alert", "critical", "debug", "emergency", "error", "info", "notice", "warning" ] exportType: type: object properties: "export": type: object failoverStatus: type: object properties: "failover_status": type: object properties: "status": description: "Failover status" type: string enum: [ "primary_starting", "primary_complete", "primary_stopping", "failover_starting", "failover_complete", "failover_stopping", "disabled", "unknown" ] cellFWInfo: type: object properties: "cellfw_info": type: object properties: "firmware": type: string "operating_mode": type: string getCellModemInfo: description: "Cell Modem Status Information" type: object properties: "cellmodem": type: object properties: "enabled": description: Is the cell modem currently enabled type: boolean "device": description: Device name type: string "up": description: Is this cell modem currently connected type: boolean "signalStrength": description: Signal quality (%) (backwards compatable) type: integer "signal_quality": description: Signal quality (%) type: integer "rssi": description: Received Signal Strength Indicator (RSSI) type: integer "technology": description: Access technology type: string "modem_status": description: Modem status type: string "failure_reason": description: Failure reason type: string "ipv4_addresses": description: IPv4 addresses of the cell modem type: array items: type: string "ipv6_addresses": description: IPv6 addresses of the cell modem type: array items: type: string "failover": description: Details about whether failover is enabled on the cell modem required: false type: object properties: "enabled": description: Is Failover enabled type: boolean "active": description: Is Failover active type: boolean "dormant": description: Does the interface stay up when not failed-over to type: boolean "sims": description: Details about the current SIM cards required: false type: object properties: "active_sim": description: The current selected SIM type: number "sim1": description: Details about SIM1 type: object properties: "iccid": description: SIM ICCID type: string "carrier": description: SIM Carrier type: string "apn": description: SIM APN type: string "ip_type": description: SIM IP-Type type: string "username": description: SIM User type: string "imsi": description: SIM IMSI type: string "state": description: Current state of the SIM type: string "last_update": description: The time-stamp of the last update type: number "signal_strength": description: Signal strength of the modem connection with this SIM type: number sim2: description: Details about SIM2 type: object properties: "iccid": description: SIM ICCID type: string "carrier": description: SIM Carrier type: string "apn": description: SIM APN type: string "ip_type": description: SIM IP-Type type: string "username": description: SIM User type: string "imsi": description: SIM IMSI type: string "state": description: Current state of the SIM type: string "last_update": description: The time-stamp of the last update type: number "signal_strength": description: Signal strength of the modem connection with this SIM type: number getCellModemSimInfo: description: "Cell Modem SIM Status Information" type: object properties: "cellmodem_sims": type: array items: type: getCellModemSimInfoResponseSingle getCellModemSimInfoResponseSingle: description: "Cell Modem SIM Status Information" type: object properties: "id": type: string "active": description: This SIM is the currently selected SIM type: boolean "slot": description: SIM Slot type: number "iccid": description: SIM ICCID type: string "carrier": description: SIM Carrier type: string "apn": description: SIM APN type: string "ip_type": description: SIM IP-Type type: string "username": description: SIM User type: string "imsi": description: SIM IMSI type: string "state": description: Current state of the SIM type: string "last_update": description: The time-stamp of the last update type: number "signal_strength": description: Signal strength of the modem connection with this SIM type: number routingDaemon: description: "Configure routing daemons" type: object properties: routing: type: object properties: bgpd: description: Configuration for the bgp routing daemon type: object properties: enabled: description: Is bdgpd enabled type: boolean ospfd: description: Configuration for the ospf routing daemon type: object properties: enabled: description: Is ospfd enabled type: boolean isisd: description: Configuration for the isis routing daemon type: object properties: enabled: description: Is isisd enabled type: boolean ripd: description: Configuration for the rip routing daemon type: object properties: enabled: description: Is ripd enabled type: boolean tunnelListItem: type: object description: "This object contains configuration information for an IPsec tunnel." properties: "id": type: string description: "Database ID for this IPsec tunnel." "name": type: string description: "Each IPsec tunnel must have a unique symbolic name. The name can contain letters, digits, and hyphens. It will appear in log messages when the tunnel is being established. Use this to distinguish between multiple tunnels on the device." "enabled": type: boolean "initiate": type: boolean description: "When true, the device will actively initiate the tunnel by sending IKE negotiation packets to the remote end. If false, the tunnel will only be activated when an IKE negotiation is initiated by the remote end." "version": type: string description: "An IPsec tunnel can use either the IKEv1 or IKEv2 protocol. IKEv1 also provides the ability to run in aggressive mode which is not applicable to IKEv2" "proposal": type: string description: "Algorithm to be used for Key Exchange for establishing this tunnel" "local_id": type: string description: "Local IKE identity to use for authentication." "remote_id": type: string description: "Remote IKE identity to expect for authentication." "local_address": type: string description: "Local address to be used for this IPsec tunnel. If left blank, this address will be automatically filled during key negotiation." "remote_address": type: string description: "Remote address to be used for this IKE negotiation of this tunnel. If the local device does not initiate the tunnel, incoming requests must match this address." "local_subnet": type: string description: "Local subnet traffic selector to be used for this tunnel. When left blank, this will be replaced by the outer local address of the tunnel upon negotiation." "remote_subnet": type: string description: "Remote subnet traffic selector to be used for this tunnel. When left blank, this will be replaced by the outer remote address of the tunnel upon negotiation." "auth_mode": type: string description: "Authentication type for this tunnel. Currently, 'psk' is the sole option" "shared_secret": type: string description: "For the pre-shared key authentication mode, both ends of the tunnel must use the same key." "runtime_status": type: object properties: "established": type: boolean description: "This value is reported as true when the tunnel has been negotiated successfully and is currently active." tunnelItem: type: object description: "This object contains configuration information for an IPsec tunnel." properties: "name": type: string description: "Each IPsec tunnel must have a unique symbolic name. The name can contain letters, digits, and hyphens. It will appear in log messages when the tunnel is being established. Use this to distinguish between multiple tunnels on the device." "enabled": type: boolean "initiate": type: boolean description: "When true, the device will actively initiate the tunnel by sending IKE negotiation packets to the remote end. If false, the tunnel will only be activated when an IKE negotiation is initiated by the remote end." "version": type: string description: "An IPsec tunnel can use either the IKEv1 or IKEv2 protocol. IKEv1 also provides the ability to run in aggressive mode which is not applicable to IKEv2" "proposal": required: false type: string description: "Algorithm to be used for Key Exchange for establishing this tunnel" "local_id": required: false type: string description: "Local IKE identity to use for authentication." "remote_id": required: false type: string description: "Remote IKE identity to expect for authentication." "local_address": type: string description: "Local address to be used for this IPsec tunnel. If left blank, this address will be automatically filled during key negotiation." "remote_address": type: string description: "Remote address to be used for this IKE negotiation of this tunnel. If the local device does not initiate the tunnel, incoming requests must match this address." "local_subnet": required: false type: string description: "Local subnet traffic selector to be used for this tunnel. When left blank, this will be replaced by the outer local address of the tunnel upon negotiation." "remote_subnet": required: false type: string description: "Remote subnet traffic selector to be used for this tunnel. When left blank, this will be replaced by the outer remote address of the tunnel upon negotiation." "auth_mode": required: false type: string description: "Authentication type for this tunnel. Currently, 'psk' is the sole option" "shared_secret": type: string description: "For the pre-shared key authentication mode, both ends of the tunnel must use the same key." getTunnelList: type: object properties: ipsec_tunnels: type: array items: type: tunnelListItem getTunnelListItem: type: object properties: ipsec_tunnel: type: tunnelListItem putTunnelItem: type: object properties: ipsec_tunnel: type: tunnelItem networkInterfaceMap: type: object properties: "interface": type: string description: "Reference to a physif ID" "attributes": description: A list of attributes to monitor type: array items: type: string enum: [ "address", "broadcast", "carrier", "carrier_changes", "family", "flags", "group", "ifi_type", "ifname", "index", "ipaddr", "ipdb_priority", "ipdb_scope", "kind", "linkmode", "mtu", "neighbours", "num_rx_queues", "num_tx_queues", "operstate", "ports", "promiscuity", "qdisc", "txqlen", ] getAutoResponseBeaconListItem: description: "An Auto-Response Beacon" type: object properties: "id": type: string description: "Database ID for this Auto-Response Beacon." "name": type: string description: "Each Auto-Response Beacon must have a unique symbolic name. Use this to distinguish between multiple beacons on the device." "description": type: string required: false description: "Each Auto-Response Beacon may have an optional description." "module": type: string description: "The corresponding 'salt' Auto-Response module this Beacon will use." enum: [ "btmp", "cell_connection", "cell_signal_strength", "curl", "custom_cmd", "load", "mem", "network", "ping", "serial_login", "serial_pattern", "serial_signal", "cell_message", "wtmp" ] "interval": type: number description: "Interval in seconds between running the Auto-Response Beacon" required: false "enable": type: boolean description: "Turn on this Auto-Response Beacon" "cell_signal_strength": type: object required: false properties: "threshold": type: number minimum: 0 maximum: 99 "on_change_only": type: boolean "emit_at_startup": type: boolean "cell_message": type: object required: false properties: "message_pattern": type: string "phone_numbers": type: array "curl": type: object required: false properties: "urls": type: array "request": type: string "on_change_only": type: boolean default: true "data": type: string required: false "max_time": type: number required: false "custom_cmd": type: object required: false properties: "shell_command": type: string "timeout": type: number "load": type: object required: false properties: "one_minute": type: object properties: "low": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "high": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "five_minute": type: object properties: "low": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "high": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "fifteen_minute": type: object properties: "low": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "high": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "emit_at_startup": type: boolean "on_change_only": type: boolean "mem": type: object required: false properties: "percent": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "on_change_only": type: boolean "network": type: object required: false properties: "coalesce": type: string "interfaces": type: array items: type: networkInterfaceMap "ping": type: object required: false properties: "interface": type: string description: "Reference to a physif ID" "destination": type: string "on_change_only": type: boolean "serial_login": type: object required: false properties: "check_login": type: boolean default: true "check_logout": type: boolean default: true "ports": type: array items: type: string description: "Reference to a port ID" "serial_signal": type: object required: false properties: "ports": type: array items: type: string description: "Reference to a port ID" "signals": type: array items: type: string enum: [cts, dcd, dsr, dtr, rts] description: "List of serial signal types to filter events on" "serial_pattern": type: object required: false properties: "pattern": type: string "disconnect": type: boolean default: false "trigger_rx": type: boolean default: true "trigger_tx": type: boolean default: true "ports": type: array items: type: string description: "Reference to a port ID" "wtmp": type: object required: false properties: "login": type: boolean "logout": type: boolean "actions": type: array description: "The list of references to actions along with the resolution values to use for that action" items: type: object properties: "action": type: string "resolution_values": type: array items: type: string "dependant_keys_any": type: array description: "A list of keys that are or'd to determine the Auto-Response Beacon state" "dependant_keys_all": type: array description: "A list of keys that are and'd to determine the Auto-Response Beacon state" getAutoResponseBeaconListResponse: description: "A list of Auto-Response Beacons" type: object properties: "beacons": type: array items: type: getAutoResponseBeaconListItem meta: metaResponse bulkDeleteAutoResponseBeaconList: description: "A list of auto-response beacon ids" type: object properties: "auto_response_beacon": type: array items: type: string setAutoResponseBeacon: description: "A single Auto-Response Beacon" type: object properties: "auto_response_beacon": type: object properties: "name": type: string description: "Each Auto-Response Beacon must have a unique symbolic name. Use this to distinguish between multiple beacons on the device." "description": type: string required: false description: "Each Auto-Response Beacon may have an optional description." "module": type: string description: "The corresponding 'salt' Auto-Response module this Beacon will use." enum: [ "btmp", "cell_connection", "cell_signal_strength", "curl", "custom_cmd", "load", "mem", "network", "ping", "serial_login", "serial_pattern", "serial_signal", "cell_message", "wtmp" ] "interval": type: number description: "Interval in seconds between running the Auto-Response Beacon" required: false "enable": type: boolean description: "Turn on this Auto-Response Beacon" required: false default: false "cell_signal_strength": type: object required: false properties: "threshold": type: number minimum: 1 maximum: 99 "on_change_only": type: boolean required: false default: true "emit_at_startup": type: boolean required: false default: true "cell_message": type: object required: false properties: "message_pattern": type: string "phone_numbers": type: array "curl": type: object required: false properties: "urls": type: array "request": type: string required: false default: "GET" "on_change_only": type: boolean required: false default: true "data": type: string required: false "max_time": type: number required: false "custom_cmd": type: object required: false properties: "shell_command": type: string "timeout": type: number required: false default: 10 minimum: 1 "load": type: object required: false properties: "one_minute": type: object properties: "low": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "high": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "five_minute": type: object properties: "low": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "high": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "fifteen_minute": type: object properties: "low": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "high": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "emit_at_startup": type: boolean required: false default: true "on_change_only": type: boolean required: false default: false "mem": type: object required: false properties: "percent": type: string pattern: "^(([1-9][0-9]*)|[0])[.]([0-9]{4})$" "on_change_only": type: boolean required: false default: false "network": type: object required: false properties: "interfaces": type: array items: type: networkInterfaceMap "coalesce": type: boolean "ping": type: object required: false properties: "interface": type: string description: "Reference to a physif ID" "destination": type: string "on_change_only": type: boolean required: false default: true "serial_login": type: object required: false properties: "check_login": type: boolean required: false default: true "check_logout": type: boolean required: false default: true "ports": type: array items: type: string description: "Reference to a port ID" "serial_signal": type: object required: false properties: "ports": type: array items: type: string description: "Reference to a port ID" "signals": type: array items: type: string enum: [cts, dcd, dsr, dtr, rts] description: "List of serial signal types to filter events on" "serial_pattern": type: object required: false properties: "pattern": type: string "disconnect": type: boolean required: false default: false "trigger_rx": type: boolean required: false default: true "trigger_tx": type: boolean required: false default: true "ports": type: array items: type: string description: "Reference to a port ID" "wtmp": type: object required: false properties: "login": type: boolean default: true "logout": type: boolean default: true "actions": type: array description: "The list of references to actions along with the resolution values to use for that action" items: type: object properties: "action": type: string "resolution_values": type: array items: type: string "dependant_keys_any": type: array description: "A list of keys that are or'd to determine the Auto-Response Beacon state" "dependant_keys_all": type: array description: "A list of keys that are and'd to determine the Auto-Response Beacon state" getAutoResponseBeaconResponse: description: "A single Auto-Response Beacon" type: object properties: "auto_response_beacon": type: getAutoResponseBeaconListItem getAutoResponseReactionListItem: description: "An Auto-Response Reaction" type: object properties: "id": type: string description: "Database ID for this Auto-Response Reaction." "name": type: string description: "Each Auto-Response Reaction has a non-unique name to help distinguish it." "sub_type": type: string description: "The type of Auto-Response Reaction." enum: [ "cell_message_react", "custom_command", "serial_text", "slack", "snmp", ] "custom_command": type: object required: false properties: "shell_command": type: string "timeout": type: number "cell_message_react": type: object required: false properties: "phone_numbers": type: array "message": type: string "serial_text": type: object required: false properties: "port": type: string description: "Reference to a port ID" "command": type: string "response": type: string "timeout": type: number minimum: 0 "slack": type: object required: false properties: "channels": type: array "message": type: string "from_name": type: string "api_key": type: string "snmp": type: object required: false properties: "oid": type: string "timeout": type: number "var_binds": type: array items: type: object properties: "mib_oid": type: string "mib_type": type: string "mib_value": type: string getAutoResponseReactionListResponse: description: "A list of Auto-Response Reactions" type: object properties: "reactions": type: array items: type: getAutoResponseReactionListItem meta: metaResponse setAutoResponseReaction: description: "A single Auto-Response Reaction" type: object properties: "auto_response_reaction": type: object properties: "name": type: string description: "Each Auto-Response Reaction must have a unique symbolic name. Use this to distinguish between multiple Auto-Response Reaction's on the device." "sub_type": type: string description: "The type of Auto-Response Reaction." enum: [ "cell_message_react", "custom_command", "serial_text", "slack", "snmp", ] "custom_command": type: object required: false properties: "shell_command": type: string "timeout": type: number required: false default: 10 minimum: 1 "cell_message_react": type: object required: false properties: "phone_numbers": type: array "message": type: string "serial_text": type: object required: false properties: "port": type: string description: "Reference to a port ID" "command": type: string "response": type: string "timeout": type: number minimum: 0 "slack": type: object required: false properties: "channels": type: array "message": type: string "from_name": type: string "api_key": type: string "snmp": type: object required: false properties: "oid": type: string "timeout": type: number "var_binds": type: array items: type: object properties: "mib_oid": type: string "mib_type": type: string "mib_value": type: string getAutoResponseReactionResponse: description: "A single Auto-Response Reaction" type: object properties: "auto_response_reaction": type: getAutoResponseReactionListItem bulkDeleteAutoResponseReactionList: description: "A list of auto-response reaction ids" type: object properties: "auto_response_reaction": type: array items: type: string getAutoResponseBeaconStatusItem: description: "The Auto-Response Status of a Beacon" type: object properties: "id": type: string description: "Database ID for this Auto-Response Beacon." "name": type: string description: "Each Auto-Response Beacon must have a unique symbolic name. Use this to distinguish between multiple beacons on the device." "module": type: string description: "The corresponding 'salt' Auto-Response module this Beacon is using." enum: [ "btmp", "cell_connection", "cell_signal_strength", "curl", "custom_cmd", "load", "mem", "network", "ping", "serial_login", "serial_pattern", "serial_signal", "cell_message", "wtmp" ] "trigger_count": type: integer description: "The number of Auto-Response Beacon events that were triggered, includes resolved events" "last_triggered": type: string description: "The date and timestamp when the last Auto-Response Beacon event occurred" "beacon_data": type: object description: "The data the Auto-Response Beacon was triggered with" "events": type: array description: "The Auto-Response Beacon events since last boot" getAutoResponseStatus: description: "The Auto-Response Status" type: object properties: "auto_response_status": type: object properties: "beacons": type: array description: "Status for all Beacons" items: type: getAutoResponseBeaconStatusItem getAutoResponseBeaconStatus: description: "A single Auto-Response Beacon Status" type: object properties: "auto_response_status": type: getAutoResponseBeaconStatusItem getAutoResponseBeaconStatusBeaconModules: description: "The Auto-Response Status of all the Beacon Modules" type: object properties: "module": type: string description: "The corresponding 'salt' Auto-Response beacon module." enum: [ "btmp", "cell_connection", "cell_signal_strength", "curl", "custom_cmd", "load", "mem", "network", "ping", "serial_login", "serial_pattern", "serial_signal", "cell_message", "wtmp" ] "resolution_values": type: array description: "The list of resolution values to filter on for a reaction for this beacon module." items: type: string getAutoResponseStatusBeaconModules: description: "The Auto-Response Status for all Beacon Modules." type: object properties: "beacon-modules": type: array description: "Status for all Beacon Modules" items: type: getAutoResponseBeaconStatusBeaconModules snmpPduSettings: description: "The SNMP configuration to access the PDU." type: object properties: "id": type: string "protocol": type: string enum: [ "UDP", "TCP", ] "address": type: string "port": type: integer minimum: 1 maximum: 65535 required: false "version": type: string enum: [ "v1", "v2c", "v3", ] "community": type: string required: false "auth_protocol": type: string enum: [ "SHA", "MD5", ] required: false "auth_password": type: string required: false "username": type: string required: false "engine_id": type: string required: false "privacy_protocol": type: string enum: [ "AES", "DES", ] required: false "privacy_password": type: string required: false "security_level": type: string enum: [ "noAuthNoPriv", "authNoPriv", "authPriv", ] required: false serialPduSettings: description: "The serial specific settings for a PDU." type: object properties: "id": type: string "username": type: string required: false "password": type: string required: false "port": type: string pduOutlet: description: "An outlet on a power distribution unit." type: object properties: "id": type: string "number": type: integer "name": type: string required: false "port": type: string required: false "status": type: string required: false "status_timestamp": type: string required: false "last_action": type: string required: false "last_action_timestamp": type: string required: false PDU: description: "Get a PDU specified by ID." type: object properties: "name": type: string description: "A unique user specified name for the PDU." "driver": type: string description: "The driver to use to control and monitor the PDU." "method": type: string description: "The method to used to access the PDU, can be 'snmp', 'powerman' or 'shell'." "monitor": type: boolean description: "If true the pdu outlets are monitored for any change in status." "id": type: string description: "The unique id of the PDU." "outlet_count": required: false type: integer description: "The number of outlets on the PDU." "powerman": type: serialPduSettings required: false "shell": type: serialPduSettings required: false "snmp": type: snmpPduSettings required: false "outlets": type: array items: type: pduOutlet setPDU: description: "Set a pdu specified by ID." type: object properties: "pdu": "type": object properties: "name": type: string description: "A unique user specified name for the PDU." "driver": type: string description: "The driver to use to control and monitor the PDU." "method": type: string description: "The method to used to access the PDU, can be 'snmp', 'powerman' or 'shell'." "monitor": type: boolean description: "If true the pdu outlets are monitored for any change in status." "powerman": type: serialPduSettings required: false "shell": type: serialPduSettings required: false "snmp": type: snmpPduSettings required: false PDUId: type: object properties: "pdu": type: PDU PDUList: description: "Get the list of configured PDUs." type: object properties: "pdus": type: array items: type: PDU ipPassthrough: description: "The IP Passthrough settings" type: object properties: "ip_passthrough": type: object properties: "enabled": type: boolean "passthrough_physif": type: string description: | [**Optional when IP Passthrough is disabled**]
The network interface port used for ethernet connection to the downstream device. "mac_address": type: string description: | The downstream device's MAC address that is connected to the Operations Manager. If mac_address is not specified, the Operations Manager will connect to the first downstream device requesting a DHCP assigned IP address. If this field is empty when IP Passthrough is to be disabled, the stored MAC address will be removed. required: false "service_intercepts": type: object description: | Service intercepts allow specific protocols to be accessed on the Operations Manager in addition to those found on the downstream device. required: true properties: "https": type: object description: | Choose an unused port number, so that the HTTPS server on the Operations Manager can be accessed. This will not impede traffic bound for the downstream device's configured HTTPS port.
If _https_ is an empty field, omitted entirely, or set to 0, incoming HTTPS connections are passed through to the downstream device by default, and the Operations Manager's HTTPS server will be inaccessible via incoming connections through the cellular interface. required: false properties: "port": type: string required: false "ssh": type: object description: | Choose an unused port number, so that the SSH server on the Operations Manager can be accessed. This will not impede traffic bound for the downstream device's configured SSH port.
If _ssh_ is an empty field, omitted entirely, or set to 0, incoming SSH connections are passed through to the downstream device by default, and the Operations Manager's SSH server will be inaccessible via incoming connections through the cellular interface. required: false properties: "port": type: string required: false ipPassthroughStatus: description: "The IP Passthrough status information" type: object properties: "ip_passthrough_status": type: object properties: "status": type: string description: | A status value indicating the current state of the IP Passthrough connection with a downstream device. enum: [ "disabled", "cell_not_active", "connecting", "active" ] "downstream_ip": type: string description: | The IP address taken from the device's cellular modem and assigned to the downstream device. "downstream_mac": type: string description: | The MAC address of the downstream device that has been assigned the cellular IP address. portAutoDiscoveryParameters: description: "The Port Auto-Discovery trigger parameters" type: object properties: auto_discover: description: "The Port Auto-Discovery root object" type: object properties: ports: description: "The list of ports (as integers) to discover. Setting this value to **null** will result in all ports being set for Auto-Discovery." type: integer[] | nil portAutoDiscoveryState: description: "The Port Auto-Discovery state object" type: object properties: auto_discover: description: "The Port Auto-Discovery root object" type: object properties: status: description: "The status, as returned by the Port Auto-Discover process" type: string portAutoDiscoverySchedule: description: "The Port Auto-Discovery Scheduling object" type: object properties: auto_discover_schedule: description: "The Port Auto-Discovery scheduling root object" properties: enabled: type: boolean default: false period: type: string enum: [ "daily", "weekly", "monthly" ] day_of_month: type: integer minimum: 1 maximum: 31 required: false day_of_week: description: "0 (Sunday) to 6 (Saturday)" type: integer minimum: 0 maximum: 6 required: false hour: type: integer minimum: 0 maximum: 23 minute: type: integer minimum: 0 maximum: 59 ports: description: "The list of ports (as integers) to discover (1 based numbering). Setting this value to **null** will result in all ports being set for Auto-Discovery." type: integer[] | nil staticRouteItem: description: "The static route data item" type: object properties: destination_address: type: string description: "The destination network/host that the route provides access to." destination_netmask: type: integer description: "Netmask for IPv4/IPv6 (CIDR format)." gateway_address: type: string required: false description: | The IPv4/IPv6 address of the router gateway that will route packets to the destination address. If this property is not provided, the interface property must be given. interface: type: string required: false description: | The network interface to be associated with the route. If this property is not provided, the gateway_address property must be given. metric: type: integer required: false description: | The route metric, which represents the cost of routing packets via this route. Lower metric routes will be used in preference to higher metric routes staticRouteItemWithId: description: "The static route data item with id" type: staticRouteItem properties: id: type: string description: "Unique id of item" getStaticRoutesList: description: "The static routes list object" type: object properties: static_routes: description: "The root object" type: array items: type: staticRouteItemWithId putStaticRoutesList: description: "The static routes object put object" type: object properties: static_routes: description: "The root object" type: array items: type: staticRouteItem getStaticRouteItem: description: "The static route get object" type: object properties: static_route: description: "The root object" type: staticRouteItemWithId putStaticRouteItem: description: "The static route put object" type: object properties: static_route: description: "The root object" type: staticRouteItem postStaticRouteItem: description: "The static routes post object" type: object properties: static_route: description: "The root object" type: staticRouteItem postStaticRouteItemResult: description: "The static routes post object result" type: object properties: static_route: description: "The root object" type: staticRouteItemWithId ntpPut: type: object properties: ntp: type: object properties: enabled: type: boolean servers: type: array items: type: object properties: value: type: string ntpGet: type: object properties: ntp: type: object properties: id: type: string enabled: type: boolean servers: type: array items: type: object properties: id: type: string value: type: string webuiSessionTimeout: type: object properties: "system_webui_session_timeout": type: object properties: timeout: type: integer cliSessionTimeout: type: object properties: "system_cli_session_timeout": type: object properties: timeout: type: integer serverList: type: array items: type: object properties: id: type: string required: false hostname: type: string port: type: integer required: false authObj: type: object properties: mode: # required, but null, nil or "" can be passed to reset to the schema default (local) type: string enum: [ "local", "radius", "tacacs", "ldap", ] policy: description: > The auth policy determines whether to always check local credentials after a remote authentication failure or to only check the local credentials if the remote authentication server is unreachable. type: string required: false enum: [ "remotedownlocal", "remotelocal", ] tacacsMethod: type: string enum: [ "pap", "chap", "login", ] required: false tacacsService: type: string required: false ldapBaseDN: type: string description: "[**Optional when mode is not ldap**]" ldapBindDN: type: string required: false ldapIgnoreReferrals: type: boolean required: false ldapUsernameAttribute: type: string description: "[**Optional when mode is not radius**]" ldapGroupMembershipAttribute: type: string required: false radiusAuthenticationServers: type: serverList description: "[**Optional when mode is not radius**]" radiusAccountingServers: type: serverList description: "[**Optional when mode is not radius**]" tacacsAuthenticationServers: type: serverList description: "[**Optional when mode is not tacacs**]" ldapAuthenticationServers: type: serverList description: "[**Optional when mode is not ldap**]" authGet: type: object properties: auth: type: authObj authPut: type: object properties: auth: type: authObj properties: radiusPassword: type: string description: "[**Optional when mode is not radius**]" tacacsPassword: type: string description: "[**Optional when mode is not tacacs**]" ldapBindPassword: type: string description: "[**Optional when mode is not ldap**]" httpsCommon: type: object properties: "common_name": type: string "org_unit": type: string "organization": type: string "locality": type: string "state": type: string "country": type: string "email": type: string httpsCSRGet: type: httpsCommon properties: "key_length": type: integer required: false "csr": type: string required: false httpsCSRPut: type: httpsCommon properties: "key_length": type: integer "csr": type: string challenge_password: type: string required: false private_key: type: string required: false httpsGet: type: object properties: https: type: httpsCommon properties: "valid_from": type: string "valid_to": type: string "cert": type: string "key_length": type: integer "key": type: string "csr": type: httpsCSRGet required: false httpsPut: type: object properties: https: type: object properties: "csr": type: httpsCSRPut required: false "cert": type: string required: false resourceTypes: base-type: get?: securedBy: [ token ] headers: Authorization: displayName: Authorization example: Token {{sessionUid}} responses: 400: body: application/json: type: error 401: description: Authentication failure body: application/json: type: error examples: example1: value: { "error": [ { type: 7, "code": 42, "level": 1, "text": "Invalid session ID", "args": {} } ] } example2: value: { "error": [ { type: 7, "code": 46, "text": "Permission denied", "args": {}, "level": 1 } ] } post?: securedBy: [ token ] headers: Authorization: displayName: Authorization example: Token {{sessionUid}} responses: 400: body: application/json: type: error 401: description: Authentication failure body: application/json: type: error example: { "error": [ { type: 7, "code": 42, "level": 1, "text": "Invalid session ID", "args": {} } ] } put?: securedBy: [ token ] headers: Authorization: displayName: Authorization example: Token {{sessionUid}} responses: 400: body: application/json: type: error 401: description: Authentication failure body: application/json: type: error example: { "error": [ { type: 7, "code": 42, "level": 1, "text": "Invalid session ID", "args": {} } ] } 404: description: Not found body: application/json: type: error 500: description: Internal error body: application/json: type: error delete?: securedBy: [ token ] headers: Authorization: displayName: Authorization example: Token {{sessionUid}} responses: 400: description: Incomplete data body: application/json: type: error 401: description: Authentication failure body: application/json: type: error example: { "error": [ { type: 7, "code": 42, "level": 1, "text": "Invalid session ID", "args": {} } ] } patch?: securedBy: [ token ] headers: Authorization: displayName: Authorization example: Token {{sessionUid}} responses: 400: body: application/json: type: error 401: description: Authentication failure body: application/json: type: error example: { "error": [ { type: 7, "code": 42, "level": 1, "text": "Invalid session ID", "args": {} } ] } searchable-type: type: base-type get: queryParameters: json: description: > One or more json URL encoded search parameters. Example %7B%22type%22%3A1%2C%22items%22%3A%5B%7B%22datatype%22%3A4 %2C%22type%22%3A3%2C%22oper%22%3A1%2C%22fieldname%22%3A%22 config%3Aname%22%2C%22value%22%3A%22test%22%7D%5D%7D which is the URL encoded json {type:1,items:[{"datatype":4,type:3,"oper":1,"fieldname":"config:name","value":"test"}]} type: string required: false displayName: 'json' jb64: description: > one or more base64 encoded json search parameters. Ensure that any trailing = padding is URL encoded to %3D type: string required: false displayName: 'jb64' searchparameters: description: > One or more search fields For example, config:name=\*test\*, will search for objects with names containing test. Allowed operators are: =value, >value, >=value, Operator applied between all searchparameters, json and jb64 query parameters. AND or OR default: AND required: false searchId: description: > The Operations Manager appliance maintains search results for a limited timespan. The searchId is returned in meta data of a normal search and can then be used as a parameter to retrieve the same results. When searchId is used, no other search parameter may be included. type: string required: false displayName: 'searchId' responses: 400: description: > Invalid request: Invalid Condition value. Invalid search parameter. Invalid json/jb64 parameter. body: application/json: type: error example: { "error": [ { type: 4, "code": 48, "level": 1, "text": "Invalid parameter 'config:nam' was provided", "args": { "param": "config:nam" } }, { type: 2, "code": 49, "level": 1, "text": "Invalid json '{\"type\":1,\"items\":{\"datatype\":4,\"type\":3,\"oper\":1,\"fieldname\":\"config:name\",\"value\":\"test\"}]}' for parameter 'json'", "args": { "line": "1", "position": "92", "value": "{\"type\":1,\"items\":{\"datatype\":4,\"type\":3,\"oper\":1,\"fieldname\":\"config:name\",\"value\":\"test\"}]}", "column": "92", "error": "'}' expected near ']'", "param": "json" } }, { type: 4, "code": 39, "text": "Invalid request body", "args": {}, "level": 1 } ] } /sessions: description: > The sessions endpoint is used to authenticate the user and create a session token for accessing all other Operations Manager endpoints. # Auth.session_create post: displayName: createSession description: Create a new authenticated session. body: application/json: type: credentials examples: example1: {"username":"root","password":"default"} example2: {"username":"root","password":"default","new_password":"abcdefg","confirm_password":"abcdefg"} responses: 400: description: Failed to initiate session creation due to error in post body. body: application/json: example: { "error": [ { type: 4, "code": 40, "text": "Required field 'username' was not provided in the request", "args": { "param": "username" }, "level": 1 }, { type: 4, "code": 40, "text": "Required field 'password' was not provided in the request", "args": { "param": "password" }, "level": 1 } ] } 401: body: application/json: examples: example1: description: Authentication failed due to invalid credentials or session. value: { "error": [ { type: 7, "code": 41, "text": "Invalid login credentials", "args": {}, "level": 1 } ] } example2: description: Authentication failed due to expired credentials. value: { "error": [ { type: 7, "code": 113, "text": "You are required to change your password immediately", "args": {}, "level": 1 } ] } 303: description: Redirect to new authentication session body: application/json: example: { "sid": "71dcba707b6c177644ede1b224f69096", "message": "Redirecting to new session at {redirect-url}" } 200: body: application/json: type: getSessionResponse example: { "state": "authenticated", "session": "71dcba707b6c177644ede1b224f69096", "user": "root" } /{sessionUid}: type: base-type # Auth.session_get get: displayName: getSession description: > Retrieve the state of an authentication session by ID. A session ID may be valid for some period after the user logs out. responses: 200: description: Session exists body: application/json: type: getSessionResponse example: { "state": "authenticated", "session": "71dcba707b6c177644ede1b224f69096", "user": "root" } 400: description: Session does not exist body: application/json: type: getSessionResponse example: { "state": "unknown", "session": "4cf7ff89791062c2eddcbb7778d532a" } 404: description: Session does not exist body: application/json: example: { "state": "unknown", "session": "4cf7ff89791062c2eddcbb7778d532a" } # Auth.session_apply_response put: body: application/json: type: responseToSessionChallenge displayName: responseToSessionChallenge description: Apply a challenge response to a session responses: 200: description: Response applied. Next challenge in {challenge} if required. body: application/json: type: responseToSessionChallenge 400: description: Invalid request body: application/json: example: { "error": [ { type: 4, "code": 39, "text": "Invalid request body", "args": {}, "level": 1 } ] } 403: description: Authentication failed. No more attempts allowed. 404: description: Authentication failed. # Auth.session_delete delete: displayName: deleteSession description: Log out of and delete a session responses: 200: description: Session deleted body: application/json: type: deleteSessionResponse 404: description: Session did not exist /ports: type: searchable-type description: > Configuring and viewing ports information get: displayName: getPorts description: > Gets ports attached to this appliance. Any number of search query parameters can be provided to perform an ANDed search on the ports. queryParameters: searchparameters: description: Extra optional parameters that can be included inside the request type: string required: false displayName: 'search parameters*' responses: 200: description: The array of ports, either a full array or as requested by parameters body: application/json: type: getPortByIdResponseList example: { "ports": [ { "parity": "none", "label": "Port-1", "id": "ports-1", "escape_char": "", "stopbits": "1", "status": "ok", "pinout": "X2", "available_pinouts": ["X2", "X1"], "ip_alias": [ { "id": "ipalias-1", "port": "ports-1", "ipaddress": "192.168.33.201/24", "interface": "system_net_physifs-1" } ], "baudrate": "9600", "mode": "localConsole", "logging_level": "disabled", "databits": "8", "terminal_emulation": "linux", "kernel_debug": false, "sessions": [], "device": 'serial/by-opengear-id/port01', }, { "parity": "none", "label": "Port-2", "id": "ports-2", "escape_char" : "~", "stopbits": "1", "status": "ok", "pinout": "X2", "available_pinouts": ["X2", "X1"], "ip_alias": [], "baudrate": "9600", "mode": "consoleServer", "logging_level": "disabled", "databits": "8", "terminal_emulation": "", "kernel_debug": false, "sessions": [], "device": 'serial/by-opengear-id/port02', }, { "parity": "none", "label": "Port-3", "id": "ports-3", "escape_char" : "~", "stopbits": "1", "status": "ok", "pinout": "X2", "available_pinouts": ["X2", "X1"], "ip_alias": [ { "id": "ipalias-1", "port": "ports-3", "ipaddress": "192.168.33.11/24", "interface": "system_net_physifs-1" } ], "baudrate": "9600", "mode": "consoleServer", "logging_level": "disabled", "databits": "8", "terminal_emulation": "", "kernel_debug": false, "sessions": [], "device": 'serial/by-opengear-id/port03', }, { "parity": "none", "label": "Port-4", "id": "ports-4", "escape_char" : "", "stopbits": "1", "status": "ok", "pinout": "X2", "available_pinouts": ["X2", "X1"], "ip_alias": [], "baudrate": "9600", "mode": "localConsole", "logging_level": "disabled", "databits": "8", "terminal_emulation": "vt220", "kernel_debug": false, "sessions": [], "device": 'serial/by-opengear-id/port04', }, { "parity": "none", "label": "Port-5", "id": "ports-5", "escape_char" : "~", "stopbits": "1", "status": "ok", "pinout": "X2", "available_pinouts": ["X2", "X1"], "ip_alias": [], "baudrate": "9600", "mode": "consoleServer", "logging_level": "disabled", "databits": "8", "terminal_emulation": "", "kernel_debug": false, "sessions": [], "device": 'serial/by-opengear-id/port05', }, { "parity": "none", "label": "Port-6", "id": "ports-6", "escape_char" : "~", "stopbits": "1", "status": "ok", "pinout": "X2", "available_pinouts": ["X2", "X1"], "ip_alias": [], "baudrate": "9600", "mode": "consoleServer", "logging_level": "disabled", "databits": "8", "terminal_emulation": "", "kernel_debug": false, "sessions": [], "device": 'serial/by-opengear-id/port06', }, { "parity": "none", "label": "Port-7", "id": "ports-7", "escape_char" : "~", "stopbits": "1", "status": "ok", "pinout": "X2", "available_pinouts": ["X2", "X1"], "ip_alias": [], "baudrate": "9600", "mode": "consoleServer", "logging_level": "disabled", "databits": "8", "terminal_emulation": "", "kernel_debug": false, "sessions": [], "device": 'serial/by-opengear-id/port07', }, { "parity": "none", "label": "Port-8", "id": "ports-8", "escape_char" : "~", "stopbits": "1", "status": "ok", "pinout": "X2", "available_pinouts": ["X2", "X1"], "ip_alias": [], "baudrate": "9600", "mode": "consoleServer", "logging_level": "disabled", "databits": "8", "terminal_emulation": "", "kernel_debug": false, "sessions": [], "device": 'serial/by-opengear-id/port08', }, { "parity": "none", "label": "Port-9", "id": "ports-9", "escape_char" : "~", "stopbits": "1", "status": "ok", "pinout": "X2", "available_pinouts": ["X2", "X1"], "ip_alias": [], "baudrate": "9600", "mode": "consoleServer", "logging_level": "disabled", "databits": "8", "terminal_emulation": "", "kernel_debug": false, "sessions": [], "device": 'serial/by-opengear-id/port09', }, { "parity": "none", "label": "USB A", "id": "ports-10", "escape_char" : "~", "stopbits": "1", "status": "disconnected", "pinout": "USB", "available_pinouts": ["USB"], "ip_alias": [], "baudrate": "9600", "mode": "consoleServer", "logging_level": "disabled", "databits": "8", "terminal_emulation": "", "kernel_debug": false, "sessions": [], "device": 'serial/by-opengear-id/port10', } ], "meta": { "searchId": "{49ec4c2-5f78-11e8-899f-97417ae8617}" } } 400: description: Invalid request body: application/json: type: error example: { "error": [ { type: 4, "code": 39, "level": 1, "text": "Invalid request body", "args": {} } ] } 404: description: Invalid request, Incomplete data, Port not found, Failure during retrieval of ports body: application/json: type: error 500: description: Failed to read ports. body: application/json: type: error /{id}: type: base-type get: description: Retrieve a single port by ID. For example, GET ports/ports-1 responses: 200: description: Port has been updated. body: application/json: type: getPortByIdResponseSingle examples: port_with_ipaliases: { "port": { "parity": "none", "label": "Port-1", "id": "ports-1", "escape_char" : "~", "stopbits": "1", "status": "ok", "pinout": "X2", "available_pinouts": ["X2", "X1"], "ip_alias": [ { "id": "ipalias-1", "port": "ports-1", "ipaddress": "192.168.33.201/24", "interface": "system_net_physifs-1" }, { "id": "ipalias-2", "port": "ports-1", "ipaddress": "192.168.33.9/24", "interface": "system_net_physifs-1" } ], "baudrate": "9600", "mode": "consoleServer", "logging_level": "disabled", "databits": "8", "terminal_emulation": "", "kernel_debug": false, "sessions": [], "device": 'serial/by-opengear-id/port01', } } port_without_ipaliases: { "port": { "parity": "none", "label": "Port-3", "id": "ports-3", "escape_char" : "~", "stopbits": "1", "status": "ok", "pinout": "X2", "available_pinouts": ["X2", "X1"], "ip_alias": [], "baudrate": "9600", "mode": "localConsole", "logging_level": "disabled", "databits": "8", "terminal_emulation": "linux", "kernel_debug": true, "sessions": [], "device": 'serial/by-opengear-id/port01', } } put: description: Update properties for a single port. For example, PUT ports/port-1 body: application/json: type: putPortById examples: port_with_ipaliases: { "port": { "parity": "none", "label": "Port-1", "stopbits": "1", "pinout": "X2", "ip_alias": [ { "ipaddress": "192.168.33.201/24", "interface": "system_net_physifs-1" }, { "ipaddress": "192.168.33.9/24", "interface": "system_net_physifs-1" } ], "baudrate": "9600", "mode": "consoleServer", "logging_level": "disabled", "databits": "8", "terminal_emulation": "", "kernel_debug": false, "escape_char": "!", "device": 'serial/by-opengear-id/port01', } } port_without_ipaliases: { "port": { "parity": "none", "label": "Port-1", "stopbits": "1", "pinout": "X2", "ip_alias": [], "baudrate": "9600", "mode": "consoleServer", "logging_level": "disabled", "databits": "8", "terminal_emulation": "", "kernel_debug": false, "escape_char": "!", "device": 'serial/by-opengear-id/port01', } } responses: 200: description: Port has been updated. body: application/json: type: getPortByIdResponseSingle example: { "port": { "parity": "none", "label": "Port-1", "id": "ports-1", "escape_char": "!", "stopbits": "1", "status": "ok", "pinout": "X2", "available_pinouts": ["X2", "X1"], "ip_alias": [ { "id": "ipalias-1", "port": "ports-1", "ipaddress": "192.168.33.201/24", "interface": "system_net_physifs-1" }, { "id": "ipalias-2", "port": "ports-1", "ipaddress": "192.168.33.9/24", "interface": "system_net_physifs-1" } ], "baudrate": "9600", "mode": "consoleServer", "logging_level": "disabled", "databits": "8", "terminal_emulation": "", "kernel_debug": false, "sessions": [], "device": 'serial/by-opengear-id/port01', } } /sessions: type: base-type get: description: Retrieve all active sessions on this port. responses: 200: body: application/json: type: getPortSessionResponseList example: { "port_sessions": [ { "username": "alice", "client_pid": 123 } ] } 404: description: Port does not exist. delete: description: > Disconnect active sessions on this port. Use query parameters to select a subset of sessions for disconnection. If no query parameters are given, all sessions on this port will be disconnected. queryParameters: username: description: Only disconnect active sessions belonging to this user. type: string required: false responses: 200: description: > Request succeeded. Note that if there were no active sessions to be disconnected, the request is nevertheless successful. Check the 'disconnected_session_count' field of the response body to determine how many sessions were disconnected. body: application/json: type: deleteMultiplePortSessionsResponse example: { "disconnected_session_count": 1 } 404: description: Port does not exist. /{pid}: type: base-type get: description: Retrieve an active session on this port. responses: 200: body: application/json: type: getPortSessionResponseSingle example: { "port_session": { "username": "alice", "client_pid": 123 } } 404: description: > Port does not exist, or active session with the given pid does not exist. delete: description: Disconnect the session. responses: 204: description: Request succeeded. 404: description: > Port does not exist, or active session with the given pid does not exist. /power: type: base-type put: description: Control power for a console device. For example, PUT ports/port-1/power {"control":{"action":"cycle"}} body: application/json: type: putPortPowerAction example: { "cmd": { "action": "cycle", } } responses: 200: description: Power command executed. body: application/json: type: putPortPowerActionResponse example: { "cmd": "/usr/bin/ogpowergroup 'port16' cycle" } 400: description: Power command failed. body: application/json: type: error example: { "error": [ { type: 2, "code": 307, "level": 1, "text": "ogpower failed running command '/usr/bin/ogpowergroup 'port02' cycle'", "args": {} } ] } /fields: type: base-type get: displayName: Get port search fields description: > Obtain a list of fields which can be used to perform queries against ports. responses: 200: description: The list of search fields body: application/json: type: searchFieldsResponse example: { "fields": [ "config:label", "config:mode" ] } 500: description: Unexpected error headers: Authorization: description: authorization session token type: string displayName: Authorization /auto_discover: type: base-type description: > Manage Port Auto-Discovery post: description: > Trigger the port Auto-Discovery process displayName: trigger port discovery body: application/json: type: portAutoDiscoveryParameters examples: example1: description: Run Port Auto-Discover on all available ports value: { "auto_discover": { "ports": null } } example2: description: Run Port Auto-Discover on all available ports value: { "auto_discover": { "ports": [] } } example3: description: Run Auto-Disover on ports 1, 10, 33, and 42 value: { "auto_discover": { "ports": [1, 10, 33, 42] } } responses: 200: description: Port Auto-Discovery was triggered body: application/json: type: portAutoDiscoveryParameters get: description: > Get Port Auto-Discovery state displayName: get port auto discovery state responses: 200: description: The Port Auto-Discovery script state body: application/json: type: portAutoDiscoveryState example: { "auto_discover": { "status": "running" } } /schedule: type: base-type description: > Manage Port Auto-Discovery Scheduling put: description: > Schedule the Port Auto-Discovery process displayName: schedule port discovery body: application/json: type: portAutoDiscoverySchedule examples: example1: description: Schedule Port Auto-Discover for all available ports on daily basis value: { "auto_discover_schedule": { "enabled": true, "period": "daily", "hour": 2, "minute": 30, "ports": null } } example2: description: Schedule Port Auto-Discover for selected ports on daily basis value: { "auto_discover_schedule": { "enabled": true, "period": "daily", "hour": 2, "minute": 30, "ports": [11, 33, 4 ,20] } } example3: description: Schedule Port Auto-Discover for all ports on monthly basis value: { "auto_discover_schedule": { "enabled": true, "period": "monthly", "day_of_month": 10, "hour": 2, "minute": 30, "ports": null } } example4: description: Schedule Port Auto-Discover for selected ports on weekly basis value: { "auto_discover_schedule": { "enabled": true, "period": "weekly", "day_of_week": 4, "hour": 2, "minute": 30, "ports": [11, 33, 4 ,20] } } responses: 200: description: Port Auto-Discovery was scheduled body: application/json: type: portAutoDiscoverySchedule get: description: > Get the Port Auto-Discovery schedule displayName: get port auto discovery scheduling responses: 200: description: The Port Auto-Discovery scheduling information body: application/json: type: portAutoDiscoverySchedule example: { "auto_discover_schedule": { "enabled": true, "period": "daily", "hour": 2, "minute": 30, "ports": [1, 10, 33, 42] } } /managementports: type: searchable-type description: > Used for working with local management console information. get: displayName: get managementports description: > Gets the local management console ports attached to this appliance. Any number of search query parameters can be provided to perform an ANDed search on the management ports. queryParameters: searchparameters: description: One or more search fields type: string required: false displayName: 'search parameters*' responses: 200: description: The array of management ports, either a full array or as requested by parameters body: application/json: type: getMgmtPortByIdResponseList example: { "managementports": [ { "id" : "mgmtPorts-1", "device" : "ttyS0", "enabled" : true, "kerneldebug" : false, "termemulation" : "vt100", "baud" : "115200", "databits" :"8", "parity" : "none", "stopbits" : "1" }, { "id" : "mgmtPorts-2", "device" : "ttyS1", "enabled" : true, "kerneldebug" : true, "termemulation" : "vt100", "baud" : "115200", "databits" :"8", "parity" : "none", "stopbits" : "1" }, ], "meta": { "searchId": "{49ec4c2-5f78-11e8-899f-97417ae8617}" } } 400: description: Invalid request, missing or incorrect page/per_page body: application/json: type: error example: { "error": [ { type: 4, "code": 39, "level": 1, "text": "Invalid request body", "args": {}, } ] } 404: description: Invalid request, Incomplete data, management port not found, Failure during retrieval of management ports body: application/json: type: error 500: description: Failed to read management ports. body: application/json: type: error /{id}: type: base-type get: description: Retrieve a single local management console port by ID. For example, GET managementports/mgmtPorts-1 responses: 200: description: management port has been updated. body: application/json: type: getMgmtPortByIdResponse example: { "managementport": { "id" : "mgmtPorts-1", "device" : "ttyS0", "enabled" : true, "kerneldebug" : false, "termemulation" : "vt100", "baud" : "115200", "databits" : "8", "parity" : "none", "stopbits" : "1" } } put: description: Update properties for a single local management console port. For example, PUT managementports/mgmtPorts-1 body: application/json: type: putMgmtPortById example: { "managementport": { "device" : "ttyS0", "enabled" : true, "kerneldebug" : false, "termemulation" : "vt100", "baud" : "115200", "databits" :"8", "parity" : "none", "stopbits" : "1" } } responses: 200: description: Management Port has been updated. body: application/json: type: getMgmtPortByIdResponse example: { "managementport": { "id" : "mgmtPorts-1", "device" : "ttyS0", "enabled" : true, "kerneldebug" : false, "termemulation" : "vt100", "baud" : "115200", "databits" : "8", "parity" : "none", "stopbits" : "1" } } /search: type: base-type description: > Used to perform searches on ports on the system. /ports: type: base-type description: > Creating a search ID for ports from the given query parameters. get: displayName: getSearchId description: > Gets a search ID for searching ports attached to this Operations Manager appliance. Any number of search query parameters can be provided to perform an ANDed search on the ports. The list provided is dynamic. queryParameters: json: description: > One or more json URL encoded search parameters. Example %7B%22type%22%3A1%2C%22items%22%3A%5B%7B%22datatype%22%3A4 %2C%22type%22%3A3%2C%22oper%22%3A1%2C%22fieldname%22%3A%22 config%3Aname%22%2C%22value%22%3A%22test%22%7D%5D%7D which is the URL encoded json {type:1,items:[{"datatype":4,type:3,"oper":1,"fieldname":"config:label","value":"test"}]} type: string required: false displayName: 'json' jb64: description: > one or more base64 encoded json search parameters. Ensure that any trailing = padding is URL encoded to %3D type: string required: false displayName: 'jb64' searchparameters: description: > One or more search fields. For example, config:label=\*test\*, will search for ports with labels containing test. Allowed operators are: =value, >value, >=value, Operator applied between all searchparameters, json and jb64 query parameters. AND or OR default: AND required: false responses: 200: description: The search ID, as defined by given parameters body: application/json: type: getSearchResponse example: { "search": { "id": "{268daae-5555-11e7-8af6-b7116753aa5}", }, } 400: description: Invalid request, missing or incorrect search parameters. body: application/json: type: error example: { "error": [ { type: 4, "code": 39, "level": 1, "text": "Invalid request body", "args": {} } ] } 404: description: Invalid request, Incomplete data. body: application/json: type: error 500: description: Failed to retrieve a search ID. body: application/json: type: error /logs: description: > Used for working with the logs on the system. /syslog: type: base-type get: description: Fetch last n log lines in syslog. For example, GET logs/syslog/?logLines=10 queryParameters: logLines: description: The number of lines to fetch - max 1000, min 10. type: integer required: false default: 100 responses: 200: description: Returns the last n lines in the syslog body: application/json: type: getSyslogLinesResponse example: { "syslog": { "id": "3fe0c4281c994a34225db3224b0cf4b4", "log_lines": [ "2018-04-23T16:49:35.285554+00:00 qemux86-64 sshd[20111]: Disconnected from 192.168.33.101", "2018-04-23T16:49:35.285625+00:00 qemux86-64 sshd[20111]: pam_unix(sshd:session): session closed for user root", "2018-04-23T16:49:35.379184+00:00 qemux86-64 sshd[20139]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.33.101 user=root", "2018-04-23T16:49:37.937315+00:00 qemux86-64 sshd[20139]: Accepted publickey for root from 192.168.33.101 port 57058 ssh2: RSA SHA256:6ED9MiX/6QXhSLN5g25V4T0okuO9o0aQl0ONT9BCxKE", "2018-04-23T16:49:37.938147+00:00 qemux86-64 sshd[20139]: pam_unix(sshd:session): session opened for user root by (uid=0)", "2018-04-23T16:49:43.308764+00:00 qemux86-64 sshd[20139]: Received disconnect from 192.168.33.101: 11: disconnected by user", "2018-04-23T16:49:43.308798+00:00 qemux86-64 sshd[20139]: Disconnected from 192.168.33.101", "2018-04-23T16:49:43.308887+00:00 qemux86-64 sshd[20139]: pam_unix(sshd:session): session closed for user root", "2018-04-23T17:20:51.938418+00:00 qemux86-64 udhcpc[1660]: Sending renew...", "2018-04-23T17:20:51.941182+00:00 qemux86-64 udhcpc[1660]: Lease of 192.168.33.207 obtained, lease time 7200" ], "no_of_log_lines": 10 } } /portlog: /{id}: type: base-type get: description: Fetch last n log lines in portlog. For example, GET logs/portlog/ports-1?logLines=20 queryParameters: logLines: description: The number of lines to fetch - max 1000, min 10. type: integer required: false maximum: 1000 minimum: 10 default: 100 responses: 200: description: Returns the last n lines in the portlog body: application/json: type: getPortLogLinesResponse example: { "portlog": { "id": "portlogports-1771bed6129488a69764d064ed7e6086d", "log_lines": [ "2018-04-19T21:59:42.475157+00:00 TXDATA ", "2018-04-19T21:59:43.720286+00:00 TXDATA ^C", "2018-04-19T21:59:44.004623+00:00 TXDATA ^C", "2018-04-19T21:59:49.053138+00:00 TXDATA ^C", "2018-04-19T21:59:49.739765+00:00 TXDATA ^C", "2018-04-19T21:59:50.349753+00:00 LOGOUT root", "2018-04-19T21:59:50.373627+00:00 RXDATA ", "2018-04-19T21:59:50.402295+00:00 RXDATA asdfasdf", "2018-04-19T22:00:18.216623+00:00 LOGIN root", "2018-04-19T22:00:21.386050+00:00 TXDATA rootrootakjdfaksjdf", "2018-04-19T22:00:25.145561+00:00 TXDATA rootrootakjdfaksjdfkjasdkjfakdjf", "2018-04-19T22:00:26.473879+00:00 TXDATA rootrootakjdfaksjdfkjasdkjfakdjf ", "2018-04-19T22:00:42.660939+00:00 TXDATA rootrootakjdfaksjdfkjasdkjfakdjf ^C", "2018-04-19T22:00:45.472921+00:00 TXDATA rootrootakjdfaksjdfkjasdkjfakdjf ^C~", "2018-04-19T22:00:46.456493+00:00 TXDATA rootrootakjdfaksjdfkjasdkjfakdjf ^C~.", "2018-04-19T22:00:46.887685+00:00 TXDATA rootrootakjdfaksjdfkjasdkjfakdjf ^C~.", "2018-04-19T22:00:47.057797+00:00 TXDATA ", "2018-04-19T22:00:47.236891+00:00 TXDATA ", "2018-04-19T22:00:47.413115+00:00 TXDATA ", "2018-04-19T22:00:48.328447+00:00 LOGOUT root" ], "no_of_log_lines": 20 } } /portlog_settings: type: base-type description: > logs/portlog_settings endpoint is to check and update port log settings. get: description: Retrieve the current settings. responses: 200: description: > Returns the current failover settings.
body: application/json: type: portlogSettings example: { "portlog_settings": { "facility": "daemon", "severity": "info" } } put: description: Update the port log settings. body: application/json: type: portlogSettings example: { "portlog_settings": { "facility": "cron", "severity": "critical" } } responses: 200: description: Returns the current failover settings. body: application/json: type: portlogSettings example: { "portlog_settings": { "facility": "cron", "severity": "critical" } } /monitor: description: > Used for monitoring the state of the various services running on the system. /lldp: description: > Used for monitoring the state of the various network discovery (LLDP/CDP) protocols running on the system. /chassis: type: base-type get: description: Get the current status of the network discovery (LLDP/CDP) protocols on the chassis responses: 200: description: Returns the current status of the network discovery (LLDP/CDP) protocols on the chassis. body: application/json: type: lldpChassis example: { "lldpstat": { "mac":"00:13:c6:08:07:ab", "Wlan":false, "name":"platypus", "Router":true, "Station":false, "Bridge":true, "mgmt_ip": [ "10.250.242.110", "fdcd:41a4:5559:faf2:213:c6ff:fe08:7ab" ], "descr":"description 1" } } /neighbor: type: base-type get: description: Get the neighbors responses: 200: description: Returns the neighbors. body: application/json: type: lldpNeighbor example: { "lldp-status-neighbor": [ { "remote_name":"NGCS-Switch", "port_name":"Port #1", "name":"enp3s0f1", "id":1, "port":"1", "mgmt_ip":[ "192.168.1.13" ], "remote_mac":"ec:9a:74:bc:57:e0" }, { "remote_name":"foobar.hostname", "port_name":"net1", "name":"tap1", "id":2, "port":"52:54:00:76:27:fc", "mgmt_ip": [ "192.168.0.1", "fe80::5054:ff:fe76:27fc" ], "remote_mac":"52:54:00:76:27:fc" } ] } /services: description: > Used for working with the properties of the various services running on the system. /https: type: base-type description: > Provides access to the SSL certificate used by web services on the device. get: description: Fetch HTTPS certificate details, or a CSR file if the zip flag is set. queryParameters: zip: description: A flag to download the CSR instead of view the details type: boolean required: false default: false responses: 200: description: Returns the certificate currently in use by the server, as well as details about any current CSR. body: application/json: type: httpsGet example: { "https": { "valid_from": "Sep 21 00:39:03 2016 GMT", "valid_to": "Sep 21 00:39:03 2016 GMT", "common_name": "CName", "country": "AU", "locality": "Toowong", "org_unit": "OU", "state": "Queensland", "email": "bob@bob.com", "organization":"Internet Widgits Pty Ltd", "key_length":2048, "cert" : "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", "key": "-----BEGIN PRIVATE KEY-----...", "csr" : { "country": "AU", "common_name": "aa", "csr": "new", "org_unit": "Unit 1", "organization": "Org", "state": "ee", "locality": "dd", "email": "bob@bob.com", "key_length": 512, }, } } put: description: Update HTTPS details. A certificate matching the CSR can be uploaded by setting the https.cert field, a CSR can be cancelled by sending through no https.csr body, and a new csr can be created by sending through a https.csr body with a csr value of "new". body: application/json: type: httpsPut example: { "https": { "cert" : "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", "csr" : { "country": "AU", "challenge_password": "aaa", "common_name": "aa", "state": "ee", "locality": "dd", "org_unit": "unit", "organization": "org", "key_length": 2048, "email": "bob@bob.com", "csr": "new" }, } } responses: 200: description: > Returns the updated HTTPS server details body: application/json: type: httpsGet example: { "https": { "valid_from": "Sep 21 00:39:03 2016 GMT", "valid_to": "Sep 21 00:39:03 2016 GMT", "common_name": "CName", "country": "AU", "state": "QLD", "locality": "Toowong", "org_unit": "OU", "email": "bob@bob.com", "organization":"Internet Widgits Pty Ltd", "key_length":2048, "cert" : "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", "csr" : { "country": "AU", "common_name": "aa", "state": "ee", "locality": "dd", "org_unit": "unit", "organization": "org", "email": "bob@bob.com", "key_length": 512 }, "key": "-----BEGIN PRIVATE KEY-----..." } } 500: description: Returns an error after the operation failed. body: application/json: example: { "error": [ { type: 2, "code": 14, "text":" String did not conform to the expected format.", "args": { "uuid": "root-1-services_https_csr_email" }, "level":1 }, { type: 1, "code": 33, "text": "Push command failed", "args": {}, "level": 1 } ] } 400: description: Returns an error after the operation failed due to invalid user input. body: application/json: example: { "error": [ { type: 2, "code": 14, "text":" String did not conform to the expected format.", "args": { "uuid": "root-1-services_https_csr_email" }, "level":1 }, { type: 1, "code": 33, "text": "Push command failed", "args": {}, "level": 1 } ] } /ntp: type: base-type description: > Provides access to the NTP client configuration on the system. get: description: Fetch NTP client configuration. responses: 200: description: Returns the current NTP configuration. body: application/json: type: ntpGet example: { "ntp": { "enabled": true, "servers": [ { "id": "services_ntp_servers-1", "value": "0.au.pool.ntp.org" }, { "id": "services_ntp_servers-2", "value": "1.au.pool.ntp.org" } ], "id": "root-1-services_ntp" } } put: description: Update NTP client configuration, including enabling/disabling the NTP service. body: application/json: type: ntpPut example: { "ntp": { "enabled": true, "servers": [ { "value": "0.au.pool.ntp.org" }, { "value": "2.au.pool.ntp.org" }, { "value": "3.au.pool.ntp.org" } ], } } responses: 200: description: > Returns the updated NTP configuration. body: application/json: type: ntpGet example: { "ntp": { "enabled": true, "servers": [ { "id": "services_ntp_servers-1", "value": "0.au.pool.ntp.org" }, { "id": "services_ntp_servers-2", "value": "2.au.pool.ntp.org" }, { "id": "services_ntp_servers-3", "value": "3.au.pool.ntp.org" } ], "id": "root-1-services_ntp" } } 500: description: > Error saving NTP configuration. body: application/json: example: { "error": [ { type: 2, "code": 25, "text": "'' is not a valid hostname", "args": { "address": "", "uuid": "services_ntp_servers-0" }, "level": 1 }, { type: 1, "code": 33, "text": "Push command failed", "args": {}, "level": 1 } ] } 400: description: > Returns an error after the operation failed due to invalid request. body: application/json: example: { "error": [ { type: 4, "code": 40, "text": "Required field 'server-1' was not provided in the request", "args": { "param": "server-1" }, "level": 1 } ] } /lldp: type: base-type description: > Provides access to the Network Discovery Protocols (LLDP/CDP) configuration. get: description: Fetch the Network Discovery Protocols configuration. responses: 200: description: Returns the current Network Discovery Protocols configuration. body: application/json: type: getLLDPResponse example: { "lldp": { "enabled": true, "platform": "platform 1", "description": "description 1", "physifs": ["system_net_physifs-1", "system_net_physifs-2"] } } put: description: Modify Network Discovery Protocols configuration. body: application/json: type: putLLDP example: { "lldp": { "enabled": true, "platform": "platform 1", "description": "description 1", "physifs": ["system_net_physifs-1", "system_net_physifs-2"] } } responses: 200: description: Created the Network Discovery Protocols configuration. body: application/json: type: getLLDPResponse example: { "lldp": { "enabled": true, "platform": "platform 1", "description": "description 1", "physifs": ["system_net_physifs-1", "system_net_physifs-2"] } } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } /syslog: type: base-type description: > Provides access to the remote syslog server configuration. get: description: Fetch remote syslog server configuration list. responses: 200: description: Returns the current syslog server configuration. body: application/json: type: getSyslogServerListResponse example: { "syslogServers": [ { "id": "services_syslog_servers-31", "port": 601, "protocol": "UDP", "address": "0.au.pool.rsyslog.org", "description": "Remote logging server", "port_logging_enabled": true, "min_severity": "info" }, { "id": "services_syslog_servers-32", "port": 602, "protocol": "UDP", "address": "192.168.220.45", "description": "Remote port logging server", "port_logging_enabled": false, "min_severity": "alert" } ], } post: description: Create a new syslog server data in the configuration. body: application/json: type: putSyslogServer example: { "syslogServer" : { "port": 1000, "protocol": "UDP", "address": "192.168.33.199", "description": "Remote logging server", "port_logging_enabled": true, "min_severity": "info" } } responses: 200: description: Created syslog server configuration body: application/json: type: getSyslogServerResponse example: { "syslogServer" : { "id": "services_syslog_servers-2", "port": 1000, "protocol": "UDP", "address": "192.168.33.199", "description": "Remote logging server", "port_logging_enabled": true, "min_severity": "info" } } 400: description: Failed to initiate syslog server creation due to error in post body. body: application/json: example: { "error": [ { "type": 2, "code": 22, "text": "Element [protocol] is of the wrong type", "args": { "uuid": "protocol" }, "level": 1 } ] } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } /{syslog_server_id}: type: base-type uriParameters: syslog_server_id: description: unique identifier for syslog servers displayName: syslog_server_id get: description: Fetch a configured syslog server by id such as GET services_syslog_servers-1 responses: 200: description: > Returns the requested syslog server configuration. body: application/json: type: getSyslogServerResponse example: { "syslogServer": { "id": "services_syslog_servers-1", "port": 705, "protocol": "UDP", "address": "192.168.33.200", "description": "Remote logging server", "port_logging_enabled": false, "min_severity": "warning" } } 500: description: > Error saving syslog configuration. body: application/json: example: { "error": [ { type: 2, "code": 25, "text": "'' is not a valid hostname", "args": { "address": "", "uuid": "services_syslog_servers-1" }, "level": 1 }, { type: 1, "code": 33, "text": "Push command failed", "args": {}, "level": 1 } ] } 400: description: > Returns an error after the operation failed due to invalid request. body: application/json: example: { "error": [ { type: 4, "code": 40, "text": "Required field 'services_syslog-1' was not provided in the request", "args": { "param": "server-1" }, "level": 1 } ] } put: description: Update syslog server configuration body: application/json: type: putSyslogServer example: { "syslogServer" : { "address": "192.168.33.199", "port": 1000, "protocol": "UDP", "description": "Remote logging server", "port_logging_enabled": false, "min_severity": "debug" } } responses: 200: description: > Returns the updated syslog server configuration. body: application/json: type: getSyslogServerResponse example: { "syslogServer": { "id": "services_syslog_servers-1", "port": 705, "protocol": "UDP", "address": "192.168.33.200", "description": "Remote logging server", "port_logging_enabled": false, "min_severity": "debug" } } 500: description: > Error saving syslog configuration. body: application/json: example: { "error": [ { type: 2, "code": 25, "text": "'' is not a valid hostname", "args": { "address": "", "uuid": "services_syslog_servers-1" }, "level": 1 }, { type: 1, "code": 33, "text": "Push command failed", "args": {}, "level": 1 } ] } 400: description: > Returns an error after the operation failed due to invalid request. body: application/json: example: { "error": [ { type: 4, "code": 40, "text": "Required field 'services_syslog-1' was not provided in the request", "args": { "param": "server-1" }, "level": 1 } ] } delete: description: Delete a syslog server; e.g. DELETE /services/syslog/{syslog_server_id} responses: 200: description: syslog server deleted 400: description: > Returns an error after the operation failed due to invalid request. body: application/json: example: { "error": [ { type: 4, "code": 40, "text": "Required field 'services_syslog-1' was not provided in the request", "args": { "param": "server-1" }, "level": 1 } ] } 404: description: syslog server does not exist body: application/json: example: { "error": [ { "type": 5, "code": 29, "text": "Could not find element with UUID 'services_syslog_servers-2'", "args": { "uuid": "services_syslog_servers-2" }, "level": 1 } ] } /snmp_manager: (deprecated): replaceWith: /services/snmp_alert_managers since: 10/2020 type: base-type description: > Retrieve and configure the SNMP TRAP/INFORM settings. get: description: Get the snmp manager legacy configuration. responses: 200: body: application/json: type: snmpManagerResponse example: { "snmp_manager": { "id": "snmp_manager_1", "enabled": true, "protocol": "UDP", "community": "secret", "auth_protocol": "SHA", "username": "michaelf", "engine_id": "0x80001f8803555000000000", "version": v3, "privacy_protocol": "DES", "security_level": "noAuthNoPriv", "msg_type": "TRAP", "address": "snmp.example.com", "port": 167, } } put: description: Update the snmp manager legacy configuration. body: application/json: type: snmpManager example: { "snmp_manager": { "enabled": true, "protocol": "UDP", "community": "secret", "auth_protocol": "SHA", "auth_password": "secret123", "username": "michaelf", "engine_id": "0x80001f8803555000000000", "version" : "v3", "privacy_protocol": "DES", "privacy_password": "secret123", "security_level": "noAuthNoPriv", "msg_type": "TRAP", "address": "snmp.example.com", "port": 167, } } responses: 200: body: application/json: type: snmpManagerResponse example: { "snmp_manager": { "id": "snmp_manager_1", "enabled": true, "protocol": "UDP", "community": "secret", "auth_protocol": "SHA", "username": "michaelf", "engine_id": "0x80001f8803555000000000", "version" : "v3", "privacy_protocol": "DES", "security_level": "noAuthNoPriv", "msg_type": "TRAP", "address": "snmp.example.com", "port": 167, } } /snmp_alert_managers: type: base-type description: > Retrieve and configure the SNMP TRAP/INFORM settings. get: description: Get the snmp manager configuration. responses: 200: body: application/json: type: getSnmpAlertManagerList example: { "snmp_alert_managers": [ { "id": "snmp_manager_1", "enabled": true, "protocol": "UDP", "community": "secret", "auth_protocol": "SHA", "username": "michaelf", "engine_id": "0x80001f8803555000000000", "version": v3, "privacy_protocol": "DES", "security_level": "noAuthNoPriv", "msg_type": "TRAP", "address": "snmp.example.com", "port": 167, } ] } post: description: Add a new snmp manager. body: application/json: type: snmpAlertManager example: { "snmp_alert_manager": { "name": "A SNMP Alert Manager", "enabled": true, "protocol": "UDP", "community": "secret", "auth_protocol": "SHA", "username": "michaelf", "engine_id": "0x80001f8803555000000000", "version": v3, "privacy_protocol": "DES", "security_level": "noAuthNoPriv", "msg_type": "TRAP", "address": "snmp.example.com", "port": 167, } } responses: 200: description: The snmp manager was added. body: application/json: type: snmpAlertManagerResponse example: { "snmp_alert_manager": { "id": "snmp_manager_1", "name": "A SNMP Alert Manager", "enabled": true, "protocol": "UDP", "community": "secret", "auth_protocol": "SHA", "username": "michaelf", "engine_id": "0x80001f8803555000000000", "version": v3, "privacy_protocol": "DES", "security_level": "noAuthNoPriv", "msg_type": "TRAP", "address": "snmp.example.com", "port": 167, } } /{id}: type: base-type # snmp_alert_managers.get get: description: Get the configuration of an SNMP Manager responses: 200: body: application/json: type: snmpAlertManagerResponse example: { "snmp_alert_manager": { "id": "snmp_manager_1", "name": "A SNMP Alert Manager", "enabled": true, "protocol": "UDP", "community": "secret", "auth_protocol": "SHA", "username": "michaelf", "engine_id": "0x80001f8803555000000000", "version": v3, "privacy_protocol": "DES", "security_level": "noAuthNoPriv", "msg_type": "TRAP", "address": "snmp.example.com", "port": 167, } } # snmp_alert_managers.put put: description: > Update settings for SNMP Managers on the Operations Manager appliance. body: application/json: type: snmpAlertManagerResponse responses: 200: body: application/json: type: snmpAlertManagerResponse example: { "snmp_alert_manager": { "id": "snmp_manager_1", "name": "A SNMP Alert Manager", "enabled": true, "protocol": "UDP", "community": "secret", "auth_protocol": "SHA", "username": "michaelf", "engine_id": "0x80001f8803555000000000", "version": v3, "privacy_protocol": "DES", "security_level": "noAuthNoPriv", "msg_type": "TRAP", "address": "snmp.example.com", "port": 167, } } # snmp_alert_managers.delete delete: displayName: deleteSnmpManager description: > Delete an snmp manager responses: 200: description: snmp manager deleted /snmpd: type: base-type description: > Retrieve and configure the SNMP Daemon settings. get: description: Get the snmpd configuration. responses: 200: body: application/json: type: snmpd example: { "snmpd": { "enabled": true, "port": 161, "protocol": "UDP", "enable_legacy_versions": true, "rocommunity": "public", "rwcommunity": "private", "enable_secure_snmp": true, "security_level": "priv", "security_name": "newuser", "engine_id": "0x80001f8803555000000000", "auth_protocol": "MD5", "auth_use_plaintext": true, "auth_password": "authPassword", "auth_localized_key": "0x123456789ABCDEF", "priv_protocol": "DES", "priv_use_plaintext": true, "priv_password": "privPassword", "priv_localized_key": "0xFEDCBA987654321", } } put: description: Update the snmpd configuration. body: application/json: type: snmpd example: { "snmpd": { "enabled": true, "port": 161, "protocol": "UDP", "enable_legacy_versions": true, "rocommunity": "public", "rwcommunity": "private", "enable_secure_snmp": true, "security_level": "priv", "security_name": "newuser", "engine_id": "0x80001f8803555000000000", "auth_protocol": "MD5", "auth_use_plaintext": true, "auth_password": "authPassword", "auth_localized_key": "0x123456789ABCDEF", "priv_protocol": "DES", "priv_use_plaintext": true, "priv_password": "privPassword", "priv_localized_key": "0xFEDCBA987654321", } } responses: 200: body: application/json: type: snmpd example: { "snmpd": { "enabled": true, "port": 161, "protocol": "UDP", "enable_legacy_versions": true, "rocommunity": "public", "rwcommunity": "private", "enable_secure_snmp": true, "security_level": "priv", "security_name": "newuser", "engine_id": "0x80001f8803555000000000", "auth_protocol": "MD5", "auth_use_plaintext": true, "auth_password": "authPassword", "auth_localized_key": "0x123456789ABCDEF", "priv_protocol": "DES", "priv_use_plaintext": true, "priv_password": "privPassword", "priv_localized_key": "0xFEDCBA987654321", } } 500: description: Failed to save the configuration. body: application/json: type: error 400: description: > Returns an error after the operation failed due to incomplete data. body: application/json: example: { "error": [ { type: 4, "code": 40, "text": "Required field 'priv_localized_key' was not provided in the request", "args": { "param": "priv_localized_key" }, "level": 1 } ] } /ssh: type: base-type get: description: Fetch the current ssh delimiter. For example, GET services/ssh responses: 200: body: application/json: type: sshResponse example: { "ssh": { "ssh_url_delimiter": "+" } } put: description: Update config parameters related to the SSH service. body: application/json: type: sshPut example: { "ssh": { "ssh_url_delimiter": "+" } } responses: 200: body: application/json: type: sshResponse example: { "ssh": { "ssh_url_delimiter": "+" } } /routing: type: base-type get: description: Fetch the configuration for the available routing daemons. For example, GET services/routing responses: 200: body: application/json: type: routingDaemon example: { "routing": { "bgpd": { "enabled": true }, "isisd": { "enabled": false }, "ripd": { "enabled": true }, "ospfd": { "enabled": false } } } put: description: Update the configuration for the available routing daemons. body: application/json: type: routingDaemon example: { "routing": { "bgpd": { "enabled": true }, "isisd": { "enabled": false }, "ripd": { "enabled": true }, "ospfd": { "enabled": false } } } responses: 200: body: application/json: type: routingDaemon example: { "routing": { "bgpd": { "enabled": true }, "isisd": { "enabled": false }, "ripd": { "enabled": true }, "ospfd": { "enabled": false } } } 500: description: Failed to save the configuration. body: application/json: type: error 400: description: > Returns an error after the operation failed due to incomplete data. body: application/json: example: { "error": [ { type: 4, "code": 40, "text": "Required field 'bgpd' was not provided in the request", "args": { "param": "bgpd" }, "level": 1 } ] } /alerts: type: base-type description: > Used to configure various types of alerts /authentication: type: base-type description: Retrieve and configure Authentication Trap Group settings. get: description: Get the authentication trap group settings. responses: 200: body: application/json: type: authenticationAlert example: { "authentication_trap_group": { "enabled": true } } put: description: Update the authentication trap group settings. body: application/json: type: authenticationAlert example: { "authentication_trap_group": { "enabled": true } } responses: 200: body: application/json: type: authenticationAlert example: { "authentication_trap_group": { "enabled": true } } /system: type: base-type description: Retrieve and configure System Trap Group settings. get: description: Get the system trap group settings. responses: 200: body: application/json: type: systemAlert example: { "system_trap_group": { "enabled": true, "power_supply_millivolt_lower": 11000, "power_supply_millivolt_upper": 13000 } } put: description: Update the system trap group settings. body: application/json: type: systemAlert example: { "system_trap_group": { "enabled": true, "power_supply_millivolt_lower": 11000, "power_supply_millivolt_upper": 13000 } } responses: 200: body: application/json: type: systemAlert example: { "system_trap_group": { "enabled": true, "power_supply_millivolt_lower": 11000, "power_supply_millivolt_upper": 13000 } } /networking: type: base-type description: Retrieve and configure Networking Trap Group settings. get: description: Get the networking trap group settings. responses: 200: body: application/json: type: networkingAlert examples: example1: description: With a cell modem value: { "networking_trap_group": { "enabled": true, "signal_strength_threshold_lower": 33, "signal_strength_threshold_upper": 66 } } example2: description: Without a cell modem value: { "networking_trap_group": { "enabled": true } } put: description: Update the networking trap group settings. body: application/json: type: networkingAlert examples: example1: description: With a cell modem value: { "networking_trap_group": { "enabled": true, "signal_strength_threshold_lower": 33, "signal_strength_threshold_upper": 66 } } example2: description: Without a cell modem value: { "networking_trap_group": { "enabled": true } } responses: 200: body: application/json: type: networkingAlert examples: example1: description: With a cell modem value: { "networking_trap_group": { "enabled": true, "signal_strength_threshold_lower": 33, "signal_strength_threshold_upper": 66 } } example2: description: Without a cell modem value: { "networking_trap_group": { "enabled": true } } /config_change: type: base-type description: Retrieve and configure config change trap group settings. get: description: Get the config change trap group settings. responses: 200: body: application/json: type: configChangeAlert example: { "config_change_trap_group": { "enabled": true } } put: description: Update the config trap group settings. body: application/json: type: configChangeAlert example: { "config_change_trap_group": { "enabled": true } } responses: 200: body: application/json: type: configChangeAlert example: { "config_change_trap_group": { "enabled": true } } /physifs: description: > Read and manipulate the network physical interfaces on the Operations Manager appliance. type: base-type # Interface.getList get: description: > Get a list of the network interfaces on the Operations Manager appliance: GET physifs displayName: getPhysifs responses: 200: body: application/json: type: getPhysifList example: { "physifs": [ { "enabled": true, "id": "system_net_physifs-1", "name": "init_net1", "media": "ethernet", "mtu" : 1500, "device": "net1", "runtime_status": { "status": "UP", "id": "system_net_physifs-1" }, "ethernet_setting": { "id": "system_net_physifs-1", "link_speed": "auto" }, "description": "NET1 - 10G SFP+" }, { "enabled": true, "id": "system_net_physifs-2", "name": "init_net2", "media": "ethernet", "mtu": 1400, "device": "net2", "runtime_status": { "status": "UP", "id": "system_net_physifs-2" }, "ethernet_setting": { "id": "system_net_physifs-2", "link_speed": "auto" }, "description": "NET2 - 1G Copper/SFP" }, { "enabled": false, "id": "system_net_physifs-3", "name": "init_cellular", "media": "cellular", "device": "wwan0", "runtime_status": { "id": "system_net_physifs-3_runtime_status", "status": "ENABLED" }, "cellular_setting": { "id": "system_net_physifs-3_cellular_setting", "active_sim": 2, "sims": [{ "id": "system_net_physifs-3_cellular_setting_sims-1", "slot": 1, "apn": "vzwinternet", "iptype": "IPv4v6", "runtime_status": { "id": "system_net_physifs-3_cellular_setting_sims-1_runtime_status", "status": "DISABLED", }, },{ "id": "system_net_physifs-3_cellular_setting_sims-2", "slot": 2, "apn": "i2gold", "iptype": "IPv4v6", "runtime_status": { "id": "system_net_physifs-3_cellular_setting_sims-2_runtime_status", "status": "ENABLED", }, }], }, "description": "Cellular Interface (LTE)" } ] } post: description: Add a new interface to the Operations Manager appliance. body: application/json: type: postPhysif examples: example1: { "physif": { "enabled": true, "media": "bridge", "slaves": ["system_net_physifs-1", "system_net_physifs-2"] } } example2: { "physif": { "enabled": true, "media": "bond", "slaves": ["system_net_physifs-1", "system_net_physifs-2"], "bond_setting": { "mode": "balance-rr" } } } responses: 200: description: The new physif is returned. body: application/json: type: physifItem example: { "physif": { "id": "system_net_physifs-5", "enabled": true, "name": "init_br0", "media": "bridge", "device": "br0", "description": "BR0 - Aggregate", "slaves": ["system_net_physifs-1", "system_net_physifs-2"], "runtime_status": { "status": "UP", "id": "system_net_physifs-5" } } } 400: description: > Validation failure. For example, invalid or missing fields. Slave interfaces not valid. /{id}: type: base-type get: description: > Get a network interface on the Operations Manager appliance, by id: GET physifs/id responses: 200: body: application/json: type: physifItem example: { "physif": { "enabled": true, "id": "system_net_physifs-2", "name": "init_net2", "media": "ethernet", "device": "net2", "runtime_status": { "status": "UP", "id": "system_net_physifs-2" }, "ethernet_setting": { "id": "system_net_physifs-2", "link_speed": "auto" }, "description": "NET2 - 1G Copper/SFP" } } put: description: > Update settings for a network interface on the Operations Manager appliance, by id: PUT physifs/id body: application/json: type: putPhysif example: { "physif": { "enabled": true, "ethernet_setting":{ "link_speed":"auto", }, } } responses: 200: description: > The physif {id} settings was updated. body: application/json: type: physifItem example: { "physif": { "enabled": true, "id": "system_net_physifs-2", "name": "init_net2", "media": "ethernet", "device": "net2", "runtime_status": { "status": "UP", "id": "system_net_physifs-2" }, "ethernet_setting": { "id": "system_net_physifs-2", "link_speed": "auto" }, "description": "NET2 - 1G Copper/SFP" } } 400: description: > Invalid request: body is not json or does not conform to required json schema. Incomplete data: physif id parameter missing. 404: description: > physif {id} does not exist. Attempted to change read only fields. Attempted to change unknown fields. delete: description: > Delete a network interface by id: DELETE physifs/id. Currently only aggregate interfaces can be deleted. responses: 200: description: > The aggregate physif {id} was deleted. 404: description: > physif {id} does not exist. physif {id} is not an aggregate interface. /conns: description: > Read and manipulate the network connections on the Operations Manager appliance. type: base-type # Conn.getList get: description: > Get a list of the network connections on the server. displayName: getConns responses: 200: body: application/json: type: getConnList example: { "conns": [ { name: "default-conn-1", description: "IPv4 static network connection", "physif": "net1", "mode": "static", "ipv4_static_settings": { "id": "system_net_conns-1", "netmask": "255.255.255.0", "address": "192.168.87.156", "gateway": "192.168.87.100", "broadcast": "192.168.87.255", "dns1": "192.168.87.100", "dns2": "192.168.87.100", }, "runtime_status": { "status": "running", "last_status_change": 1471506633, "id": "system_net_conns-1", "addresses": [ { "id": "system_net_conns-address-1", "address": "192.168.87.156", "netmask": "255.255.255.0", } ], "gateway":"192.168.87.254", "dns1":"8.8.8.8", "dns2":"192.168.33.254" }, "id": "system_net_conns-1" }, { name: "default-conn-2", description: "IPv6 static network connection", "physif": "net1", "mode": "ipv6_static", "ipv6_static_settings": { "id": "system_net_conns-1", "address": "2001:b:c:d::8329", "prefix_length": "64", "gateway": "2001:b:c:d::254", "dns1": "DDDD:0002:3008:8CFD:00AB:0002:3008:AAAA", "dns2": "DDDD:0002:3008:8CFD:00AB:0002:3008:BBBB", }, "runtime_status": { "status": "running", "last_status_change": 1471506633, "id": "system_net_conns-2", "addresses": [ { "id": "system_net_conns-2-address-1", "address": "2001:b:c:d::8329", "prefix_length": 64, }, { "id": "system_net_conns-2-address-2", "address": "2001:b:c:d::8320", "netmask": "64", } ], "gateway":"192.168.87.254", "dns1":"DDDD:0002:3008:8CFD:00AB:0002:3008:AAAA", "dns2": "DDDD:0002:3008:8CFD:00AB:0002:3008:BBBB", }, "id": "system_net_conns-3" } ], } #conns.post post: description: Add a new network connection to the Operations Manager appliance. body: application/json: type: putConnItem example: { "conn": { "ipv4_static_settings": { "netmask": "255.255.255.0", "address": "192.168.87.156", "gateway": "192.168.87.100", "broadcast": "192.168.87.255", "dns1": "192.168.87.100", "dns2": "192.168.87.100", }, "mode": "static", "physif": "system_net_physifs-1" } } responses: 200: description: The conn \{id} settings was updated. body: application/json: type: connItem example: { "conn": { "name": "conn-2", "ipv4_static_settings": { "netmask": "255.255.255.0", "address": "192.168.87.156", "gateway": "192.168.87.100", "broadcast": "192.168.87.255", "dns1": "192.168.87.100", "dns2": "192.168.87.100", }, "id": "system_net_conns-9", "mode": "static", "physif": "system_net_physifs-1", "runtime_status": { "status": "reloading", "addresses": [ { "id": "system_net_conns-9" } ], "last_status_change": 1536209633, "id": "system_net_conns-9" } } } 400: description: > Invalid request: body is not json or does not conform to required json schema. Incomplete data: conn id parameter missing. 404: description: > Conn {id} does not exist. Attempted to change read only fields. Attempted to change unknown fields. /{id}: type: base-type # Conn.get get: description: > Get the configuration of a network connection on the Operations Manager appliance: GET /conns/{id} responses: 200: body: application/json: type: connItem example: { "conn": { "name": "default-conn-1", "ipv4_static_settings": { "id": "system_net_conns-1", "netmask": "255.255.255.0", "address": "192.168.87.156", "gateway": "192.168.87.100", "broadcast": "192.168.87.255", "dns1": "192.168.87.100", "dns2": "192.168.87.100", }, "id": "system_net_conns-1", "mode": "static", description: "Default static network connection", "physif": "system_net_physifs-1", "runtime_status": { "status": "reloading", "addresses": [ { "id": "system_net_conns-1" } ], "last_status_change": 1536210047, "id": "system_net_conns-2" } } } # Conn.put put: description: > Update settings for a network connection on the Operations Manager appliance: PUT /conns/{id} body: application/json: type: putConnItem example: { "conn": { "ipv4_static_settings": { "netmask": "255.255.255.0", "address": "192.168.87.156", "gateway": "192.168.87.100", "broadcast": "192.168.87.255", "dns1": "192.168.87.100", "dns2": "192.168.87.100", }, "mode": "static", "physif": "system_net_physifs-1" } } responses: 200: description: The conn settings were updated. body: application/json: type: connItem example: { "conn": { "name": "conn-2", "ipv4_static_settings": { "broadcast": "192.168.87.255", "gateway": "192.168.87.100", "address": "192.168.87.156", "id": "system_net_conns-2", "dns2": "192.168.87.100", "dns1": "192.168.87.100", "netmask": "255.255.255.0" }, "id": "system_net_conns-2", "mode": "static", "physif": "system_net_physifs-1", "runtime_status": { "status": "reloading", "addresses": [ { "id": "system_net_conns-2" } ], "last_status_change": 1536210052, "id": "system_net_conns-2" } } } 400: description: > Invalid request: body is not json or does not conform to required json schema. Incomplete data: conn id parameter missing. 404: description: > Conn {id} does not exist. Attempted to change read only fields. Attempted to change unknown fields. #conns.delete delete: displayName: deleteConn description: > Delete a network connection on the Operations Manager appliance: DELETE /conns/{id} responses: 200: description: Conn deleted 404: description: User did not exist body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'system_net_conns-1'", "args": { "uuid": "system_net_conns-1" }, "level": 1 } ] } /static_routes: description: > Configuring and viewing static routes type: base-type get: description: Get list of static routes responses: 200: body: application/json: type: getStaticRoutesList examples: example1: description: Gets two static routes value: { "static_routes": [ { "id": "system_net_static_routes-1", "destination_address": "192.168.10.0", "destination_netmask": 24, "gateway_address": "192.168.0.1", "interface": "system_net_physifs-1", "metric": 100 }, { "id": "system_net_static_routes-2", "destination_address": "192.168.20.0", "destination_netmask": 24, "gateway_address": "192.168.0.1", "interface": "system_net_physifs-2", "metric": 100 } ] } example2: description: No static routes present value: { "static_routes": [] } put: description: Create a list of static routes. Overwrite existing routes body: application/json: type: putStaticRoutesList examples: example1: description: Sets two routes value: { "static_routes": [ { "destination_address": "192.168.10.0", "destination_netmask": 24, "gateway_address": "192.168.0.1", "interface": "system_net_physifs-1", "metric": 100 }, { "destination_address": "192.168.20.0", "destination_netmask": 24, "gateway_address": "192.168.0.1", "interface": "system_net_physifs-2", "metric": 100 } ] } responses: 200: description: List of static routes body: application/json: type: getStaticRoutesList example: { "static_routes": [ { "id": "system_net_static_routes-1", "destination_address": "192.168.10.0", "destination_netmask": 24, "gateway_address": "192.168.0.1", "interface": "system_net_physifs-1", "metric": 100 }, { "id": "system_net_static_routes-2", "destination_address": "192.168.20.0", "destination_netmask": 24, "gateway_address": "192.168.0.1", "interface": "system_net_physifs-2", "metric": 100 } ] } post: description: Add a static route body: application/json: type: postStaticRouteItem example: { "static_route": { "destination_address": "192.168.10.0", "destination_netmask": 24, "gateway_address": "192.168.0.1", "interface": "system_net_physifs-1", "metric": 100 } } responses: 200: description: Static route was created body: application/json: type: postStaticRouteItemResult example: { "static_route": { "id": "system_net_static_routes-1", "destination_address": "192.168.10.0", "destination_netmask": 24, "gateway_address": "192.168.0.1", "interface": "system_net_physifs-1", "metric": 100 } } 400: description: Failed to create static route delete: description: Delete all static routes responses: 204: description: Static routes were removed /{id}: type: base-type get: description: Get the configuration of a static route by its id. responses: 200: description: The requested static route configuration. body: application/json: type: getStaticRouteItem example: { "static_route": { "id": "system_net_static_routes-1", "destination_address": "192.168.10.0", "destination_netmask": 24, "gateway_address": "192.168.0.1", "interface": "system_net_physifs-1", "metric": 100 }, } 404: description: The static route doesn't exist. body: application/json: type: error example: { "error": [ { "type": 5, "code": 29, "text": "Could not find element with UUID 'system_net_static_routes-1'", "args": { "uuid": "system_net_static_routes-1" }, "level": 1 } ] } put: description: Update the configuration of a static route by its id. body: application/json: type: putStaticRouteItem example: { "static_route": { "destination_address": "192.168.10.0", "destination_netmask": 24, "gateway_address": "192.168.0.1", "interface": "system_net_physifs-1", "metric": 100 } } responses: 200: description: The updated static route configuration. body: application/json: type: getStaticRouteItem example: { "static_route": { "id": "system_net_static_routes-1", "destination_address": "192.168.10.0", "destination_netmask": 24, "gateway_address": "192.168.0.1", "interface": "system_net_physifs-1", "metric": 100 }, } 400: description: > Invalid request: Body is not json or does not conform to required json schema. 404: description: The static route doesn't exist. body: application/json: type: error example: { "error": [ { "type": 5, "code": 29, "text": "Could not find element with UUID 'system_net_static_routes-1'", "args": { "uuid": "system_net_static_routes-1" }, "level": 1 } ] } delete: description: Delete a static route responses: 204: description: Static route deleted 400: description: Static route does not exist /lighthouse_enrollments: description: > View and control enrollment to a lighthouse type: base-type get: description: Get the information about the lighthouse enrollments responses: 200: body: application/json: type: lighthouseEnrollmentsList example: { "lighthouse-enrollments": [ { "port": 443, "address": "192.168.0.1", "id": "lighthouse_enrollments-1", "bundle": "bundle", "status": "Enrolling" } ] } post: description: Create a new lighthouse enrollment body: application/json: type: lighthouseEnrollmentPost example: { "lighthouse_enrollment": { "address": "192.168.0.1", "token": "password", "bundle": "bundle-1", "port": 8443 } } responses: 201: description: The new lighthouse enrollment was successfully created and callhome enrollment was started. body: application/json: type: lighthouseEnrollmentItem example: { "lighthouse_enrollment": { "id": "lighthouse_enrollments-1", "port": 8443, "status": "Enrolling", "address": "192.168.0.1" } } 400: description: > Invalid request: body is not json or does not conform to required json schema. /{id}: type: base-type uriParameters: id: description: ID of the lighthouse-enrollment to fetch displayName: id example: lighthouse_enrollment-2 get: description: Get lighthouse-enrollment information by id. responses: 200: body: application/json: type: lighthouseEnrollmentItem example: { "lighthouse_enrollment": { "id": "lighthouse_enrollments-2", "port": 443, "status": "Connected", "address": "192.168.0.1" } } 404: description: The lighthouse-enrollment doesn't exist. body: application/json: type: object example: { "error": [ { "type": 5, "code": 29, "text": "Could not find element with UUID 'lighthouse_enrollments-6'", "args": { "uuid": "lighthouse_enrollments-6" }, "level": 1 } ] } delete: description: Delete lighthouse enrollment object and begin unenrollment responses: 200: body: application/json: type: object example: { "message": "OK" } 404: body: application/json: type: object example: { "error": [ { "type": 5, "code": 29, "text": "Could not find element with UUID 'lighthouse_enrollments-20'", "args": { "uuid": "lighthouse_enrollments-20" }, "level": 1 } ] } /registration: description: Registration endpoint accessed by a Lighthouse to start Lighthouse driven enrollment type: base-type post: description: Initial contact from Lighthouse to start the Enrollment process body: application/json: type: registrationItem example: { "id": "nodes-1", "server": "192.168.0.1", "server_api_port": 8443, "package_password": "password", "lh_ext_eps": [ { "server": "162.168.0.1", "server_api_port" : 8443, "server_vpn_port" : 1121 }, { "server" : "162.168.0.2", "server_api_port" : 601, "server_vpn_port" : 1121 } ] } responses: 201: body: application/json: type: object example: { "message": "OK" } 400: description: > Invalid request: body is not json or does not conform to required json schema. body: application/json: type: object example: { "error": [ { "type": 4, "code": 39, "text": "Invalid request body", "args": {}, "level": 1 } ] } delete: description: Remove connection to this lighthouse responses: 200: body: application/json: type: object example: { "message": "OK" } 500: description: Internal Server Error /{id}: type: base-type description: Remove a connection to a given Lighthouse by ID uriParameters: id: description: The lighthouse system name displayName: id example: lighthouse-5633-1563 delete: responses: 200: description: Lighthouse connection removed successfully body: application/json: example: { "message":"OK" } 400: description: Invalid request body: application/json: type: object example: { "error": "Parameter 'id' not provided." } 404: description: Not found body: application/json: 500: description: Internal server error body: application/json: /{id}/server_address: type: base-type description: Update the lhvpn_tunnel server address uriParameters: id: description: The lighthouse system name displayName: id example: lighthouse-5633-1563 put: body: application/json: type: registrationAddress example: { "address": "192.168.0.1" } responses: 200: body: application/json: type: object example: { "message": "OK" } 400: description: > Invalid request: body is not json or does not conform to required json schema. body: application/json: type: object example: { "error": [ { "type": 4, "code": 39, "text": "Invalid request body", "args": {}, "level": 1 } ] } 404: body: application/json: type: object example: { "error": [ { "type": 5, "code": 29, "text": "Could not find element with UUID 'nodes-1'", "args": { "uuid": "nodes-1" }, "level": 1 } ] } /system: description: > System endpoints are related to configuring and accessing information about the Operations Manager appliance itself. /hostname: type: base-type description: Retrieve or change the Operations Manager appliance system's hostname. get: description: Get the Operations Manager appliance hostname. responses: 200: body: application/json: type: systemHostname example: { system_hostname: { hostname: "OM2000" } } put: description: Update the Operations Manager appliance hostname. body: application/json: type: systemHostname example: { system_hostname: { hostname: "OM2000" } } responses: 200: body: application/json: type: systemHostname example: { system_hostname: { hostname: "OM2000" } } /banner: type: base-type description: Retrieve or change the Operations Manager appliance system's banner text. get: description: Get the Operations Manager appliance banner text. responses: 200: body: application/json: type: systemBanner example: { system_banner: { banner: "********************************************************************************\nUNAUTHORIZED ACCESS TO THIS DEVICE IS PROHIBITED\nYou must have explicit, authorized permission to access or configure this\n device. Unauthorized attempts and actions to access or use this system may\n result in civil and/or criminal penalties. All activities performed on this\n device are logged and monitored.\n********************************************************************************" } } put: description: Update the Operations Manager appliance banner text. body: application/json: type: systemBanner example: { system_banner: { banner: "********************************************************************************\nUNAUTHORIZED ACCESS TO THIS DEVICE IS PROHIBITED\nYou must have explicit, authorized permission to access or configure this\n device. Unauthorized attempts and actions to access or use this system may\n result in civil and/or criminal penalties. All activities performed on this\n device are logged and monitored.\n********************************************************************************" } } responses: 200: body: application/json: type: systemBanner example: { system_banner: { banner: "A new banner\nWith 2 lines" } } /webui_session_timeout: type: base-type description: Retrieve or change the Operations Manager appliance WebUI session timeout. get: description: Retrieve the WebUI session timeout (in minutes). responses: 200: body: application/json: type: webuiSessionTimeout example: { system_webui_session_timeout: { timeout: 20 } } put: description: Update the WebUI session timeout (in minutes). body: application/json: type: webuiSessionTimeout example: { system_webui_session_timeout: { timeout: 20 } } responses: 200: body: application/json: type: webuiSessionTimeout example: { system_webui_session_timeout: { timeout: 20 } } /cli_session_timeout: type: base-type description: Retrieve or change the Operations Manager appliance CLI get: description: Retrieve the CLI session timeout (in minutes). responses: 200: body: application/json: type: cliSessionTimeout example: { system_cli_session_timeout: { timeout: 0 } } put: description: Update the CLI session timeout (in minutes). body: application/json: type: cliSessionTimeout example: { system_cli_session_timeout: { timeout: 20 } } responses: 200: body: application/json: type: cliSessionTimeout example: { system_cli_session_timeout: { timeout: 20 } } /system_authorized_keys: type: base-type get: description: Retrieve ssh authorized keys for all users responses: 200: body: application/json: type: allUsersSSHAuthorizedKeys examples: example1: description: System that has 2 SSH keys belonging to 2 different users value: { "system_authorized_keys": [ { id: "users_ssh_authorized_keys-1", key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTRO6c/1JnaA/Mi3MKONqQJUe75rZC36Z0tH+BefpR2li3F/x7TWQnW0aBSA4y7bGOxS5B+nFd86m6+QWqZMxqIpraG11KKVh2c+ElIliVvPbpN7cL9QKbzDZPCn5TZ28znHDuUSzc7Kt0+33On+7HkMhapKiXkA2ardK89DlpKbE4mSiIZoWG0zepyWsXa86fiKTORqEN8FhRtxnBMcl+WODjQfuBzPNr/zYv75eLaZ0LwUOz6/xm8RkwEhd/kF1ntrXYrwOqhFsR7g0cfqQ5T9vLcUXqe+VDvD16KBkooSL92OTxC907F7HPk7XvQaY4bEWK7ca/vbVhsVzdDhbF /home/root/.ssh/id_rsa\n", username: "root" }, { id: "users_ssh_authorized_keys-2", key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDcsp/AQJKLsinT822ZXAnyXpSykeRXPlOvvOH3zi7QkYLz4+VBbTqJO/R2AJp8Cd0MrGMwuzzbwM25bAb7mesni+RRUAcNPqDD8/z8PKKKRzU1aKRqi/Za3FDRxPAOPJ/Wy1F1lGG6BSKe3gH9QHkPpy5ZPkDcs0S9+qoUYwNCAaB2tcK1jp/L6RXuJ3yLhRBIMpYicRwYcXDOX7QFt4BhnKMrR1ufcU08CGRLYLxnsd2RuiPn2jAz8OHJN7GUvrQ6VK+k47vEj0YLBuP27ZbFKwAJd3dhdezlhjlDDGrVrrXZgwxR+LeOuTnkqUVHOXkYVuiWQZqGS/hC76wJEt2xHinW5+4GuN69qBeY//jCYT+DH admin@admin-1", username: "admin" } ] } example2: description: System that has no SSH keys value: { "system_authorized_keys": [] } post: description: Add an SSH key for the specified user body: application/json: type: allUsersSSHAuthorizedKeyPost example: { "system_authorized_key": { "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTRO6c/1JnaA/Mi3MKONqQJUe75rZC36Z0tH+BefpR2li3F/x7TWQnW0aBSA4y7bGOxS5B+nFd86m6+QWqZMxqIpraG11KKVh2c+ElIliVvPbpN7cL9QKbzDZPCn5TZ28znHDuUSzc7Kt0+33On+7HkMhapKiXkA2ardK89DlpKbE4mSiIZoWG0zepyWsXa86fiKTORqEN8FhRtxnBMcl+WODjQfuBzPNr/zYv75eLaZ0LwUOz6/xm8RkwEhd/kF1ntrXYrwOqhFsR7g0cfqQ5T9vLcUXqe+VDvD16KBkooSL92OTxC907F7HPk7XvQaY4bEWK7ca/vbVhsVzdDhbF test", username: "root" } } responses: 200: body: application/json: type: allUsersSSHAuthorizedKeyGet example: { "system_authorized_key": { "id": "users_ssh_authorized_keys-3", "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTRO6c/1JnaA/Mi3MKONqQJUe75rZC36Z0tH+BefpR2li3F/x7TWQnW0aBSA4y7bGOxS5B+nFd86m6+QWqZMxqIpraG11KKVh2c+ElIliVvPbpN7cL9QKbzDZPCn5TZ28znHDuUSzc7Kt0+33On+7HkMhapKiXkA2ardK89DlpKbE4mSiIZoWG0zepyWsXa86fiKTORqEN8FhRtxnBMcl+WODjQfuBzPNr/zYv75eLaZ0LwUOz6/xm8RkwEhd/kF1ntrXYrwOqhFsR7g0cfqQ5T9vLcUXqe+VDvD16KBkooSL92OTxC907F7HPk7XvQaY4bEWK7ca/vbVhsVzdDhbF test", username: "root" } } /{key-id}: type: base-type delete: description: Delete an SSH key. responses: 204: description: SSH key deleted. 403: description: Failed due to not having permission to delete key. body: application/json: example: { "error": [ { "type": 7, "code": 47, "text": "Permission denied", "args": {}, "level": 1 } ] } 404: description: SSH key does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users_ssh_authorized_keys-9'", "args": { "uuid": "users_ssh_authorized_keys-9" }, "level": 1 } ] } /ssh_port: type: base-type description: The SSH port used in Direct SSH links. get: description: Retrieve the system SSH port. responses: 200: body: application/json: type: systemSSHPort example: { "system_ssh_port": { "port":22 } } put: description: Update the system SSH port. body: application/json: type: systemSSHPort example: { "system_ssh_port": { "port":22 } } responses: 200: body: application/json: type: systemSSHPort example: { "system_ssh_port": { "port":22 } } /timezone: type: base-type description: Retrieve and update the system's timezone. get: description: Retrieves the system timezone. responses: 200: body: application/json: type: systemTimezone example: { system_timezone: { timezone: "Australia/Brisbane" } } put: description: Update the system timezone. body: application/json: type: systemTimezone example: { system_timezone: { timezone: "Australia/Brisbane" } } responses: 200: body: application/json: type: systemTimezone example: { system_timezone: { timezone: "Australia/Brisbane" } } /time: type: base-type description: Retrieve and update the Operations Manager's time. get: description: Retrieve the Operations Manager current time. responses: 200: body: application/json: type: systemTime example: { time: { time: "16:22 Sep 23, 2016" } } put: description: Update the Operations Manager current time. body: application/json: type: systemTime example: { time: { time: "16:22 Sep 23, 2016" } } responses: 200: body: application/json: type: systemTime example: { time: { time: "16:22 Sep 23, 2016" } } /config: type: base-type # System.reset delete: description: > Delete the configuration effectively performing a system reset. The will reset to factory settings and reboot. responses: 200: description: > The factory reset process was started successfully. /reboot: type: base-type # System.reboot post: description: > Wait 10 seconds then perform a system reboot. responses: 200: description: > The factory reboot process was started successfully. /admin_info: type: base-type description: Retrieve or change the Operations Manager appliance system's information (hostname, contact and location). get: description: Get the Operations Manager appliance system information. responses: 200: body: application/json: type: systemAdminInfo example: { "system_admin_info": { "hostname": "myhost1", "contact": "admin@example.com", "location": "USA" } } put: description: Update the Operations Manager appliance system information. body: application/json: type: systemAdminInfo example: { "system_admin_info": { "hostname": "myhost1", "contact": "admin@example.com", "location": "USA" } } responses: 200: body: application/json: type: systemAdminInfo example: { "system_admin_info": { "hostname": "myhost1", "contact": "admin@example.com", "location": "USA" } } /cell_reliability_test: type: base-type get: description: > Retrieve configuration items related to running the cell reliability test. responses: 200: description: Cell reliability test configuration retrieved successfully. body: application/json: type: cellReliabilityTestConfiguration example: { "cell_reliability_test" : { "enabled": true, "period": 120, "test_url": ["https://www.opengear.com/","http://[684D:1111:222:3333:4444:5555:6:77]/"], "signal_strength_threshold" : { "lower": 25, "upper": 75 } } } put: description: > Update configuration items related to running the cell reliability test. This allows the user to enable and disable the test, change how frequently it executes, configure the URL to use in the test and configure the alert threshold for signal strength. body: application/json: type: cellReliabilityTestConfiguration example: { "cell_reliability_test" : { "enabled": true, "period": 120, "test_url": ["https://www.opengear.com/","http://[684D:1111:222:3333:4444:5555:6:77]/"], "signal_strength_threshold" : { "lower": 25, "upper": 75 } } } responses: 200: description: The configuration has been updated. body: application/json: type: cellReliabilityTestConfiguration example: { "cell_reliability_test" : { "enabled": true, "period": 120, "test_url": ["https://www.opengear.com/","http://[684D:1111:222:3333:4444:5555:6:77]/"], "signal_strength_threshold" : { "lower": 25, "upper": 75 } } } /firmware_upgrade: type: base-type # Firmware.postFirmwareUpgrade post: description: > Upgrade the system firmware either by uploading a file or providing a url to download the file from. This endpoint will always return success if the firmware upgrade job was started - it occurs in the background and the state of which should be retrieved from the GET /system/firmware_upgrade_status endpoint. At least 'file' or 'firmware_url' are required. body: multipart/form-data: properties: file: description: The file to be uploaded. required: false type: file firmware_url: description: A url for the file to download. required: false type: string firmware_options: description: Options for the firmware upgrade tool. required: false type: string responses: 200: description: The firmware upgrade process was started. body: application/json: type: firmwareUpgradeStatus example: { "system_firmware_upgrade_status": { "state": "running" } } /firmware_upgrade_status: # Firmware.getFirmwareUpgradeStatus type: base-type get: description: Retrieve the status of the most recent firmware upgrade job. responses: 200: description: The factory reset process was started successfully. body: application/json: type: firmwareUpgradeStatus example: { "system_firmware_upgrade_status": { "state": "error", "error_message": "download_error" } } /version: type: base-type description: Retrieve the Operations Manager's most recent firmware and REST API version. get: description: Get the version information. responses: 200: body: application/json: type: systemVersion example: { "system_version": { "rest_api_version": "v2", "firmware_version": "18.Q3.0" } } /serial_number: type: base-type description: Retrieve the Operations Manager appliance's Serial Number. get: description: Get the Serial Number information. responses: 200: body: application/json: type: systemSerialNumber example: { "system_serial_number": { "serial_number": "409155v03.0001" } } /model_name: type: base-type description: Retrieve the Operations Manager appliance's Model Name. get: description: Get the Model Name information. responses: 200: body: application/json: type: systemModelName example: { "system_model_name": { "model_name": "OM2248-DAC" } } # SupportReport /support_report: description: > A report which will provide information about the state of the Operations Manager appliance. This information can be used to help analyse and understand the state of the system. The report is large and may take in the order of a minute to obtain. type: base-type # SupportReport.get get: description: Retrieve the support report data. responses: 200: description: > System report was successfully generated and returned including a url to a corresponding zip file. body: application/json: type: getSupportReport example: { "support_report": { "contents": "*** System time ***\nMon Aug 22 11:27:29 2016\n\n\n*** Firmware Version ***\n$ sysflash_info\nsysflash info\ncurrent copy name: 'root1'\ncurrent config dev: '/dev/sda6'\ncurrent root dev: '/dev/sda5'\ncurrent boot dev: '/dev/sda2'\nother (upgradable) copy name: 'root2'\nother (upgradable) config dev: '/dev/sda8'\nother (upgradable) root dev: '/dev/sda7'\nother (upgradable) boot dev: '/dev/sda3'\nboard name: 'OM-2000'\nboard rev: '1.0'\ncurrent software vendor: 'opengear'\ncurrent software product: 'operations manager'\ncurrent software version: '1.0.0'\ncurrent software variant: 'dev'\n\n*** Uptime ***\n359140.57 715606.84\n\n*** IP Configuration ***\n$ ifconfig\nnet1 Link encap:Ethernet HWaddr 08:00:27:d7:1c:38 \n ", "zip_file": "/api/v2/support_report?zip=1" } } # Remote Authentication Config /auth: description: > Configure remote authentication, authorization, accounting (AAA) servers. type: base-type get: description: Retrieve information on AAA servers. responses: 200: description: > A JSON object containing the AAA config is returned. body: application/json: type: authGet example: { "auth" : { "mode" : "tacacs", "policy" : "remotedownlocal", "radiusAuthenticationServers" : [ { "id" : "auth_radius_authenticationServers-2", "hostname" : "192.168.250.1.2" } ], "radiusAccountingServers" : [ { "id" : "auth_radius_accountingServers-1", "hostname" : "192.168.250.1.2" } ], "tacacsService" : "raccess", "tacacsMethod" : "pap", "tacacsAuthenticationServers" : [ { "hostname" : "192.168.1.2", "id" : "auth_tacacs_authenticationServers-2" } ], "ldapAuthenticationServers" : [ { "id" : "auth_ldap_authenticationServers-1", "hostname" : "192.168.1.2" } ], "ldapBaseDN" : "cn=Users,dc=example,dc=com", "ldapBindDN" : "cn=Administrator,cn=Users,dc=example,dc=com", "ldapUsernameAttribute" : "sAMAccountName", } } put: description: Update the AAA config. body: application/json: type: authPut example: { "auth" : { "mode" : "radius", "policy" : "remotelocal", "radiusPassword" : "hunter2", "radiusAuthenticationServers" : [ { "hostname" : "192.168.250.2" } ], "radiusAccountingServers" : [ { "hostname" : "192.168.250.2" } ], "tacacsAuthenticationServers":[], "tacacsPassword": "", "ldapBaseDN": "", "ldapUsernameAttribute": "", "ldapBindPassword": "", "ldapAuthenticationServers":[], } } responses: 200: description: > A JSON object containing the AAA config is returned. body: application/json: type: authGet example: { "auth" : { "tacaacsPassword": "", "tacacsAuthenticationServers":[], "ldapBaseDN": "", "ldapUsernameAttribute": "", "ldapBindPassword": "", "ldapIgnoreReferrals": false, "ldapAuthenticationServers":[], "mode" : "radius", "policy" : "remotelocal", "radiusAuthenticationServers" : [ { "id" : "auth_radius_authenticationServers-1", "port": 1812, "hostname" : "192.168.250.2" } ], "radiusAccountingServers" : [ { "id" : "auth_radius_accountingServers-1", "port": 1813, "hostname" : "192.168.250.2" } ] } } /users: description: Retrieve and update user information. type: base-type get: description: Retrieve a list of users. responses: 200: description: A JSON object containing Users Config is returned. body: application/json: type: getUserListResponse example: { "users": [ { "username": "root", "description": "System wide SuperUser account", "enabled": true, "id": "users-1", "no_password": false, "ssh_password_enabled": true, "hashed_password": "$5$vqpQsIj./5/2OOBo$tTUYAJaEqbZYf4aipKicPF5bpkkGSEqtBy3t4dylp0/", "rights": { "delete": true, "modify": true }, "groups": ["groups-1"], "groupNames": ["g1"] }, { "username": "tu0", "description": "", "enabled": true, "id": "users-2", "no_password": false, "ssh_password_enabled": true, "hashed_password": "$5$vqpQsIj./5/2OOBo$tTUYAJaEqbZYf4aipKicPF5bpkkGSEqtBy3t4dylp0/", "rights": { "delete": true, "modify": true }, "groups": ["groups-1"], "groupNames": ["g1"] } ], meta: { total_pages: "1" } } put: description: Replace current user list with a new one. Used by Lighthouse Template push body: application/json: type: putUsers example: { "users":[ { "username": "user1", "description": "An admin user", "password": "default", "groups": ["g1", "g2", "g3"] }, { "username": "user2", "description": "Another user", "password": "default", "groups": ["g1"] } ] } responses: 200: description: A JSON object containing Users Config is returned. body: application/json: type: getUserListResponse example: { "users": [ { "username": "root", "enabled": true, "id": "users-1", "no_password": false, "ssh_password_enabled": true, "hashed_password": "$5$vqpQsIj./5/2OOBo$tTUYAJaEqbZYf4aipKicPF5bpkkGSEqtBy3t4dylp0/", "rights": { "delete": true, "modify": true }, "groups": ["groups-1", "groups-2"], "groupNames": ["g1","g2"] }, { "username": "user1", "enabled": true, "description": "An admin user", "id": "users-2", "no_password": false, "ssh_password_enabled": true, "hashed_password": "$5$697qmlbgz79fbNhl$Px.GuCYD1pEdUZUZR9aBKC14OlhQfYldn79tVluNCtD", "rights": { "delete": true, "modify": true }, "groups": ["groups-1", "groups-2", "groups-3"], "groupNames": ["g1","g2", "g3"] }, { "username": "user2", "enabled": true, "description": "Another user", "id": "users-3", "no_password": false, "ssh_password_enabled": true, "hashed_password": "$5$697qmlbgz79fbNhl$Px.GuCYD1pEdUZUZR9aBKC14OlhQfYldn79tVluNCtD", "rights": { "delete": true, "modify": true }, "groups": ["groups-1"], "groupNames": ["g1"] } ], meta: { total_pages: "1" } } 400: description: Failed to initiate user creation due to error in post body. body: application/json: type: errorString example: { "error": "Failed to parse request data" } post: description: Create a new User data in the config. body: application/json: type: setUser example: { "user": { "username": "tu1", "description": "testupdated", "enabled": true, "no_password": true, "groups": ["groups-2"] } } responses: 200: body: application/json: type: getUserResponse example: { "user": { "username": "tu1", "description": "testupdated", "enabled": true, "id": "users-5", "no_password": true, "ssh_password_enabled": true, "hashed_password": "$5$vqpQsIj./5/2OOBo$tTUYAJaEqbZYf4aipKicPF5bpkkGSEqtBy3t4dylp0/", "rights": { "delete": true, "modify": true }, "groups": ["groups-2"], "groupNames": ["g2"] } } 400: description: Failed to initiate user creation due to error in post body. body: application/json: example: { "error": [ { type: 2, "code": 12, "text": "Element is below the minimum allowed length of 1 character(s)", "args": { "min": "1", "uuid": "{60e2b0a-aafa-11e6-aca7-cb7fd0646002" }, "level": 1 }, { type: 1, "code": 33, "text": "Push command failed", "args": {}, "level": 1 } ] } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } /{user-id}: type: base-type # User.get get: displayName: getUser description: Retrieve the User information by ID. responses: 200: description: User exists body: application/json: type: getUserResponse example: { "user": { "username": "tu0", "description": "", "enabled": true, "id": "users-2", "no_password": false, "ssh_password_enabled": true, "hashed_password": "$5$vqpQsIj./5/2OOBo$tTUYAJaEqbZYf4aipKicPF5bpkkGSEqtBy3t4dylp0/", "rights": { "delete": true, "modify": true }, "groups": ["groups-1"], "groupNames": ["g1"] } } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: User does not exist. User Not Found. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users-2'", "args": { "uuid": "users-2" }, "level": 1 } ] } put: description: Update a User data in the config. body: application/json: type: setUser example: { "user": { "username": "tu1", "description": "testupdated", "enabled": true, "no_password": true, "ssh_password_enabled": true, "groups": [ "groups-2" ], } } responses: 200: description: User has been Updated. body: application/json: type: getUserResponse example: { "user": { "username": "tu1", "description": "testupdated", "enabled": true, "no_password": true, "ssh_password_enabled": true, "hashed_password": "$5$vqpQsIj./5/2OOBo$tTUYAJaEqbZYf4aipKicPF5bpkkGSEqtBy3t4dylp0/", "id": "users-5", "rights": { "delete": true, "modify": true }, "groups": ["groups-2"], "groupNames": ["g2"] } } 400: description: Invalid request body: application/json: example: { "error": [ { type: 4, "code": 39, "text": "Invalid request body", "args": {}, "level": 1 } ] } delete: displayName: deleteUser description: Delete a User responses: 200: description: User deleted 404: description: User did not exist body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users-2'", "args": { "uuid": "users-2" }, "level": 1 } ] } /ssh: type: base-type /authorized_keys: type: base-type get: description: Retrieve ssh authorized keys for a user responses: 200: body: application/json: type: userSSHAuthorizedKeys examples: example1: description: User with 2 keys value: { "authorized_keys": [ { id: "users_ssh_authorized_keys-1", key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTRO6c/1JnaA/Mi3MKONqQJUe75rZC36Z0tH+BefpR2li3F/x7TWQnW0aBSA4y7bGOxS5B+nFd86m6+QWqZMxqIpraG11KKVh2c+ElIliVvPbpN7cL9QKbzDZPCn5TZ28znHDuUSzc7Kt0+33On+7HkMhapKiXkA2ardK89DlpKbE4mSiIZoWG0zepyWsXa86fiKTORqEN8FhRtxnBMcl+WODjQfuBzPNr/zYv75eLaZ0LwUOz6/xm8RkwEhd/kF1ntrXYrwOqhFsR7g0cfqQ5T9vLcUXqe+VDvD16KBkooSL92OTxC907F7HPk7XvQaY4bEWK7ca/vbVhsVzdDhbF /home/lincolnr/.ssh/id_rsa\n" }, { id: "users_ssh_authorized_keys-2", key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDcsp/AQJKLsinT822ZXAnyXpSykeRXPlOvvOH3zi7QkYLz4+VBbTqJO/R2AJp8Cd0MrGMwuzzbwM25bAb7mesni+RRUAcNPqDD8/z8PKKKRzU1aKRqi/Za3FDRxPAOPJ/Wy1F1lGG6BSKe3gH9QHkPpy5ZPkDcs0S9+qoUYwNCAaB2tcK1jp/L6RXuJ3yLhRBIMpYicRwYcXDOX7QFt4BhnKMrR1ufcU08CGRLYLxnsd2RuiPn2jAz8OHJN7GUvrQ6VK+k47vEj0YLBuP27ZbFKwAJd3dhdezlhjlDDGrVrrXZgwxR+LeOuTnkqUVHOXkYVuiWQZqGS/hC76wJEt2xHinW5+4GuN69qBeY//jCYT+DHe9qJ0MEB5xNjVoWXxb9C7Pc1+/3y+p84X2Oa2nYJm3Vsn8u/S2Mbu1epf16i2qnLEInXkbBF/3T06NZAR+8in51MYE+kQkWq7dlkX20b5l28Ugu8VYYrcxxg0AREfqaL5FbyPS1OHaEb5zvabN23JTPpG8LBnXSjNu8AIpbfM8PaXT+7c5nSSQ+y0G1kZsP9MberstvExJOOYl8eviShb41RuApZL3ik/gY1pZKhBNQbx7eD84q1f2cXtyAw554WWrnM4BlFZB86/M7rrX+GkHRbgv57dc/j5pID08MZ5w/52Tj9KpApYKcQkNFSQ== root@root-1" } ] } example2: description: User with no keys value: { "authorized_keys": [] } post: description: Add an SSH key for a user body: application/json: type: userSSHAuthorizedKeyPost example: { "authorized_key": { "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTRO6c/1JnaA/Mi3MKONqQJUe75rZC36Z0tH+BefpR2li3F/x7TWQnW0aBSA4y7bGOxS5B+nFd86m6+QWqZMxqIpraG11KKVh2c+ElIliVvPbpN7cL9QKbzDZPCn5TZ28znHDuUSzc7Kt0+33On+7HkMhapKiXkA2ardK89DlpKbE4mSiIZoWG0zepyWsXa86fiKTORqEN8FhRtxnBMcl+WODjQfuBzPNr/zYv75eLaZ0LwUOz6/xm8RkwEhd/kF1ntrXYrwOqhFsR7g0cfqQ5T9vLcUXqe+VDvD16KBkooSL92OTxC907F7HPk7XvQaY4bEWK7ca/vbVhsVzdDhbF test" } } responses: 200: body: application/json: type: userSSHAuthorizedKeyGet example: { "authorized_key": { "id": "users_ssh_authorized_keys-3", "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTRO6c/1JnaA/Mi3MKONqQJUe75rZC36Z0tH+BefpR2li3F/x7TWQnW0aBSA4y7bGOxS5B+nFd86m6+QWqZMxqIpraG11KKVh2c+ElIliVvPbpN7cL9QKbzDZPCn5TZ28znHDuUSzc7Kt0+33On+7HkMhapKiXkA2ardK89DlpKbE4mSiIZoWG0zepyWsXa86fiKTORqEN8FhRtxnBMcl+WODjQfuBzPNr/zYv75eLaZ0LwUOz6/xm8RkwEhd/kF1ntrXYrwOqhFsR7g0cfqQ5T9vLcUXqe+VDvD16KBkooSL92OTxC907F7HPk7XvQaY4bEWK7ca/vbVhsVzdDhbF test" } } /{key-id}: type: base-type delete: description: Delete an SSH key for a user. responses: 204: description: SSH key deleted. 403: description: Failed due to not having permission to delete key. body: application/json: example: { "error": [ { "type": 7, "code": 47, "text": "Permission denied", "args": {}, "level": 1 } ] } 404: description: SSH key does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users_ssh_authorized_keys-9'", "args": { "uuid": "users_ssh_authorized_keys-9" }, "level": 1 } ] } /groups: description: Retrieve or update group information. type: base-type get: description: Retrieve a list of groups. # Group.getList responses: 200: description: A JSON object containing Groups config is returned. body: application/json: type: getGroupListResponse example: { "groups": [ { "id": "groups-1", "enabled": true, "groupname": "usergrp", "mode": "scoped", "role": "ConsoleUser", "description": "The ConsoleUser group", "members": ["users-1", "users-2"], "ports": ["ports-1", "ports-2", "ports-3"], "rights": { "delete": true, "modify": false} }, { "id": "groups-2", "enabled": true, "groupname": "admin", "mode": "global", "role": "Administrator", "description": "Administrator", "members": ["users-1", "users-2"], "rights": { "delete": true, "modify": true } } ], meta: { total_pages: "1" } } put: description: Replace current groups list with a new one. Used by Lighthouse Template push body: application/json: type: putGroups example: { "groups": [ { "name": "group1", "description": "an admin group", "roles": [ "admin" ], "ports":[ ] },{ "name": "group2", "description": "an unrestricted consoleUser", "roles": [ "all_ports_user", "ConsoleUser" ], "ports":[ ] }, { "name": "group1", "description": "a restricted consoleUser", "roles": [ "basic_webui_user", "ConsoleUser" ], "ports":[ true, false, true, true, false ] } ] } responses: 200: description: A JSON object containing Groups Config is returned. body: application/json: type: getGroupListResponse example: { "groups": [ { "enabled": true, "id": "groups-1", "groupname": "usergrp", "description": "The consoleUser group", "mode": "scoped", "role": "consoleUser", "members": ["users-1", "users-2"], "ports": ["ports-1", "ports-2", "ports-3"], "rights": { "delete": true, "modify": true } }, { "enabled": true, "id": "groups-2", "groupname": "admin", "description": "Administrator", "mode": "global", "role": "admin", "members": ["root", "users-2"], "rights": { "delete": true, "modify": true } } ], meta: { total_pages: "1" } } 400: description: Failed to initiate user creation due to error in post body. body: application/json: type: errorString example: { "error": "Failed to parse request data" } post: # Group.create description: Create a new Group in the config. body: application/json: type: setGroup examples: group_for_admin: { "group": { "groupname": "local_admin", "enabled": true, "mode": "global", "role": "Administrator", } } group_for_users: { "group": { "groupname": "my_group", "enabled": true, "mode": "scoped", "role": "ConsoleUser", "ports": ["ports-1", "ports-2", "ports-3"], } } responses: 201: body: application/json: type: getGroupResponse examples: admin_group: { "group": { "id": "groups-1", "enabled": true, "groupname": "local-admin", "mode": "global", "role": "Administrator", "members": [], "ports": [], "rights": { "delete": true, "modify": true } } } ConsoleUser_group: { "group": { "id": "groups-3", "enabled": true, "groupname": "my_group", "mode": "scoped", "role": "ConsoleUser", "description": "Group for ConsoleUser", "members": [], "ports": ["ports-1", "ports-2", "ports-3"], "rights": { "delete": true, "modify": false} } } 400: description: Failed to initiate group creation due to error in post body. body: application/json: example: { "error": [ { "type": 2, "code": 26, "level": 1, "text": "Duplicate 'groupname' fields with value 'netgrp'", "args": { "value": "netgrp", "uuid": "root-1-@groups", "field": "groupname" } }, { "type": 1, "code": 33, "level": 1, "text": "Push command failed", "args": {} } ] } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { "type": 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } /{id}: # Group.get type: base-type get: displayName: getGroupResponse description: Retrieve the Group information by ID. responses: 200: description: Group exists body: application/json: type: getGroupResponse example: { "group": { "id": "groups-6", "enabled": true, "groupname": "netgrp2", "mode": "scoped", "role": "ConsoleUser", "members": ["users-1", "users-2"], "ports": ["ports-1", "ports-2", "ports-3"], "rights": { "delete": true, "modify": false} } } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { "type": 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Group does not exist. Group Not Found. body: application/json: example: { "error": [ { "type": 5, "code": 29, "text": "Could not find element with UUID 'groups-59'", "args": { "uuid": "groups-59" }, "level": 1 } ] } put: # Group.update description: Update a Group data in the config. body: application/json: type: setGroup example: { "group": { "enabled": true, "groupname": "netgrp2", "mode": "scoped", "role": "ConsoleUser", "description": "Group for ConsoleUser role", "ports": ["ports-1", "ports-2", "ports-3"] } } responses: 200: description: Group has been updated. body: application/json: type: getGroupResponse example: { "group": { "id": "groups-6", "enabled": true, "groupname": "netgrp2", "mode": "scoped", "role": "ConsoleUser", "description": "Group for ConsoleUser role", "members": ["users-1", "users-2"], "ports": ["ports-1", "ports-2", "ports-3"], "rights": { "delete": true, "modify": false} } } 400: description: Invalid request body: application/json: example: { "error": [ { "type": 4, "code": 39, "text": "Invalid request body", "args": {}, "level": 1 } ] } delete: displayName: deleteGroup description: Delete a Group responses: 204: description: Group deleted 404: description: Group did not exist body: application/json: example: { "error": [ { "type": 5, "code": 29, "text": "Could not find element with UUID 'groups-6'", "args": { "uuid": "groups-6" }, "level": 1 } ] } /scripts: type: base-type description: The scripts endpoint is used to upload and execute custom user scripts on the appliance and to retrieve the status of currently executing scripts post: description: Upload a shell script to be executed on the node body: multipart/form-data: properties: script_metadata: description: JSON object containing script_timeout in minutes and the script_checksum (SHA1). type: script_metadata file: description: The file to be uploaded. type: file responses: 400: description: Invalid request body: application/json: type: object example: { "error": "Invalid script metadata" } 200: description: Successful request body: application/json: type: script_info example: { "info": "Script execution started successfully", "execution_id": 23 } get: description: Retrieve the status of a script executing on the node, as in GET /scripts?execution_id={id}, where id is the value for execution_id returned in the 200 response to the POST /scripts request. queryParameters: execution_id: type: string description: The execution_id returned from a /scripts POST request responses: 200: description: Successful request body: application/json: type: script_execution_status example: { "script_status": "in_progress" } 400: description: Invalid request body: application/json: type: object example: { "error": "Script execution ID not provided" } 500: description: Unexpected error body: application/json: example: { "error": "Script exit code not found" } /firewall: description: > Firewall endpoints are related to configuring and accessing information about the firewall running on the appliance. /services: type: base-type description: > Collection of custom services defined for the appliance's firewall. A service is a named grouping of one or more TCP or UDP ports for a particular networking protocol. For example, the 'https' service refers to TCP port 443. The appliance includes many predefined services for common protocols (see /firewall/predefined_services). This collection contains only custom services which have been defined by the administrator. get: description: Retrieve a list of custom services defined for the appliance. responses: 200: description: The list of custom services. body: application/json: type: getFirewallServicesListResponse example: { "firewall_services": [ { "id": "firewall-services-0", "name": "http", "label": "HTTP", "ports": [ { "protocol": "tcp", "port": 80 } ] }, { "id": "firewall-services-1", "name": "https", "label": "HTTPS", "ports": [ { "protocol": "tcp", "port": 443 } ] } ], meta: { total_pages: "1" } } 400: description: Invalid request, missing or incorrect page/per_page body: application/json: type: error example: { "error": [ { type: 4, "code": 39, "level": 1, "text": "Invalid request body", "args": {}, } ] } post: description: Create a new custom service in the config. body: application/json: type: setFirewallService example: { "firewall_service": { "name": "https", "label": "HTTPS", "ports": [ { "protocol": "tcp", "port": 443 } ] } } responses: 200: description: Service was added. body: application/json: type: getFirewallServiceResponse example: { "firewall_service": { "id": "firewall-services-1", "name": "https", "label": "HTTPS", "ports": [ { "protocol": "tcp", "port": 443 } ] } } 400: description: Failed due to error in post body. body: application/json: example: { "error": [ { type: 2, "code": 12, "text": "Element is below the minimum allowed length of 1 character(s)", "args": { "min": "1", "uuid": "{60e2b0a-aafa-11e6-aca7-cb7fd0646002" }, "level": 1 }, { type: 1, "code": 33, "text": "Push command failed", "args": {}, "level": 1 } ] } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } /{id}: type: base-type get: description: Retrieve the custom service by ID. responses: 200: description: Service exists. body: application/json: type: getFirewallServiceResponse example: { "firewall_service": { "id": "firewall-services-1", "name": "https", "label": "HTTPS", "ports": [ { "protocol": "tcp", "port": 443 } ] } } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Service does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users-2'", "args": { "uuid": "users-2" }, "level": 1 } ] } put: description: Update a service in the config. body: application/json: type: setFirewallService example: { "firewall_service": { "name": "https", "label": "HTTPS", "ports": [ { "protocol": "tcp", "port": 443 } ] } } responses: 200: description: Service has been updated. body: application/json: type: getFirewallServiceResponse example: { "firewall_service": { "id": "firewall-services-1", "name": "https", "label": "HTTPS", "ports": [ { "protocol": "tcp", "port": 443 } ] } } 400: description: Invalid request body: application/json: example: { "error": [ { type: 4, "code": 39, "text": "Invalid request body", "args": {}, "level": 1 } ] } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Service does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users-2'", "args": { "uuid": "users-2" }, "level": 1 } ] } delete: description: Delete a service. responses: 204: description: Service deleted. 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Service does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users-2'", "args": { "uuid": "users-2" }, "level": 1 } ] } /zones: type: base-type description: > Collection of zones defined for the appliance's firewall. A zone includes 1 or more interfaces. get: description: Retrieve a list of zones defined for the appliance. responses: 200: description: The list of zones. body: application/json: type: getFirewallZonesListResponse example: { "firewall_zones": [ { "id": "firewall-zones-0", "name": "lan", "label": "LAN", "description": "Local Network", "physifs": [ "system-net-physifs-0" ], "permit_all_traffic": false, "masquerade": false, "permitted_services": ["telnet", "https", "http"], "port_forwarding_rules": [ { protocol: "tcp", from_port: "33", to_port: 44 } ], "custom_rules": [ { rule_content: "rule family='ipv4' source address='192.168.67.101/32' service name='telnet' accept", description: "allow rule"} ] }, { "id": "firewall-zones-1", "name": "lan2", "label": "LAN 2", "description": "Backup Network", "physifs": [ "system-net-physifs-1" ], "permit_all_traffic": false, "masquerade": false, "permitted_services": [], "port_forwarding_rules": [], "custom_rules": [] } ], meta: { total_pages: "1" } } 400: description: Invalid request, missing or incorrect page/per_page body: application/json: type: error example: { "error": [ { type: 4, "code": 39, "level": 1, "text": "Invalid request body", "args": {}, } ] } post: description: Create a new zone in the config. body: application/json: type: setFirewallZone example: { "firewall_zone": { "name": "lan", "label": "LAN", "description": "Local Network", "physifs": [ "system-net-physifs-0" ], "permit_all_traffic": false, "masquerade": false, "permitted_services": ["https", "ssh"] } } responses: 200: description: Zone was added. body: application/json: type: getFirewallZoneResponse example: { "firewall_zone": { "id": "firewall-zones-0", "name": "lan", "label": "LAN", "description": "Local Network", "physifs": [ "system-net-physifs-0" ], "permit_all_traffic": false, "masquerade": false, "permitted_services": ["https", "ssh"], "port_forwarding_rules": [ { protocol: "tcp", from_port: "33", to_port: 44 } ], "custom_rules": [] } } 400: description: Failed due to error in post body. body: application/json: example: { "error": [ { type: 2, "code": 12, "text": "Element is below the minimum allowed length of 1 character(s)", "args": { "min": "1", "uuid": "{60e2b0a-aafa-11e6-aca7-cb7fd0646002" }, "level": 1 }, { type: 1, "code": 33, "text": "Push command failed", "args": {}, "level": 1 } ] } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } /{id}: type: base-type get: description: Retrieve the zone by ID. responses: 200: description: Zone exists. body: application/json: type: getFirewallZoneResponse example: { "firewall_zone": { "id": "firewall-zones-0", "name": "lan", "label": "LAN", "description": "Local Network", "physifs": [ "system-net-physifs-0" ], "permit_all_traffic": false, "masquerade": false, "permitted_services": ["telnet", "https", "http"], "port_forwarding_rules": [ { protocol: "tcp", from_port: "33", to_port: 44 } ], "custom_rules": [] } } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Zone does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users-2'", "args": { "uuid": "users-2" }, "level": 1 } ] } put: description: Update a zone in the config. body: application/json: type: setFirewallZone example: { "firewall_zone": { "name": "lan", "label": "LAN", "description": "Local Network", "physifs": [ "system-net-physifs-0" ], "permit_all_traffic": false, "masquerade": false, "permitted_services": ["https", "ssh"] } } responses: 200: description: Zone has been updated. body: application/json: type: getFirewallZoneResponse example: { "firewall_zone": { "id": "firewall-zones-1", "name": "lan2", "label": "LAN 2", "description": "Backup Network", "physifs": [ "system-net-physifs-1" ], "permit_all_traffic": true, "masquerade": true, "permitted_services": ["https", "ssh"], "port_forwarding_rules": [ { protocol: "tcp", from_port: "33", to_port: 44 } ], "custom_rules": [] } } 400: description: Invalid request body: application/json: example: { "error": [ { type: 4, "code": 39, "text": "Invalid request body", "args": {}, "level": 1 } ] } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Zone does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users-2'", "args": { "uuid": "users-2" }, "level": 1 } ] } delete: description: Delete a zone. responses: 204: description: Zone deleted. 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Zone does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users-2'", "args": { "uuid": "users-2" }, "level": 1 } ] } /rules: type: base-type description: > Collection of rules defined for the appliance's firewall. A rule maps a service to a zone. get: description: Retrieve a list of rules defined for the appliance. responses: 200: description: The list of rules. body: application/json: type: getFirewallRulesListResponse example: { "firewall_rules": [ { "id": "firewall-rules-0", "service": "http", "zone": "firewall-zones-0" }, { "id": "firewall-rules-1", "service": "https", "zone": "firewall-zones-0" } ], meta: { total_pages: "1" } } 400: description: Invalid request, missing or incorrect page/per_page body: application/json: type: error example: { "error": [ { type: 4, "code": 39, "level": 1, "text": "Invalid request body", "args": {}, } ] } post: description: Create a new rule in the config. body: application/json: type: setFirewallRule example: { "firewall_rule": { "service": "https", "zone": "firewall-zones-0" } } responses: 200: description: Rule was added. body: application/json: type: getFirewallRuleResponse example: { "firewall_rule": { "id": "firewall-rules-1", "service": "https", "zone": "firewall-zones-0" } } 400: description: Failed due to error in post body. body: application/json: example: { "error": [ { type: 2, "code": 12, "text": "Element is below the minimum allowed length of 1 character(s)", "args": { "min": "1", "uuid": "{60e2b0a-aafa-11e6-aca7-cb7fd0646002" }, "level": 1 }, { type: 1, "code": 33, "text": "Push command failed", "args": {}, "level": 1 } ] } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } delete: description: Bulk delete a list of rules defined for the appliance. body: application/json: type: bulkDeleteFirewallRuleList example: { "firewall_rules": [ "firewall_rules-1", "firewall_rules-5", ] } responses: 204: description: All rules were deleted successfully. 400: description: Invalid request, missing or incorrect page/per_page body: application/json: type: error example: { "error": [ { type: 4, "code": 39, "level": 1, "text": "Invalid request body", "args": {}, } ] } 404: description: Rule(s) do not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'firewall_rules-5'", "args": { "uuid": "firewall_rules-5" }, "level": 1 } ] } /{id}: type: base-type get: description: Retrieve the rule by ID. responses: 200: description: Rule exists. body: application/json: type: getFirewallRuleResponse example: { "firewall_rule": { "id": "firewall-rules-1", "service": "https", "zone": "firewall-zones-0" } } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Rule does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users-2'", "args": { "uuid": "users-2" }, "level": 1 } ] } put: description: Update a rule in the config. body: application/json: type: setFirewallRule example: { "firewall_rule": { "service": "https", "zone": "firewall-zones-0" } } responses: 200: description: Rule has been updated. body: application/json: type: getFirewallRuleResponse example: { "firewall_rule": { "id": "firewall-rules-1", "service": "https", "zone": "firewall-zones-0" } } 400: description: Invalid request body: application/json: example: { "error": [ { type: 4, "code": 39, "text": "Invalid request body", "args": {}, "level": 1 } ] } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Rule does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users-2'", "args": { "uuid": "users-2" }, "level": 1 } ] } delete: description: Delete a rule. responses: 204: description: Rule deleted. 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Rule does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'users-2'", "args": { "uuid": "users-2" }, "level": 1 } ] } /predefined_services: type: base-type description: > Collection of predefined services defined for the appliance's firewall. A service is a named grouping of one or more TCP or UDP ports for a particular networking protocol. For example, the 'https' service refers to TCP port 443. This collection contains predefined services for common protocols and doesn't include the services added by the administrator. get: description: Retrieve a list of predefined services defined for the appliance. responses: 200: description: The list of predefined services. body: application/json: type: getFirewallPredefinedServicesListResponse example: { "predefined_firewall_services": [ { "name": "http", "label": "HTTP", "ports": [ { "protocol": "tcp", "port": "80" } ] }, { "name": "https", "label": "HTTPS", "ports": [ { "protocol": "tcp", "port": "443" } ] } ], "meta": { "total_pages": "1" } } /policies: type: base-type description: > Collection of policies defined for the appliance's firewall. A policy specifies which zones traffic is allowed to route between. get: description: Retrieve a list of policies defined for the appliance. responses: 200: description: The list of policies. body: application/json: type: getFirewallPoliciesListResponse example: { "firewall_policies": [ { "id": "firewall_policies-1", "name": "lan_to_wan", "description": "LAN --> WAN", "ingress_zones": [ "firewall_zones-1" ], "egress_zones": [ "firewall_zones-2" ] }, { "id": "firewall_policies-2", "name": "wan_to_lan", "ingress_zones": [ "firewall_zones-2" ], "egress_zones": [ "firewall_zones-1" ] } ], meta: { total_pages: "1" } } 400: description: Invalid request, missing or incorrect page/per_page body: application/json: type: error example: { "error": [ { type: 4, "code": 39, "level": 1, "text": "Invalid request body", "args": {}, } ] } post: description: Create a new policy in the config. body: application/json: type: setFirewallPolicy example: { "firewall_policy": { "name": "lan_to_wan", "description": "LAN --> WAN", "ingress_zones": [ "firewall_zones-1" ], "egress_zones": [ "firewall_zones-2", "firewall_zones-3" ] } } responses: 201: description: Policy was added. body: application/json: type: getFirewallPolicyResponse example: { "firewall_policy": { "id": "firewall_policies-1", "name": "lan_to_wan", "description": "LAN --> WAN", "ingress_zones": [ "firewall_zones-1" ], "egress_zones": [ "firewall_zones-2", "firewall_zones-3" ] } } 400: description: Failed due to error in post body. body: application/json: example: { "error": [ { type: 2, "code": 12, "text": "Element is below the minimum allowed length of 1 character(s)", "args": { "min": "1", "uuid": "{60e2b0a-aafa-11e6-aca7-cb7fd0646002" }, "level": 1 }, { type: 1, "code": 33, "text": "Push command failed", "args": {}, "level": 1 } ] } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } /{id}: type: base-type get: description: Retrieve the policy by ID. responses: 200: description: Policy exists. body: application/json: type: getFirewallPolicyResponse example: { "firewall_policy": { "id": "firewall_policies-1", "name": "lan_to_wan", "description": "LAN --> WAN", "ingress_zones": [ "firewall_zones-1" ], "egress_zones": [ "firewall_zones-2" ] } } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Policy does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'firewall_policies-2'", "args": { "uuid": "firewall_policies-2" }, "level": 1 } ] } put: description: Update a policy in the config. body: application/json: type: setFirewallPolicy example: { "firewall_policy": { "name": "lan_to_wan", "description": "LAN --> WAN", "ingress_zones": [ "firewall_zones-1" ], "egress_zones": [ "firewall_zones-2" ] } } responses: 200: description: Policy has been updated. body: application/json: type: getFirewallPolicyResponse example: { "firewall_policy": { "id": "firewall_policies-1", "name": "lan_to_wan", "description": "LAN --> WAN", "ingress_zones": [ "firewall_zones-1" ], "egress_zones": [ "firewall_zones-2" ] } } 400: description: Invalid request body: application/json: example: { "error": [ { type: 4, "code": 39, "text": "Invalid request body", "args": {}, "level": 1 } ] } 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Policy does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'firewall_policies-2'", "args": { "uuid": "firewall_policies-2" }, "level": 1 } ] } delete: description: Delete a policy. responses: 204: description: Policy deleted. 401: description: Authentication failed due to invalid session. body: application/json: example: { "error": [ { type: 7, "code": 42, "text": "Invalid session ID", "args": {}, "level": 1 } ] } 404: description: Policy does not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'firewall_policies-2'", "args": { "uuid": "firewall_policies-2" }, "level": 1 } ] } /cellfw: description: > The cellfw endpoints are related to checking, upgrading and scheduling upgrades for modem firmware. /info: type: base-type get: description: Retrieve modem version and related info responses: 200: body: application/json: type: cellFWInfo example: { "cellfw_info": { "firmware": "Model: EM7565\nBoot version: SWI9X50C_01.08.04.00\nAMSS version: SWI9X50C_01.08.04.00\n SKU ID: 1103520\nPackage ID: unknown\nCarrier ID: 1\nConfig version: 002.012_000", "operating_mode": "Mode: 'online'\nHW restricted: 'no'" } } /export: type: base-type description: > Retrieve system configuration for the Operations Manager. get: responses: 200: body: application/json: type: exportType /failover: type: base-type description: > Failover endpoint is to check failover status and retrieve / change failover settings. /settings: type: base-type description: > failover/settings endpoint is to check and update failover settings. get: description: Retrieve the current failover settings. responses: 200: description: > Returns the current failover settings.
body: application/json: type: failoverSettingsResponse example: { "failover_settings": { "enabled": true, "probe_physif": "net1", "probe_address": "8.8.8.8" } } put: description: Set the failover settings. body: application/json: type: failoverSettingsPut examples: example1: { "failover_settings": { "enabled": true, "probe_physif": "net1", "probe_address": "8.8.8.8" } } example2: { "failover_settings": { "enabled": false, "probe_physif": "net2", "probe_address": "192.168.0.1" } } responses: 200: description: Returns the current failover settings. body: application/json: type: failoverSettingsResponse examples: example1: { "failover_settings": { "enabled": true, "probe_physif": "net1", "probe_address": "8.8.8.8" } } example2: { "failover_settings": { "enabled": false, "probe_physif": "net2", "probe_address": "192.168.0.1" } } /status: type: base-type description: > failover/status endpoint is to check current failover status. get: description: Retrieve the current failover status. responses: 200: description: > Returns the current failover settings.
body: application/json: type: failoverStatus example: { "failover_status": { "status": "failover_complete" } } /cellmodem: description: Retrieve information about the cell modem. type: base-type get: description: This endpoint is used to retrieve status data about the cellular modem in the device # CellModems.getCellModemInfo responses: 200: description: A JSON object containing cellmodem information. body: application/json: type: getCellModemInfo example: { "cellmodem": { "enabled": true, "device": "wwan0", "up": true, "signalStrength": 89, "signal_quality": 89, "rssi": -67, "technology": "lte, cdma", "modem_status": "connected", "failure_reason": "none", "ipv4_addresses": ["123.127.198.4"], "ipv6_addresses": ["fe80::69dc:654f:f1e5:ff12"], "failover": { "enabled": false, "dormant": false, "active": false }, "sims": { "active_sim": 2, "sim1": { "iccid": "89148000004743232368", "carrier": "Verizon Wireless", "apn": "VZWINTERNET", "ip_type": "ipv4v6", "username": "", "imsi": "", "state": "present", "last_update": 1598222515038, "signal_strength": 94 }, "sim2": { "iccid": "89014103278929156118", "carrier": "AT&T Wireless Inc", "apn": "i2gold", "ip_type": "ipv4v6", "username": "", "imsi": "310410892915611", "state": "present", "last_update": 1598222515038, "signal_strength": 93 } } } } 404: description: Cellular modem was not found. body: application/json: type: errorString example: { "error": "No Cellular Modem detected" } /sims: type: base-type description: > Cell modem SIM status get: description: Retrieve the current SIM status. responses: 200: description: > Returns the current SIM status. body: application/json: type: getCellModemSimInfo example: { "cellmodem_sims": [ { "id": "cellmodem-sim-1", "active": true, "slot": 1, "iccid": "89148000004743232368", "carrier": "Verizon Wireless", "apn": "VZWINTERNET", "ip_type": "ipv4v6", "username": "", "imsi": "", "state": "present", "last_update": 1598222515038, "signal_strength": 94 }, { "id": "cellmodem-sim-2", "active": false, "slot": 2, "iccid": "89014103278929156118", "carrier": "AT&T Wireless Inc", "apn": "i2gold", "ip_type": "ipv4v6", "username": "", "imsi": "310410892915611", "state": "present", "last_update": 1598222515038, "signal_strength": 93 } ] } 404: description: Cellular modem was not found. body: application/json: type: errorString example: { "error": "No Cellular Modem detected" } /ipsec_tunnels: description: > Read and manipulate the IPsec tunnels on the Operations Manager appliance. type: base-type # ipsec_tunnels.getTunnelList get: description: > Get a list of the IPsec tunnels. displayName: getTunnels responses: 200: body: application/json: type: getTunnelList example: { "ipsec_tunnels": [ { id: "0", name: "remote-host-tunnel", enabled: true, initiate: false, version: "IKEv2", proposal: "default-pfs", local_id: "", remote_id: "", local_address: "192.168.126.77", remote_address: "192.168.121.5", local_subnet: "", remote_subnet: "", auth_mode: "psk", shared_secret: "default", runtime_status: { established: false } }, { id: "1", name: "remote-site-tunnel", enabled: false, initiate: false, version: "IKEv2", proposal: "3des-sha-modp1024", local_id: "", remote_id: "", local_address: "", remote_address: "192.168.126.77", local_subnet: "", remote_subnet: "", auth_mode: "psk", shared_secret: "password2", runtime_status: { established: true } } ] } #ipsec_tunnels.post post: description: Add a new network tunnel to the Operations Manager appliance. body: application/json: type: putTunnelItem example: { "ipsec_tunnel": { name: "remote-host-tunnel", enabled: true, initiate: false, version: "IKEv1", local_address: "192.168.126.77", remote_address: "192.168.121.5", shared_secret: "default" } } responses: 200: description: The tunnel \{id} settings was updated. body: application/json: type: getTunnelListItem example: { "ipsec_tunnel": { id: "0", name: "remote-host-tunnel", enabled: true, initiate: false, version: "IKEv1", proposal: "default", local_id: "", remote_id: "", local_address: "192.168.126.77", remote_address: "192.168.121.5", local_subnet: "", remote_subnet: "", auth_mode: "psk", shared_secret: "default", runtime_status: { established: false } } } 400: description: > Invalid request: body is not json or does not conform to required json schema. Incomplete data: tunnel id parameter missing. 404: description: > Tunnel {id} does not exist. Attempted to change read only fields. Attempted to change unknown fields. /{id}: type: base-type # ipsec_tunnel.get get: description: > Get the configuration of an IPsec tunnel on the Operations Manager appliance responses: 200: body: application/json: type: getTunnelListItem example: { "ipsec_tunnel": { id: "0", name: "remote-host-tunnel", enabled: true, initiate: false, version: "IKEv1-aggressive", proposal: "3des-md5-modp768", local_id: "me@test.net", remote_id: "", local_address: "192.168.126.77", remote_address: "192.168.121.5", local_subnet: "", remote_subnet: "", auth_mode: "psk", shared_secret: "default", runtime_status: { established: false } } } # ipsec_tunnel.put put: description: > Update settings for an IPsec tunnel on the Operations Manager appliance. body: application/json: type: putTunnelItem example: { "ipsec_tunnel": { name: "remote-host-tunnel", enabled: true, initiate: false, version: "IKEv1", local_address: "192.168.126.77", remote_address: "192.168.121.5", local_subnet: "", remote_subnet: "", shared_secret: "default" } } responses: 200: description: The tunnel settings were updated. body: application/json: type: getTunnelListItem example: { "ipsec_tunnel": { id: "0", name: "remote-host-tunnel", enabled: true, initiate: false, version: "IKEv1", proposal: "default", local_id: "", remote_id: "", local_address: "192.168.126.77", remote_address: "192.168.121.5", local_subnet: "", remote_subnet: "", auth_mode: "psk", shared_secret: "default", runtime_status: { established: false } } } 400: description: > Invalid request: body is not json or does not conform to required json schema. Incomplete data: tunnel id parameter missing. 404: description: > tunnel {id} does not exist. Attempted to change read only fields. Attempted to change unknown fields. #ipsec_tunnel.delete delete: displayName: deleteTunnel description: > Delete an IPsec tunnel on the Operations Manager appliance responses: 200: description: Tunnel deleted 404: description: Tunnel did not exist body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'system_net_ipsec-1'", "args": { "uuid": "system_net_ipsec-1" }, "level": 1 } ] } /pdus: type: base-type description: > Configure, monitor and control PDUs connected to the device. get: description: > Get a list of all configured PDUs. responses: 200: body: application/json: type: PDUList example: { "pdus": [ { "id": "pdus-1", "name": "ServerTech PDU", "driver": "servertech", "monitor": true, "method": "snmp", "outlet_count": 2, "outlets": [ { "id": "outlets-1", "number": 1, "name": "servertech outlet 1", "port": "ports-7", "status": "on", "status_timestamp": "2020-04-06 04:16:49.179388+00:00", "last_action": "on", "last_action_timestamp": "2020-04-06 04:15:09.149994+00:00", }, { "id": "outlets-2", "number": 2, "name": "servertech outlet 2", "port": "ports-8", "status": "off", "status_timestamp": "2020-04-06 04:16:49.179388+00:00", "last_action": "off", "last_action_timestamp": "2020-04-06 04:15:09.149994+00:00", }, ], "snmp": { "id": "snmp-1", "protocol": "UDP", "community": "secret", "auth_protocol": "SHA", "username": "michaelf", "engine_id": "0x80001f8803555000000000", "version": v3, "privacy_protocol": "DES", "security_level": "noAuthNoPriv", "address": "snmp.example.com", "port": 167, } }, { "id": "pdus-2", "name": "apc PDU", "driver": "apc", "monitor": true, "method": "powerman", "outlet_count": 2, "outlets": [ { "id": "outlets-3", "number": 1, "name": "apc outlet 1", "port": "ports-8", "status": "on", "status_timestamp": "2020-04-06 04:16:49.179388+00:00", "last_action": "on", "last_action_timestamp": "2020-04-06 04:15:09.149994+00:00", }, { "id": "outlets-4", "number": 2, "name": "apc outlet 2", "port": "ports-9", "status": "off", "status_timestamp": "2020-04-06 04:16:49.179388+00:00", "last_action": "off", "last_action_timestamp": "2020-04-06 04:15:09.149994+00:00", }, ], "powerman": { "id": "powerman-1", "username": "admin", "password": "password", "port": "ports-1", } }, { "id": "pdus-2", "name": "shell PDU", "monitor": true, "driver": "shell", "method": "shell", "outlet_count": 2, "outlets": [ { "id": "outlets-5", "number": 1, "name": "shell outlet 1", "port": "ports-3", "status": "on", "status_timestamp": "2020-04-06 04:16:49.179388+00:00", "last_action": "on", "last_action_timestamp": "2020-04-06 04:15:09.149994+00:00", }, { "id": "outlets-4", "number": 2, "name": "shell outlet 2", "port": "ports-4", "status": "off", "status_timestamp": "2020-04-06 04:16:49.179388+00:00", "last_action": "off", "last_action_timestamp": "2020-04-06 04:15:09.149994+00:00", }, ], "shell": { "id": "shell-1", "username": "admin", "password": "password", "port": "ports-2", } }, ], } post: description: > Add a new PDU. body: application/json: type: setPDU example: { "pdu": { "name": "example", "driver": "apc_24_port_(ap7998)", "monitor": true, "method": "powerman", "powerman": { "id": "powerman-1", "username": "user1", "password": "password", "port": "port-1" } } } responses: 200: body: application/json: type: PDUId example: { "pdu": { "id": "pdus-1", "name": "example", "driver": "apc_24_port_(ap7998)", "monitor": true, "method": "powerman", "powerman": { "id": "powerman-1", "username": "user1", "password": "password", "port": "port-1" }, "outlets": [ { "id": "outlets-1", "number": 1, "name": "shell outlet 1", "port": "ports-3", "status": "on", "status_timestamp": "2020-04-06 04:16:49.179388+00:00", "last_action": "on", "last_action_timestamp": "2020-04-06 04:15:09.149994+00:00", }, { "id": "outlets-2", "number": 2, "name": "shell outlet 2", "port": "ports-4", "status": "off", "status_timestamp": "2020-04-06 04:16:49.179388+00:00", }, ] } } 400: description: > Invalid request: Body is not json or does not conform to required json schema. /{id}: description: get: description: > Get a PDU by id. responses: 200: body: application/json: type: PDUId example: { "pdu": { "id": "pdus-1", "name": "ServerTech PDU", "driver": "servertech", "monitor": true, "method": "snmp", "outlet_count": 2, "outlets": [ { "id": "outlets-1", "number": 1, "name": "servertech outlet 1", "port": "ports-7", "status": "on", "status_timestamp": "2020-04-06 04:16:49.179388+00:00", "last_action": "on", "last_action_timestamp": "2020-04-06 04:15:09.149994+00:00", }, { "id": "outlets-2", "number": 2, "name": "servertech outlet 2", "port": "ports-8", "status": "off", "status_timestamp": "2020-04-06 04:16:49.179388+00:00", "last_action": "off", "last_action_timestamp": "2020-04-06 04:15:09.149994+00:00", }, ], "snmp": { "id": "snmp-1", "protocol": "UDP", "community": "secret", "auth_protocol": "SHA", "username": "michaelf", "engine_id": "0x80001f8803555000000000", "version": v3, "privacy_protocol": "DES", "security_level": "noAuthNoPriv", "address": "snmp.example.com", "port": 167, }, }, } 404: description: > No PDU found with that ID. put: description: > Update an existing PDU. body: application/json: type: setPDU example: { "pdu": { "name": "example", "driver": "apc_24_port_(ap7998)", "monitor": true, "method": "powerman", "powerman": { "id": "powerman-1", "username": "user1", "password": "password", "port": "port-1" }, "outlets": [ { "name": "new name", "port": "ports-10", }, { "name": "change", "port": "ports-4", }, ], } } responses: 200: body: application/json: type: PDUId example: { "pdu": { "id": "pdu-1", "name": "example", "driver": "apc_24_port_(ap7998)", "monitor": true, "method": "powerman", "powerman": { "id": "powerman-1", "username": "user1", "password": "passwords", "port": "port-1" }, "outlets": [ { "id": "outlets-1", "number": 1, "name": shell outlet 1", "port": "ports-3", "status": "on", "status_timestamp": "2020-04-06 04:16:49.179388+00:00", }, { "id": "outlets-2", "number": 2, "name": shell outlet 2", "port": "ports-4", "status": "off", "status_timestamp": "2020-04-06 04:16:49.179388+00:00", }, ] } } 400: description: > Invalid request: Body is not json or does not conform to required json schema. Incomplete data: PDU id parameter missing. 404: description: PDU did not exist body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'pdu-1'", "args": { "uuid": "pdu-1" }, "level": 1 } ] } delete: description: > Delete a PDU. responses: 200: description: PDU deleted 404: description: PDU did not exist body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'pdu-1'", "args": { "uuid": "pdu-1" }, "level": 1 } ] } /auto_response: description: > Read and manipulate information pertaining to the Auto-Response system running on the Operations Manager appliance. /beacons: type: base-type # auto_response_beacons.getAutoResponseBeacons description: > Read and manipulate the Auto-Response beacons on the Operations Manager appliance. get: description: > Get a list of the Auto-Response Beacons. # displayName: getAutoResponseBeacon responses: 200: body: application/json: type: getAutoResponseBeaconListResponse example: { "beacons": [ { id: "0", name: "wtmp-beacon", description: "Description for the wtmp beacon", module: "wtmp", interval: 60, enable: true, wtmp: { login: true, logout: true }, actions: [], dependant_keys_any: [], dependant_keys_all: [] }, { id: "1", name: "custom-beacon", module: "custom_cmd", interval: 60, enable: true, custom_cmd: { shell_command: "/usr/bin/top -n 5 | grep ssh", timeout: 5 }, actions: [ { action: "auto_response_reactions-7", resolution_values: [ "trigger", "resolve" ] }, ], dependant_keys_any: [], dependant_keys_all: [] } ], meta: { total_pages: "1" } } 400: description: Invalid request, missing or incorrect page/per_page body: application/json: type: error example: { "error": [ { type: 4, "code": 39, "level": 1, "text": "Invalid request body", "args": {}, } ] } #auto_response_beacons.post post: description: Add a new Auto-Response beacon to the Operations Manager appliance. body: application/json: type: setAutoResponseBeacon example: { "auto_response_beacon": { name: "wtmp-beacon", description: "The description for this wtmp beacon", module: "wtmp", interval: 60, enable: true, wtmp: { login: true, logout: true }, actions: [ { action: "auto_response_reactions-7", resolution_values: [ "trigger", "resolve" ] }, ], dependant_keys_any: [], dependant_keys_all: [] } } responses: 200: description: The beacon was added. body: application/json: type: getAutoResponseBeaconResponse example: { "auto_response_beacon": { id: "0", name: "wtmp-beacon", description: "The description for this wtmp beacon", module: "wtmp", interval: 60, enable: true, wtmp: { login: true, logout: true }, actions: [], dependant_keys_any: [], dependant_keys_all: [] } } 400: description: > Invalid request: body is not json or does not conform to required json schema. Incomplete data: beacon id parameter missing. 404: description: > Beacon {id} does not exist. Attempted to change read only fields. Attempted to change unknown fields. delete: description: Bulk delete a list of beacons defined for the appliance. body: application/json: type: bulkDeleteAutoResponseBeaconList example: { "auto_response_beacon": [ "auto_response_beacon-1", "auto_response_beacon-5", ] } responses: 204: description: All beacons were deleted successfully. 400: description: Invalid request body: application/json: type: error example: { "error": [ { type: 4, "code": 39, "level": 1, "text": "Invalid request body", "args": {}, } ] } 404: description: Beacon(s) do not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'auto_response_beacon-5'", "args": { "uuid": "auto_response_beacon-5" }, "level": 1 } ] } /{id}: type: base-type # auto_response_beacon.get get: description: > Get the configuration of an Auto-Response beacon on the Operations Manager appliance responses: 200: body: application/json: type: getAutoResponseBeaconResponse example: { "auto_response_beacon": { id: "0", name: "wtmp-beacon", description: "The description for this wtmp beacon", module: "wtmp", interval: 60, enable: true, wtmp: { login: true, logout: true }, actions: [], dependant_keys_any: [], dependant_keys_all: [] } } # auto_response_beacon.put put: description: > Update settings for an Auto-Response beacon on the Operations Manager appliance. body: application/json: type: setAutoResponseBeacon example: { "auto_response_beacon": { name: "wtmp-beacon", description: "The description for this wtmp beacon", module: "wtmp", interval: 60, enable: true, wtmp: { login: true, logout: true }, actions: [], dependant_keys_any: [], dependant_keys_all: [] } } responses: 200: description: The beacon settings were updated. body: application/json: type: getAutoResponseBeaconResponse example: { "auto_response_beacon": { id: "0", name: "wtmp-beacon", description: "The description for this wtmp beacon", module: "wtmp", interval: 60, enable: true, wtmp: { login: true, logout: true }, actions: [], dependant_keys_any: [], dependant_keys_all: [] } } 400: description: > Invalid request: body is not json or does not conform to required json schema. Incomplete data: beacon id parameter missing. 404: description: > beacon {id} does not exist. Attempted to change read only fields. Attempted to change unknown fields. # auto_response_beacon.delete delete: displayName: deleteBeacon description: > Delete an Auto-Response beacon on the Operations Manager appliance responses: 200: description: Beacon deleted 404: description: Beacon did not exist body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'services_autoresponse_beacon-1'", "args": { "uuid": "services_autoresponse_beacon-1" }, "level": 1 } ] } /reactions: type: base-type # auto_response_reactions.getAutoResponseReactions description: > Read and manipulate the Auto-Response reactions on the Operations Manager appliance. get: description: > Get a list of the Auto-Response Reactions. # displayName: getAutoResponseReactions responses: 200: body: application/json: type: getAutoResponseReactionListResponse example: { "reactions": [ { id: "0", name: "slack-reaction", sub_type: "slack", slack: { channels: [ "#here", "#there" ], message: "Example test message", from_name: "me@here.com", api_key: "key123" } }, { id: "1", name: "cell_message-reaction", sub_type: "cell_message_react", cell_message_react: { phone_numbers: [ "15551234", "15554321" ], message: "Example SMS text" } } ], meta: { total_pages: "1" } } 400: description: Invalid request, missing or incorrect page/per_page body: application/json: type: error example: { "error": [ { type: 4, "code": 39, "level": 1, "text": "Invalid request body", "args": {}, } ] } #auto_response_reactions.post post: description: Add a new Auto-Response reaction to the Operations Manager appliance. body: application/json: type: setAutoResponseReaction example: { "auto_response_reaction": { name: "slack-reaction", sub_type: "slack", slack: { channels: [ "#here", "#there" ], message: "Example test message", from_name: "me@here.com", api_key: "key123" } } } responses: 200: description: The reaction was added. body: application/json: type: getAutoResponseReactionResponse example: { "auto_response_reaction": { id: "0", name: "slack-reaction", sub_type: "slack", slack: { channels: [ "#here", "#there" ], message: "Example test message", from_name: "me@here.com", api_key: "key123" } } } 400: description: > Invalid request: body is not json or does not conform to required json schema. Incomplete data: reaction id parameter missing. 404: description: > Reaction {id} does not exist. Attempted to change read only fields. Attempted to change unknown fields. delete: description: Bulk delete a list of reactions defined for the appliance. body: application/json: type: bulkDeleteAutoResponseReactionList example: { "auto_response_reaction": [ "auto_response_reaction-1", "auto_response_reaction-5", ] } responses: 204: description: All reactions were deleted successfully. 400: description: Invalid request body: application/json: type: error example: { "error": [ { type: 4, "code": 39, "level": 1, "text": "Invalid request body", "args": {}, } ] } 404: description: Reaction(s) do not exist. body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'auto_response_reaction-5'", "args": { "uuid": "auto_response_reaction-5" }, "level": 1 } ] } /{id}: type: base-type # reaction.get get: description: > Get the configuration of an Auto-Response reaction on the Operations Manager appliance responses: 200: body: application/json: type: getAutoResponseReactionResponse example: { "auto_response_reaction": { id: "0", name: "slack-reaction", sub_type: "slack", slack: { channels: [ "#here", "#there" ], message: "Example test message", from_name: "me@here.com", api_key: "key123" } } } # reaction.put put: description: > Update settings for an Auto-Response reaction on the Operations Manager appliance. body: application/json: type: setAutoResponseReaction example: { "auto_response_reaction": { name: "slack-reaction", sub_type: "slack", slack: { channels: [ "#here", "#there" ], message: "Example test message", from_name: "me@here.com", api_key: "key123" } } } responses: 200: description: The reaction settings were updated. body: application/json: type: getAutoResponseReactionResponse example: { "auto_response_reaction": { id: "0", name: "slack-reaction", sub_type: "slack", slack: { channels: [ "#here", "#there" ], message: "Example test message", from_name: "me@here.com", api_key: "key123" } } } 400: description: > Invalid request: body is not json or does not conform to required json schema. Incomplete data: reaction id parameter missing. 404: description: > reaction {id} does not exist. Attempted to change read only fields. Attempted to change unknown fields. #reaction.delete delete: displayName: deleteReaction description: > Delete an Auto-Response reaction on the Operations Manager appliance responses: 200: description: Reaction deleted 404: description: Reaction did not exist body: application/json: example: { "error": [ { type: 5, "code": 29, "text": "Could not find element with UUID 'services_autoresponse_reaction-1'", "args": { "uuid": "services_autoresponse_reaction-1" }, "level": 1 } ] } /status: type: base-type # auto_response.getAutoResponseStatus description: > Read the AutoResponse Status on the Operations Manager appliance. get: description: > Get the status of the Auto-Response Beacons. queryParameters: eventLines: description: The number of event lines to fetch - min 0. type: integer required: false default: 50 # displayName: getAutoResponseStatus responses: 200: body: application/json: type: getAutoResponseStatus example: { auto_response_status: { "beacons": [ { id: "0", name: "wtmp-beacon", module: "wtmp", trigger_count: 0, last_triggered: "", beacon_data: {}, events: [] }, { id: "1", name: "curl-beacon", module: "curl", trigger_count: 1, last_triggered: "2020-01-16T20:22:14.477327", beacon_data: { "cmd": [ "/usr/bin/curl", "--max-time", "3", "--request", "GET", "http://www.google.com" ], "exit_status": 0, "timeout": 5, "_stamp": "2020-01-16T20:22:14.477327", "id": "22161907057534", "result": "success" }, events: [ { "beacon_data": { "cmd": [ "/usr/bin/curl", "--max-time", "3", "--request", "GET", "http://www.google.com" ], "exit_status": 0, "timeout": 5, "_stamp": "2020-01-16T20:22:14.477327", "id": "22161907057534", "result": "success" }, "beacon_id": "auto_response_beacons-1", "timestamp": "2020-01-16T20:22:14.477327", "beacon_name": "curl-beacon" }, { "timestamp": "2020-01-16T20:22:14", "beacon_id": "auto_response_beacons-1", "reactor_id": "auto_response_reactions-1", "reactor_type": "custom_command", "reactor_name": "custom cmd reaction test", "beacon_tag": "salt/beacon/22481809000004/curl-beacon/", "beacon_name": "curl-beacon", "reactor_filename": "reactor_0_0.py" }, ], } ], } } 400: description: > Number of eventLines is not a positive number. /beacons: /{id}: type: base-type get: description: > Get the status of the Auto-Response Beacon queryParameters: eventLines: description: The number of event lines to fetch - min 0. type: integer required: false default: 50 responses: 200: body: application/json: type: getAutoResponseBeaconStatus example: { "auto_response_status": { id: "1", name: "curl-beacon", module: "curl", trigger_count: 1, last_triggered: "2020-01-16T20:22:14.477327", beacon_data: { "cmd": [ "/usr/bin/curl", "--max-time", "3", "--request", "GET", "http://www.google.com" ], "exit_status": 0, "timeout": 5, "_stamp": "2020-01-16T20:22:14.477327", "id": "22161907057534", "result": "success" }, events: [ { "beacon_data": { "cmd": [ "/usr/bin/curl", "--max-time", "3", "--request", "GET", "http://www.google.com" ], "exit_status": 0, "timeout": 5, "_stamp": "2020-01-16T20:22:14.477327", "id": "22161907057534", "result": "success" }, "beacon_id": "auto_response_beacons-1", "timestamp": "2020-01-16T20:22:14.477327", "beacon_name": "curl-beacon" }, { "timestamp": "2020-01-16T20:22:14", "beacon_id": "auto_response_beacons-1", "reactor_id": "auto_response_reactions-1", "reactor_type": "custom_command", "reactor_name": "custom cmd reaction test", "beacon_tag": "salt/beacon/22481809000004/curl-beacon/", "beacon_name": "curl-beacon", "reactor_filename": "reactor_0_0.py" }, ] } } 400: description: > Number of eventLines is not a positive number. 404: description: > beacon {id} does not exist. /beacon-modules: type: base-type # auto_response.getAutoResponseStatusBeaconModules description: > Read the AutoResponse Status of Beacon Modules on the Operations Manager appliance. get: description: > Get all the Beacon Modules and their resolution values that can be used to filter beacon events. # displayName: getAutoResponseStatusBeaconModules responses: 200: body: application/json: type: getAutoResponseStatusBeaconModules example: { "beacon-modules": [ { "module": "ping", "resolution_values": [ "trigger", "resolve" ] }, { "module": "cell_message", "resolution_values": [] }, { "module": "network", "resolution_values": [] }, { "module": "serial_signal", "resolution_values": [] }, { "module": "mem", "resolution_values": [] }, { "module": "cell_signal_strength", "resolution_values": [ "trigger", "resolve" ] }, { "module": "custom_cmd", "resolution_values": [ "trigger", "resolve" ] }, { "module": "serial_pattern", "resolution_values": [] }, { "module": "curl", "resolution_values": [ "trigger", "resolve" ] }, { "module": "cell_connection", "resolution_values": [] }, { "module": "serial_login", "resolution_values": [] }, { "module": "btmp", "resolution_values": [] }, { "module": "load", "resolution_values": [] }, { "module": "wtmp", "resolution_values": [] }, ] } /ip_passthrough: type: base-type description: IP Passthrough endpoints are for retrieving / changing IP Passthrough settings. get: description: Retrieve the current IP Passthrough settings. responses: 200: description: > Returns the current IP Passthrough settings.
body: application/json: type: ipPassthrough examples: example1: { "ip_passthrough": { "enabled": false, "passthrough_physif": "net1", "mac_address": None, "service_intercepts": { "https": { "port": None }, "ssh": { "port": None } }, } } example2: { "ip_passthrough": { "enabled": true, "passthrough_physif": "net2", "mac_address": "00:e0:4c:12:93:8d", "service_intercepts": { "https": { "port": "5551" }, "ssh": { "port": None } }, } } put: description: Update the IP Passthrough settings. body: application/json: type: ipPassthrough examples: example1: { "ip_passthrough": { "enabled": true, "passthrough_physif": "net1", "mac_address": "00:e0:4c:12:93:8d", "service_intercepts": { "https": { "port": "8443" }, "ssh": { "port": "8222" } }, } } example2: { "ip_passthrough": { "enabled": false, "passthrough_physif": "net2", "service_intercepts": { }, } } responses: 200: description: Returns the current IP Passthrough settings. body: application/json: type: ipPassthrough examples: example1: { "ip_passthrough": { "enabled": true, "passthrough_physif": "net1", "mac_address": "00:e0:4c:12:93:8d", "service_intercepts": { "https": { "port": "8443" }, "ssh": { "port": "8222" } }, } } example2: { "ip_passthrough": { "enabled": false, "passthrough_physif": "net2", "mac_address": None, "service_intercepts": { "https": { "port": None }, "ssh": { "port": None } }, } } /status: type: base-type description: The IP Passthrough status endpoint provides information about what part of the IP Passthrough connection process the device is currently at and information about the connected downstream device. get: description: Retrieve the current IP Passthrough status. responses: 200: description: This response object provides information about the current status of the IP Passthrough connection and the connected downstream device.
body: application/json: type: ipPassthroughStatus examples: example1: { "ip_passthrough_status": { "status": "active", "downstream_ip": "100.120.10.1", "downstream_mac": "01:02:03:04:05:06" } } example2: { "ip_passthrough_status": { "status": "connecting", "downstream_ip": '', "downstream_mac": '' } } example3: { "ip_passthrough_status": { "status": "cell_not_active", "downstream_ip": '', "downstream_mac": '' } } example4: { "ip_passthrough_status": { "status": "disabled", "downstream_ip": '', "downstream_mac": '' } }