definitions: controllers.FlowRow: properties: bytes_recv: type: integer bytes_sent: type: integer direction: type: string dst_entity_id: type: string dst_entity_name: type: string dst_ip: type: string dst_port: type: integer dst_type: type: string end_ts: type: string flow_id: type: string host_id: type: string host_name: type: string icmp_code: type: integer icmp_type: type: integer network_id: type: string packets_recv: type: integer packets_sent: type: integer protocol: type: integer src_entity_id: type: string src_entity_name: type: string src_ip: type: string src_port: type: integer src_type: type: string start_ts: type: string status: type: integer version: type: string type: object datatypes.JSONMap: additionalProperties: true type: object datatypes.JSONType-schema_NetworkRoles: type: object datatypes.JSONType-schema_ResourceAccess: type: object models.APIEnrollmentKey: properties: auto_assign_gw: type: boolean auto_egress: type: boolean default: type: boolean expiration: format: int64 type: integer groups: items: type: string type: array networks: items: type: string type: array relay: type: string tags: items: type: string type: array type: $ref: '#/definitions/models.KeyType' unlimited: type: boolean uses_remaining: type: integer required: - tags type: object models.Acl: properties: allowed_traffic_direction: $ref: '#/definitions/models.AllowedTrafficDirection' created_at: type: string created_by: type: string default: type: boolean dst_type: items: $ref: '#/definitions/models.AclPolicyTag' type: array enabled: type: boolean id: type: string meta_data: type: string name: type: string network_id: $ref: '#/definitions/schema.NetworkID' policy_type: $ref: '#/definitions/models.AclPolicyType' ports: items: type: string type: array protocol: allOf: - $ref: '#/definitions/models.Protocol' description: tcp, udp, etc. src_type: items: $ref: '#/definitions/models.AclPolicyTag' type: array type: type: string type: object models.AclGroupType: enum: - user - user-group - tag - device - egress-range - egress-id - ip - ipset type: string x-enum-varnames: - UserAclID - UserGroupAclID - NodeTagID - NodeID - EgressRange - EgressID - NetmakerIPAclID - NetmakerSubNetRangeAClID models.AclPolicyTag: properties: id: $ref: '#/definitions/models.AclGroupType' name: type: string value: type: string type: object models.AclPolicyType: enum: - user-policy - device-policy type: string x-enum-varnames: - UserPolicy - DevicePolicy models.AclPolicyTypes: properties: dst_grp_types: items: $ref: '#/definitions/models.AclGroupType' type: array policy_types: items: $ref: '#/definitions/models.AclPolicyType' type: array protocolTypes: items: $ref: '#/definitions/models.ProtocolType' type: array src_grp_types: items: $ref: '#/definitions/models.AclGroupType' type: array type: object models.AclRule: properties: allowed: type: boolean allowed_ports: items: type: string type: array allowed_protocols: allOf: - $ref: '#/definitions/models.Protocol' description: tcp, udp, etc. direction: allOf: - $ref: '#/definitions/models.AllowedTrafficDirection' description: single or two-way dst: items: $ref: '#/definitions/net.IPNet' type: array dst6: items: $ref: '#/definitions/net.IPNet' type: array id: type: string ip_list: items: $ref: '#/definitions/net.IPNet' type: array ip6_list: items: $ref: '#/definitions/net.IPNet' type: array type: object models.AllowedTrafficDirection: enum: - 0 - 1 type: integer x-enum-varnames: - TrafficDirectionUni - TrafficDirectionBi models.ApiHost: properties: autoupdate: type: boolean country_code: type: string debug: type: boolean defaultinterface: type: string dns: type: string enable_flow_logs: type: boolean endpointip: type: string endpointipv6: type: string entra_device_id: type: string firewallinuse: type: string hardware_uuid: type: string id: type: string interfaces: items: $ref: '#/definitions/models.ApiIface' type: array isdefault: type: boolean isstatic: type: boolean isstaticport: type: boolean kernel_version: type: string listenport: type: integer location: type: string macaddress: type: string mtu: type: integer name: type: string nat_type: type: string nodes: items: type: string type: array os: type: string os_family: type: string os_version: type: string persistentkeepalive: type: integer publickey: type: string serial_number: type: string verbosity: type: integer version: type: string wg_public_listen_port: type: integer type: object models.ApiIface: properties: addressString: type: string name: type: string type: object models.ApiNode: properties: additional_rag_ips: items: type: string type: array address: type: string address6: type: string allowedips: items: type: string type: array auto_assign_gw: type: boolean auto_relayed_peers: additionalProperties: type: string type: object connected: type: boolean country: type: string defaultacl: description: == PRO == type: string dnson: type: boolean egressgatewaynatenabled: type: boolean egressgatewayranges: items: type: string type: array egressgatewayranges_with_metric: items: $ref: '#/definitions/models.EgressRangeMetric' type: array expdatetime: format: int64 type: integer fail_over_peers: additionalProperties: type: object type: object failed_over_by: type: string hostid: minLength: 5 type: string id: minLength: 5 type: string inet_node_req: $ref: '#/definitions/models.InetNodeReq' ingressdns: type: string ingressmtu: type: integer ingresspersistentkeepalive: type: integer internetgw_node_id: type: string is_auto_relay: type: boolean is_fail_over: type: boolean is_gw: type: boolean is_static: type: boolean is_user_node: type: boolean isegressgateway: type: boolean isingressgateway: type: boolean isinternetgateway: type: boolean isrelay: type: boolean isrelayed: type: boolean last_evaluated_at: type: string lastcheckin: format: int64 type: integer lastmodified: format: int64 type: integer lastpeerupdate: format: int64 type: integer localaddress: type: string location: type: string metadata: type: string network: type: string networkrange: type: string networkrange6: type: string pendingdelete: type: boolean posture_check_violation_severity_level: $ref: '#/definitions/schema.Severity' posture_check_violations: items: $ref: '#/definitions/models.Violation' type: array relayedby: description: AutoRelayedBy uuid.UUID `json:"auto_relayed_by"` type: string relaynodes: items: type: string type: array server: type: string static_node: $ref: '#/definitions/models.ExtClient' status: $ref: '#/definitions/models.NodeStatus' tags: additionalProperties: type: object type: object required: - hostid - id type: object models.AuthParams: properties: id: type: string macaddress: type: string password: type: string type: object models.AutoRelayMeReq: properties: auto_relay_gw_id: type: string node_id: type: string type: object models.BulkDeleteRequest: properties: ids: items: type: string type: array type: object models.BulkExtClientStatusUpdate: properties: enabled: type: boolean ids: items: type: string type: array type: object models.BulkNodeStatusUpdate: properties: connected: type: boolean ids: items: type: string type: array type: object models.BulkUserStatusUpdate: properties: disable: type: boolean ids: items: type: string type: array type: object models.CreateGwReq: properties: extclientdns: type: string inet_node_client_ids: items: type: string type: array is_internet_gw: type: boolean metadata: type: string mtu: type: integer netid: type: string nodeid: type: string persistentkeepalive: type: integer relayaddrs: items: type: string type: array type: object models.CreateTagReq: properties: color_code: type: string network: $ref: '#/definitions/schema.NetworkID' tag_name: type: string tagged_nodes: items: $ref: '#/definitions/models.ApiNode' type: array type: object models.CustomExtClient: properties: client_version: type: string clientid: type: string country: type: string deniednodeacls: additionalProperties: type: object type: object device_id: type: string device_name: type: string dns: type: string enabled: type: boolean extraallowedips: items: type: string type: array is_already_connected_to_inet_gw: type: boolean kernel_version: type: string location: description: 'format: lat,long' type: string os: type: string os_family: type: string os_version: type: string postdown: maxLength: 1024 type: string postup: maxLength: 1024 type: string public_endpoint: type: string publickey: type: string remote_access_client_id: description: unique ID (MAC address) of RAC machine type: string tags: additionalProperties: type: object type: object type: object models.DNSEntry: properties: address: type: string address6: type: string name: maxLength: 192 minLength: 1 type: string network: type: string required: - name type: object models.EgressDomain: properties: domain: type: string resolved_ips: description: Resolved CIDRs for this domain on the egress resource. items: type: string type: array host: $ref: '#/definitions/schema.Host' id: type: string node: $ref: '#/definitions/models.Node' type: object models.EgressGatewayRequest: properties: natenabled: type: string netid: type: string nodeid: type: string ranges: items: type: string type: array ranges_with_metric: items: $ref: '#/definitions/models.EgressRangeMetric' type: array type: object models.EgressInfo: properties: egress_fw_rules: additionalProperties: $ref: '#/definitions/models.AclRule' type: object egress_gateway_cfg: $ref: '#/definitions/models.EgressGatewayRequest' egress_gw_addr: $ref: '#/definitions/net.IPNet' egress_gw_addr6: $ref: '#/definitions/net.IPNet' egress_id: type: string network: $ref: '#/definitions/net.IPNet' network6: $ref: '#/definitions/net.IPNet' type: object models.EgressNetworkRoutes: properties: egress_gw_addr: $ref: '#/definitions/net.IPNet' egress_gw_addr6: $ref: '#/definitions/net.IPNet' egress_ranges: items: type: string type: array egress_ranges_metric: items: $ref: '#/definitions/models.EgressRangeMetric' type: array network: type: string node_addr: $ref: '#/definitions/net.IPNet' node_addr6: $ref: '#/definitions/net.IPNet' peer_key: type: string type: object models.EgressRangeMetric: properties: nat: type: boolean nat_mode: $ref: '#/definitions/schema.EgressNATMode' network: type: string route_metric: description: preffered range 1-999 type: integer virtual_network: type: string type: object models.EgressReq: properties: description: type: string domains: description: Optional list of logical hostnames for domain-based egress (exact or *.example.com). items: type: string type: array id: type: string mode: $ref: '#/definitions/schema.EgressNATMode' name: type: string nat: type: boolean network: type: string nodes: additionalProperties: type: integer type: object preset_id: description: 'PresetID optional: reference to a catalog preset (see GET /api/v1/egress/presets). Explicit name/domain in the body override preset defaults.' type: string range: description: CIDR for routed egress, or "*" for internet gateway egress. type: string status: type: boolean tags: additionalProperties: type: integer type: object type: object models.EnrollmentKey: properties: auto_assign_gw: type: boolean auto_egress: type: boolean default: type: boolean expiration: type: string groups: items: type: string type: array networks: items: type: string type: array relay: type: string tags: items: type: string type: array token: description: B64 value of EnrollmentToken type: string type: $ref: '#/definitions/models.KeyType' unlimited: type: boolean uses_remaining: type: integer value: type: string type: object models.ErrorResponse: properties: code: type: integer message: type: string response: {} type: object models.ExtClient: properties: address: type: string address6: type: string allowed_ips: items: type: string type: array client_version: type: string clientid: type: string country: type: string deniednodeacls: additionalProperties: type: object type: object device_id: type: string device_name: type: string dns: type: string enabled: type: boolean extraallowedips: items: type: string type: array ingressgatewayendpoint: type: string ingressgatewayid: type: string jit_expires_at: description: JIT grant expiry time (nil if JIT not enabled or user is admin) type: string kernel_version: type: string last_evaluated_at: type: string lastmodified: format: int64 type: integer location: description: 'format: lat,long' type: string network: type: string os: type: string os_family: type: string os_version: type: string ownerid: type: string postdown: type: string postup: type: string posture_check_violation_severity_level: $ref: '#/definitions/schema.Severity' posture_check_violations: items: $ref: '#/definitions/models.Violation' type: array privatekey: type: string public_endpoint: type: string publickey: type: string remote_access_client_id: description: unique ID (MAC address) of RAC machine type: string tags: additionalProperties: type: object type: object type: object models.FeatureFlags: properties: allow_multi_server_license: type: boolean enable_device_approval: type: boolean enable_egress_ha: type: boolean enable_flow_logs: type: boolean enable_gws_ha: type: boolean enable_idp_integration: type: boolean enable_jit: type: boolean enable_network_activity: type: boolean enable_oauth: type: boolean enable_overlapping_egress_ranges: type: boolean enable_posture_checks: type: boolean type: object models.FwRule: properties: allow: type: boolean allowed_ports: items: type: string type: array allowed_protocols: allOf: - $ref: '#/definitions/models.Protocol' description: tcp, udp, etc. dst_ip: $ref: '#/definitions/net.IPNet' src_ip: $ref: '#/definitions/net.IPNet' type: object models.FwUpdate: properties: acl_rules: additionalProperties: $ref: '#/definitions/models.AclRule' type: object allow_all: type: boolean egress_info: additionalProperties: $ref: '#/definitions/models.EgressInfo' type: object ingress_info: additionalProperties: $ref: '#/definitions/models.IngressInfo' type: object is_egress_gw: type: boolean is_ingress_gw: type: boolean networks: items: $ref: '#/definitions/models.AclRule' type: array type: object models.HostInfoMap: additionalProperties: $ref: '#/definitions/models.HostNetworkInfo' type: object models.HostMqAction: enum: - UPGRADE - FORCE_UPGRADE - SIGNAL_HOST - UPDATE_HOST - UPDATE_NODE - DELETE_HOST - JOIN_HOST_TO_NETWORK - ACK - REQ_ACK - CHECK_IN - UPDATE_KEYS - REQ_PULL - SIGNAL_PULL - UPDATE_METRICS - EGRESS_UPDATE - CHECK_AUTO_ASSIGN_GW type: string x-enum-varnames: - Upgrade - ForceUpgrade - SignalHost - UpdateHost - UpdateNode - DeleteHost - JoinHostToNetwork - Acknowledgement - RequestAck - CheckIn - UpdateKeys - RequestPull - SignalPull - UpdateMetrics - EgressUpdate - CheckAutoAssignGw models.HostNetworkInfo: properties: interfaces: items: $ref: '#/definitions/schema.Iface' type: array is_static: type: boolean is_static_port: type: boolean listen_port: type: integer version: type: string type: object models.HostPeerInfo: properties: network_peers: additionalProperties: $ref: '#/definitions/models.PeerMap' type: object type: object models.HostPull: properties: address_identity_map: additionalProperties: $ref: '#/definitions/models.PeerIdentity' type: object auto_relay_nodes: additionalProperties: items: $ref: '#/definitions/models.Node' type: array type: object change_default_gw: type: boolean default_gw_ip: items: type: integer type: array dns_nameservers: items: $ref: '#/definitions/models.Nameserver' type: array egress_network_routes: items: $ref: '#/definitions/models.EgressNetworkRoutes' type: array egress_with_domains: items: $ref: '#/definitions/models.EgressDomain' type: array endpoint_detection: type: boolean fw_update: $ref: '#/definitions/models.FwUpdate' gw_nodes: additionalProperties: items: $ref: '#/definitions/models.Node' type: array type: object host: $ref: '#/definitions/schema.Host' host_network_info: $ref: '#/definitions/models.HostInfoMap' is_inet_gw: type: boolean name_servers: items: type: string type: array nodes: items: $ref: '#/definitions/models.Node' type: array peer_ids: $ref: '#/definitions/models.PeerMap' peers: items: $ref: '#/definitions/wgtypes.PeerConfig' type: array replace_peers: type: boolean server_config: $ref: '#/definitions/models.ServerConfig' type: object models.HostUpdate: properties: action: $ref: '#/definitions/models.HostMqAction' egressDomain: $ref: '#/definitions/models.EgressDomain' host: $ref: '#/definitions/schema.Host' newMetrics: $ref: '#/definitions/models.Metrics' node: $ref: '#/definitions/models.Node' signal: $ref: '#/definitions/models.Signal' type: object models.IDPSyncStatus: properties: description: description: |- Description is empty if the sync is ongoing or completed, and describes the error when the sync fails. type: string status: description: 'Status would be one of: in_progress, completed or failed.' type: string type: object models.IDPSyncTestRequest: properties: auth_provider: type: string azure_tenant_id: type: string client_id: type: string client_secret: type: string google_admin_email: type: string google_sa_creds_json: type: string okta_api_token: type: string okta_org_url: type: string type: object models.IDandAddr: properties: address: type: string address4: type: string address6: type: string host_id: type: string id: type: string is_extclient: type: boolean isserver: type: string listen_port: type: integer name: type: string network: type: string username: type: string type: object models.InetNodeReq: properties: inet_node_client_ids: items: type: string type: array type: object models.IngressGwUsers: properties: network: type: string node_id: type: string users: items: $ref: '#/definitions/models.ReturnUser' type: array type: object models.IngressInfo: properties: egress_ranges: items: $ref: '#/definitions/net.IPNet' type: array egress_ranges6: items: $ref: '#/definitions/net.IPNet' type: array ingress_id: type: string network: $ref: '#/definitions/net.IPNet' network6: $ref: '#/definitions/net.IPNet' rules: items: $ref: '#/definitions/models.FwRule' type: array static_node_ips: items: items: type: integer type: array type: array type: object models.InviteUsersReq: properties: network_roles: additionalProperties: additionalProperties: type: object type: object type: object platform_role_id: type: string user_emails: items: type: string type: array user_group_ids: additionalProperties: type: object type: object type: object models.JITAccessRequest: properties: network_id: description: Network identifier type: string reason: description: Reason for access request (required) type: string type: object models.JITOperationRequest: properties: action: description: enable, disable, request, approve, deny type: string expires_at: description: Unix epoch timestamp (seconds) for when access should expire type: integer grant_id: type: string reason: type: string request_id: type: string type: object models.KeyType: enum: - 0 - 1 - 2 - 3 type: integer x-enum-varnames: - Undefined - TimeExpiration - Uses - Unlimited models.LegacyNode: properties: accesskey: type: string action: type: string address: type: string address6: type: string allowedips: items: type: string type: array connected: type: string defaultacl: description: == PRO == type: string dnson: type: string egressgatewaynatenabled: type: string egressgatewayranges: items: type: string type: array egressgatewayrequest: $ref: '#/definitions/models.EgressGatewayRequest' endpoint: type: string expdatetime: format: int64 type: integer failover: type: string failovernode: type: string firewallinuse: type: string id: minLength: 5 type: string ingressgatewayrange: type: string ingressgatewayrange6: type: string interface: type: string interfaces: items: $ref: '#/definitions/schema.Iface' type: array internetgateway: type: string ipforwarding: type: string isdocker: type: string isegressgateway: type: string ishub: type: string isingressgateway: type: string isk8s: type: string ispending: type: string isrelay: type: string isrelayed: type: string isserver: type: string isstatic: description: IsStatic - refers to if the Endpoint is set manually or dynamically type: string lastcheckin: format: int64 type: integer lastmodified: format: int64 type: integer lastpeerupdate: format: int64 type: integer listenport: maximum: 65535 minimum: 1024 type: integer localaddress: type: string locallistenport: maximum: 65535 minimum: 0 type: integer macaddress: type: string mtu: type: integer name: maxLength: 62 type: string network: type: string networksettings: $ref: '#/definitions/models.Network' os: type: string ownerid: type: string password: minLength: 6 type: string persistentkeepalive: maximum: 1000 type: integer publickey: type: string relayaddrs: items: type: string type: array server: type: string traffickeys: $ref: '#/definitions/models.TrafficKeys' udpholepunch: type: string version: type: string required: - endpoint - id - password - publickey type: object models.Metric: properties: actualuptime: format: int64 type: integer connected: type: boolean lasttotalreceived: format: int64 type: integer lasttotalsent: format: int64 type: integer latency: format: int64 type: integer node_name: type: string percentup: type: number totalreceived: format: int64 type: integer totalsent: format: int64 type: integer totaltime: format: int64 type: integer uptime: format: int64 type: integer type: object models.Metrics: properties: connectivity: additionalProperties: $ref: '#/definitions/models.Metric' type: object network: type: string node_id: type: string node_name: type: string updated_at: type: string type: object models.MetricsMap: additionalProperties: $ref: '#/definitions/models.Metrics' type: object models.MigrationData: properties: hostName: type: string legacyNodes: items: $ref: '#/definitions/models.LegacyNode' type: array os: type: string password: type: string type: object models.Nameserver: properties: ips: items: type: string type: array is_ad_domain: type: boolean is_fallback: type: boolean is_search_domain: type: boolean match_domain: type: string type: object models.NameserverReq: properties: description: type: string match_domain: type: string name: type: string network: type: string servers: items: type: string type: array status: type: boolean tags: items: type: string type: array type: object models.Network: properties: addressrange: type: string addressrange6: type: string auto_join: type: string auto_remove: type: string auto_remove_tags: items: type: string type: array auto_remove_threshold_mins: type: integer created_by: type: string createdAt: type: string defaultacl: type: string defaultkeepalive: maximum: 1000 type: integer defaultmtu: type: integer dns_nameservers: items: type: string type: array isipv4: type: string isipv6: type: string jit_enabled: type: string netid: maxLength: 32 minLength: 1 type: string networklastmodified: format: int64 type: integer nodeslastmodified: format: int64 type: integer virtual_nat_pool_ipv4: description: VirtualNATPoolIPv4 is the IPv4 CIDR pool from which virtual NAT ranges are allocated for egress gateways type: string virtual_nat_site_prefixlen_ipv4: description: VirtualNATSitePrefixLenIPv4 is the prefix length (e.g., 24) for individual site allocations from the IPv4 virtual NAT pool type: integer required: - netid type: object models.NetworkMetrics: properties: nodes: $ref: '#/definitions/models.MetricsMap' type: object models.Node: properties: action: type: string additional_rag_ips: items: type: number type: array address: $ref: '#/definitions/net.IPNet' address6: $ref: '#/definitions/net.IPNet' auto_assign_gw: type: boolean auto_relayed_peers_v1: additionalProperties: type: string description: AutoRelayedPeers map[string]struct{} `json:"auto_relayed_peers"` type: object connected: type: boolean country_code: type: string egressgatewaynatenabled: type: boolean egressgatewayranges: items: type: string type: array egressgatewayrequest: $ref: '#/definitions/models.EgressGatewayRequest' expdatetime: type: string fail_over_peers: additionalProperties: type: object description: AutoRelayedBy uuid.UUID `json:"auto_relayed_by"` type: object failed_over_by: type: string hostid: type: string id: type: string inet_node_req: $ref: '#/definitions/models.InetNodeReq' ingressdns: type: string ingressgatewayrange: type: string ingressgatewayrange6: type: string ingressmtu: type: integer ingresspersistentkeepalive: type: integer internetgw_node_id: type: string is_auto_relay: type: boolean is_fail_over: type: boolean is_gw: type: boolean is_static: type: boolean is_user_node: type: boolean isegressgateway: type: boolean isingressgateway: type: boolean isinternetgateway: type: boolean isrelay: type: boolean isrelayed: type: boolean last_evaluated_at: type: string lastcheckin: type: string lastmodified: type: string lastpeerupdate: type: string localaddress: $ref: '#/definitions/net.IPNet' location: description: 'Format: "lat,lon"' type: string metadata: type: string network: type: string networkrange: type: integer networkrange6: type: number node_status: $ref: '#/definitions/models.NodeStatus' ownerid: description: == PRO == type: string pendingdelete: type: boolean posture_check_violation_severity_level: $ref: '#/definitions/schema.Severity' posture_check_violations: items: $ref: '#/definitions/models.Violation' type: array relayedby: type: string relaynodes: items: type: string type: array server: type: string static_node: $ref: '#/definitions/models.ExtClient' tags: additionalProperties: type: object type: object type: object models.NodeGet: properties: host: $ref: '#/definitions/schema.Host' host_peers: items: $ref: '#/definitions/wgtypes.PeerConfig' type: array node: $ref: '#/definitions/models.Node' peerids: $ref: '#/definitions/models.PeerMap' peers: items: $ref: '#/definitions/wgtypes.PeerConfig' type: array serverconfig: $ref: '#/definitions/models.ServerConfig' type: object models.NodeStatus: enum: - online - offline - warning - error - unknown - disconnected type: string x-enum-varnames: - OnlineSt - OfflineSt - WarningSt - ErrorSt - UnKnown - Disconnected models.PeerIdentity: properties: id: type: string name: type: string type: $ref: '#/definitions/models.PeerType' type: object models.PeerMap: additionalProperties: $ref: '#/definitions/models.IDandAddr' type: object models.PeerType: enum: - 0 - 1 - 2 - 3 type: integer x-enum-varnames: - PeerType_Node - PeerType_User - PeerType_WireGuard - PeerType_EgressRoute models.Protocol: enum: - all - udp - tcp - icmp type: string x-enum-varnames: - ALL - UDP - TCP - ICMP models.ProtocolType: properties: allow_port_setting: type: boolean allowed_protocols: items: $ref: '#/definitions/models.Protocol' type: array name: type: string port_range: type: string type: object models.RegisterResponse: properties: requested_host: $ref: '#/definitions/schema.Host' server_config: $ref: '#/definitions/models.ServerConfig' type: object models.ReturnUser: properties: account_disabled: type: boolean auth_type: type: string created_at: type: string created_by: type: string display_name: type: string external_identity_provider_id: type: string is_mfa_enabled: type: boolean isadmin: type: boolean issuperadmin: type: boolean last_login_time: type: string network_roles: additionalProperties: additionalProperties: type: object type: object type: object num_access_tokens: type: integer platform_role_id: $ref: '#/definitions/schema.UserRoleID' remote_gw_ids: additionalProperties: type: object description: deprecated type: object updated_at: type: string user_group_ids: additionalProperties: type: object type: object username: type: string type: object models.ServerConfig: properties: Is_EE: type: boolean api: type: string apihost: type: string apiport: type: string broker: type: string brokerType: type: string coreDNSAddr: type: string defaultDomain: type: string dnsmode: type: string endpointDetection: type: boolean grpc: type: string ipdetectionInterval: type: integer manageDNS: type: boolean metricInterval: type: string metricsPort: type: integer mqpassword: type: string mqport: type: string mquserName: type: string peerConnectionCheckInterval: type: string server: type: string stun: type: boolean stunServers: type: string trafficKey: items: type: integer type: array version: type: string type: object models.ServerSettings: properties: allowed_email_domains: type: string audit_logs_retention_period: type: integer authprovider: type: string azure_tenant: type: string basic_auth: type: boolean clean_up_interval_in_mins: type: integer client_id: type: string client_secret: type: string default_domain: type: string email_sender_addr: type: string email_sender_password: type: string email_sender_user: type: string enable_flow_logs: type: boolean endpoint_detection: type: boolean google_admin_email: type: string google_sa_creds_json: type: string group_filters: items: type: string type: array idp_sync_interval: type: string ip_detection_interval: description: IPDetectionInterval is the interval (in seconds) at which devices check for changes in public ip. type: integer jwt_validity_duration: description: |- JwtValidityDuration is the validity duration of auth tokens for users on the dashboard (NMUI). type: integer jwt_validity_duration_clients: description: |- JwtValidityDurationClients is the validity duration of auth tokens for users on the clients (NetDesk). type: integer manage_dns: type: boolean metric_interval: type: string metrics_port: type: integer mfa_enforced: type: boolean netclientautoupdate: type: boolean oidcissuer: type: string okta_api_token: type: string okta_org_url: type: string peer_connection_check_interval: type: string posture_check_interval: description: in minutes type: string rac_restrict_to_single_network: type: boolean smtp_host: type: string smtp_port: type: integer stun: type: boolean stun_servers: type: string sync_enabled: type: boolean telemetry: type: string user_filters: items: type: string type: array verbosity: type: integer type: object models.Signal: properties: action: $ref: '#/definitions/models.SignalAction' auto_relay_node_metrics: additionalProperties: format: int64 type: integer type: object from_host_id: type: string from_host_pubkey: type: string from_node_id: type: string is_pro: type: boolean networkID: type: string reply: type: boolean server: type: string timestamp: type: integer to_host_id: type: string to_host_pubkey: type: string to_node_id: type: string type: object models.SignalAction: enum: - CONNECTION_NEGOTIATION - RELAY_ME type: string x-enum-varnames: - ConnNegotiation - RelayME models.SuccessResponse: properties: code: type: integer message: type: string response: {} type: object models.SuccessfulUserLoginResponse: properties: authToken: type: string userName: type: string type: object models.TOTPInitiateResponse: properties: otp_auth_url: type: string otp_auth_url_signature: type: string qr_code: type: string type: object models.TagListRespNodes: properties: color_code: type: string created_at: type: string created_by: type: string id: type: string network: $ref: '#/definitions/schema.NetworkID' tag_name: type: string tagged_nodes: items: $ref: '#/definitions/models.ApiNode' type: array used_by_count: type: integer type: object models.Theme: enum: - dark - light - system type: string x-enum-varnames: - Dark - Light - System models.TrafficKeys: properties: mine: items: type: integer type: array server: items: type: integer type: array type: object models.UpdateAclRequest: properties: allowed_traffic_direction: $ref: '#/definitions/models.AllowedTrafficDirection' created_at: type: string created_by: type: string default: type: boolean dst_type: items: $ref: '#/definitions/models.AclPolicyTag' type: array enabled: type: boolean id: type: string meta_data: type: string name: type: string network_id: $ref: '#/definitions/schema.NetworkID' new_name: type: string policy_type: $ref: '#/definitions/models.AclPolicyType' ports: items: type: string type: array protocol: allOf: - $ref: '#/definitions/models.Protocol' description: tcp, udp, etc. src_type: items: $ref: '#/definitions/models.AclPolicyTag' type: array type: type: string type: object models.UpdateTagReq: properties: color_code: type: string created_at: type: string created_by: type: string id: type: string network: $ref: '#/definitions/schema.NetworkID' new_name: type: string tag_name: type: string tagged_nodes: items: $ref: '#/definitions/models.ApiNode' type: array type: object models.User: properties: account_disabled: type: boolean auth_type: type: string created_at: type: string created_by: type: string display_name: type: string external_identity_provider_id: type: string is_mfa_enabled: type: boolean isadmin: description: deprecated type: boolean issuperadmin: description: deprecated type: boolean last_login_time: type: string network_roles: additionalProperties: additionalProperties: type: object type: object type: object password: minLength: 5 type: string platform_role_id: $ref: '#/definitions/schema.UserRoleID' remote_gw_ids: additionalProperties: type: object description: deprecated type: object totp_secret: type: string updated_at: type: string user_group_ids: additionalProperties: type: object type: object username: minLength: 3 type: string required: - password type: object models.UserAuthParams: properties: password: type: string username: type: string type: object models.UserIPMap: properties: mappings: additionalProperties: $ref: '#/definitions/models.UserMapping' type: object type: object models.UserIdentityValidationRequest: properties: password: type: string type: object models.UserIdentityValidationResponse: properties: identity_validated: type: boolean type: object models.UserInvite: properties: email: type: string invite_code: type: string invite_url: type: string network_roles: additionalProperties: additionalProperties: type: object type: object type: object platform_role_id: type: string user_group_ids: additionalProperties: type: object type: object type: object models.UserJITNetworkStatus: properties: grant: description: schema.JITGrant has_access: type: boolean jit_enabled: type: boolean network_id: type: string network_name: type: string pending_request: type: boolean request: description: schema.JITRequest type: object models.UserMapping: properties: groups: items: type: string type: array user: type: string type: object models.UserSettings: properties: reduced_motion: type: boolean text_size: type: string theme: $ref: '#/definitions/models.Theme' type: object models.UserTOTPVerificationParams: properties: otp_auth_url: type: string otp_auth_url_signature: type: string totp: type: string type: object models.Violation: properties: attribute: type: string check_id: type: string message: type: string name: type: string severity: $ref: '#/definitions/schema.Severity' type: object net.IPNet: properties: ip: description: network number items: type: integer type: array mask: description: network mask items: format: int32 type: integer type: array type: object net.UDPAddr: properties: ip: items: type: integer type: array port: type: integer zone: description: IPv6 scoped addressing zone type: string type: object schema.Action: enum: - CREATE - UPDATE - DELETE - DELETE_ALL - LOGIN - LOGOUT - CONNECT - SYNC - REFRESH_KEY - REFRESH_ALL_KEYS - SYNC_ALL - UPGRADE_ALL - DISCONNECT - JOIN_HOST_TO_NETWORK - REMOVE_HOST_FROM_NETWORK - ENABLE_MFA - DISABLE_MFA - ENFORCE_MFA - UNENFORCE_MFA - ENABLE_BASIC_AUTH - DISABLE_BASIC_AUTH - ENABLE_TELEMETRY - DISABLE_TELEMETRY - UPDATE_CLIENT_SETTINGS - UPDATE_AUTHENTICATION_SECURITY_SETTINGS - UPDATE_MONITORING_AND_DEBUGGING_SETTINGS - UPDATE_EMAIL_SETTINGS - UPDATE_IDP_SETTINGS - ENABLE_FLOW_LOGS - DISABLE_FLOW_LOGS - GATEWAY_ASSIGN - GATEWAY_UNASSIGN type: string x-enum-varnames: - Create - Update - Delete - DeleteAll - Login - LogOut - Connect - Sync - RefreshKey - RefreshAllKeys - SyncAll - UpgradeAll - Disconnect - JoinHostToNet - RemoveHostFromNet - EnableMFA - DisableMFA - EnforceMFA - UnenforceMFA - EnableBasicAuth - DisableBasicAuth - EnableTelemetry - DisableTelemetry - UpdateClientSettings - UpdateAuthenticationSecuritySettings - UpdateMonitoringAndDebuggingSettings - UpdateSMTPSettings - UpdateIDPSettings - EnableFlowLogs - DisableFlowLogs - GatewayAssign - GatewayUnAssign schema.AddrPort: type: object schema.Attribute: enum: - os - os_version - os_family - kernel_version - auto_update - client_version - client_location type: string x-enum-varnames: - OS - OSVersion - OSFamily - KernelVersion - AutoUpdate - ClientVersion - ClientLocation schema.Egress: properties: created_at: type: string created_by: type: string description: type: string domains: description: Configured logical hostnames for domain-based egress when more than one applies. items: type: string type: array domain_ans_by_domain: additionalProperties: items: type: string type: array description: Maps each configured domain to its resolved CIDRs. type: object id: type: string mode: $ref: '#/definitions/schema.EgressNATMode' name: type: string nat: type: boolean network: type: string nodes: $ref: '#/definitions/datatypes.JSONMap' preset_id: description: PresetID is the catalog id when this egress was created from a preset (empty if custom). type: string range: type: string status: description: IsInetGw bool `gorm:"is_inet_gw" json:"is_internet_gateway"` type: boolean tags: $ref: '#/definitions/datatypes.JSONMap' updated_at: type: string virtual_range: type: string type: object schema.EgressNATMode: enum: - virtual_nat - direct_nat type: string x-enum-varnames: - VirtualNAT - DirectNAT schema.Event: properties: action: $ref: '#/definitions/schema.Action' diff: items: type: integer type: array id: type: string network_id: $ref: '#/definitions/schema.NetworkID' origin: $ref: '#/definitions/schema.Origin' source: items: type: integer type: array target: items: type: integer type: array time_stamp: type: string triggered_by: type: string type: object schema.Host: properties: autoupdate: type: boolean country_code: type: string created_at: type: string daemoninstalled: type: boolean debug: type: boolean defaultinterface: type: string dns_status: type: string enable_flow_logs: type: boolean endpointip: items: type: integer type: array endpointipv6: items: type: integer type: array firewallinuse: type: string hostpass: type: string id: type: string interface: type: string interfaces: items: $ref: '#/definitions/schema.Iface' type: array ipforwarding: type: boolean isdefault: type: boolean isdocker: type: boolean isk8s: type: boolean isstatic: type: boolean isstaticport: type: boolean kernel_version: type: string listenport: type: integer location: description: 'Format: "lat,lon"' type: string macaddress: items: type: integer type: array mtu: type: integer name: type: string nat_type: type: string nodes: items: type: string type: array os: type: string os_family: type: string os_version: type: string persistentkeepalive: format: int64 type: integer publickey: $ref: '#/definitions/schema.WgKey' traffickeypublic: items: type: integer type: array turn_endpoint: $ref: '#/definitions/schema.AddrPort' updated_at: type: string verbosity: type: integer version: type: string wg_public_listen_port: type: integer type: object schema.Iface: properties: address: $ref: '#/definitions/net.IPNet' addressString: type: string name: type: string type: object schema.JITRequest: properties: approved_at: type: string approved_by: type: string duration_hours: type: integer expires_at: type: string id: type: string network_id: type: string reason: type: string requested_at: type: string revoked_at: type: string status: description: pending, approved, denied, expired type: string user_id: type: string user_name: type: string type: object schema.Nameserver: properties: created_at: type: string created_by: type: string default: type: boolean description: type: string domains: items: $ref: '#/definitions/schema.NameserverDomain' type: array fallback: type: boolean id: type: string match_all: type: boolean match_domains: description: 'TODO: deprecate' items: type: string type: array name: type: string network_id: type: string nodes: $ref: '#/definitions/datatypes.JSONMap' servers: items: type: string type: array status: type: boolean tags: $ref: '#/definitions/datatypes.JSONMap' updated_at: type: string type: object schema.NameserverDomain: properties: domain: type: string is_ad_domain: type: boolean is_search_domain: type: boolean type: object schema.Network: properties: addressrange: type: string addressrange6: type: string auto_join: type: boolean auto_remove: type: boolean auto_remove_tags: items: type: string type: array auto_remove_threshold: description: in minutes type: integer created_at: type: string created_by: type: string defaultkeepalive: description: in seconds. type: integer defaultmtu: type: integer id: type: string jit_enabled: type: boolean netid: type: string nodes_updated_at: type: string updated_at: type: string virtual_nat_pool_ipv4: type: string virtual_nat_site_prefixlen_ipv4: type: integer type: object schema.NetworkID: enum: - all_networks type: string x-enum-varnames: - AllNetworks schema.Origin: enum: - DASHBOARD - API - NMCTL - CLIENT-APP type: string x-enum-varnames: - Dashboard - Api - NMCTL - ClientApp schema.PendingHost: properties: enrollment_key_id: items: type: integer type: array host_id: type: string host_name: type: string id: type: string location: description: 'Format: "lat,lon"' type: string network: type: string os: type: string public_key: type: string requested_at: type: string version: type: string type: object schema.PostureCheck: properties: attribute: $ref: '#/definitions/schema.Attribute' created_at: type: string created_by: type: string description: type: string id: type: string name: type: string network_id: $ref: '#/definitions/schema.NetworkID' severity: $ref: '#/definitions/schema.Severity' status: type: boolean tags: $ref: '#/definitions/datatypes.JSONMap' updated_at: type: string user_groups: $ref: '#/definitions/datatypes.JSONMap' values: items: type: string type: array type: object schema.Severity: enum: - 0 - 1 - 2 - 3 - 4 type: integer x-enum-varnames: - SeverityUnknown - SeverityLow - SeverityMedium - SeverityHigh - SeverityCritical schema.UserAccessToken: properties: created_at: type: string created_by: type: string expires_at: type: string id: type: string last_used: type: string name: type: string user_name: type: string type: object schema.UserGroup: properties: color_code: type: string created_at: type: string created_by: type: string default: type: boolean external_identity_provider_id: type: string id: type: string meta_data: type: string name: type: string network_roles: $ref: '#/definitions/datatypes.JSONType-schema_NetworkRoles' updated_at: type: string type: object schema.UserRole: properties: default: type: boolean deny_dashboard_access: type: boolean full_access: type: boolean global_level_access: $ref: '#/definitions/datatypes.JSONType-schema_ResourceAccess' id: $ref: '#/definitions/schema.UserRoleID' meta_data: type: string name: type: string network_id: $ref: '#/definitions/schema.NetworkID' network_level_access: $ref: '#/definitions/datatypes.JSONType-schema_ResourceAccess' type: object schema.UserRoleID: enum: - super-admin - admin - service-user - platform-user - auditor - network-admin - network-user type: string x-enum-varnames: - SuperAdminRole - AdminRole - ServiceUser - PlatformUser - Auditor - NetworkAdmin - NetworkUser schema.WgKey: properties: wgtypes.Key: items: format: int32 type: integer type: array type: object wgtypes.PeerConfig: properties: allowedIPs: description: |- AllowedIPs specifies a list of allowed IP addresses in CIDR notation for this peer. items: $ref: '#/definitions/net.IPNet' type: array endpoint: allOf: - $ref: '#/definitions/net.UDPAddr' description: Endpoint specifies the endpoint of this peer entry, if not nil. persistentKeepaliveInterval: description: |- PersistentKeepaliveInterval specifies the persistent keepalive interval for this peer, if not nil. A non-nil value of 0 will clear the persistent keepalive interval. format: int64 type: integer presharedKey: description: |- PresharedKey specifies a peer's preshared key configuration, if not nil. A non-nil, zero-value Key will clear the preshared key. items: format: int32 type: integer type: array publicKey: description: |- PublicKey specifies the public key of this peer. PublicKey is a mandatory field for all PeerConfigs. items: format: int32 type: integer type: array remove: description: |- Remove specifies if the peer with this public key should be removed from a device's peer list. type: boolean replaceAllowedIPs: description: |- ReplaceAllowedIPs specifies if the allowed IPs specified in this peer configuration should replace any existing ones, instead of appending them to the allowed IPs list. type: boolean updateOnly: description: |- UpdateOnly specifies that an operation will only occur on this peer if the peer already exists as part of the interface. type: boolean type: object host: api.demo.netmaker.io info: contact: {} description: NetMaker API Docs title: NetMaker version: 1.7.0 paths: /api/dns: get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.DNSEntry' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get all DNS entries tags: - DNS /api/dns/{network}: post: consumes: - application/json parameters: - description: Network identifier in: path name: network required: true type: string - description: DNS entry details in: body name: body required: true schema: $ref: '#/definitions/models.DNSEntry' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.DNSEntry' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create a new DNS entry tags: - DNS /api/dns/{network}/{domain}: delete: parameters: - description: Network identifier in: path name: network required: true type: string - description: Domain Name in: path name: domain required: true type: string produces: - application/json responses: "200": description: OK schema: type: string "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete a DNS entry tags: - DNS /api/dns/adm/{network}: get: parameters: - description: Network identifier in: path name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.DNSEntry' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get all DNS entries associated with the network tags: - DNS /api/dns/adm/{network}/custom: get: parameters: - description: Network identifier in: path name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.DNSEntry' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Gets custom DNS entries associated with a network tags: - DNS /api/dns/adm/{network}/nodes: get: parameters: - description: Network identifier in: path name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.DNSEntry' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Gets node DNS entries associated with a network tags: - DNS /api/dns/adm/{network}/sync: post: parameters: - description: Network identifier in: path name: network required: true type: string produces: - application/json responses: "200": description: DNS Sync completed successfully schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Sync DNS entries for a given network tags: - DNS /api/dns/adm/pushdns: post: produces: - application/json responses: "200": description: DNS Pushed to CoreDNS schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Push DNS entries to nameserver tags: - DNS /api/extclients: get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ExtClient' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Fetch all config files across all networks tags: - Config Files /api/extclients/{network}: get: parameters: - description: Network ID in: path name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ExtClient' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get all config files associated with network tags: - Config Files /api/extclients/{network}/{clientid}: delete: parameters: - description: Network ID in: path name: network required: true type: string - description: Client ID in: path name: clientid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "403": description: Forbidden schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete a config file tags: - Config Files get: parameters: - description: Network ID in: path name: network required: true type: string - description: Client ID in: path name: clientid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ExtClient' "403": description: Forbidden schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get an individual config file tags: - Config Files put: consumes: - application/json parameters: - description: Network ID in: path name: network required: true type: string - description: Client ID in: path name: clientid required: true type: string - description: Custom ext client update in: body name: body required: true schema: $ref: '#/definitions/models.CustomExtClient' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ExtClient' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update a config file tags: - Config Files /api/extclients/{network}/{clientid}/{type}: get: parameters: - description: Network ID in: path name: network required: true type: string - description: Client ID in: path name: clientid required: true type: string - description: Config type (qr or file) in: path name: type required: true type: string - description: Preferred endpoint IP in: query name: preferredip type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ExtClient' "403": description: Forbidden schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get config file configuration tags: - Config Files /api/extclients/{network}/{nodeid}: post: consumes: - application/json parameters: - description: Network ID in: path name: network required: true type: string - description: Node ID (Ingress Gateway) in: path name: nodeid required: true type: string - description: Custom ext client parameters in: body name: body required: true schema: $ref: '#/definitions/models.CustomExtClient' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ExtClient' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create a config file tags: - Config Files /api/getip: get: produces: - application/json responses: "200": description: The public IP address. schema: type: string "400": description: Invalid IP address or no IP found. schema: type: string summary: Get the current public IP address. tags: - IP Service /api/hosts: get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ApiHost' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List all hosts tags: - Hosts /api/hosts/{hostid}: delete: parameters: - description: Host ID in: path name: hostid required: true type: string - description: Force delete in: query name: force type: boolean produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ApiHost' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Deletes a Netclient host from Netmaker server tags: - Hosts put: consumes: - application/json parameters: - description: Host ID in: path name: hostid required: true type: string - description: New host data in: body name: body required: true schema: $ref: '#/definitions/models.ApiHost' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ApiHost' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Updates a Netclient host on Netmaker server tags: - Hosts /api/hosts/{hostid}/keys: put: parameters: - description: Host ID in: path name: hostid required: true type: string responses: "200": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update keys for a host tags: - Hosts /api/hosts/{hostid}/networks/{network}: delete: parameters: - description: Host ID in: path name: hostid required: true type: string - description: Network name in: path name: network required: true type: string - description: Force delete in: query name: force type: boolean responses: "200": description: OK schema: type: string "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: To Remove Host from Network tags: - Hosts post: parameters: - description: Host ID in: path name: hostid required: true type: string - description: Network name in: path name: network required: true type: string responses: "200": description: OK schema: type: string "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: To Add Host To Network tags: - Hosts /api/hosts/{hostid}/sync: post: parameters: - description: Host ID in: path name: hostid required: true type: string responses: "200": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Requests a host to pull tags: - Hosts /api/hosts/{hostid}/upgrade: put: parameters: - description: Host ID in: path name: hostid required: true type: string - description: Force upgrade in: query name: force type: boolean responses: "200": description: passed message to upgrade host schema: type: string "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Upgrade a host tags: - Hosts /api/hosts/adm/authenticate: post: consumes: - application/json parameters: - description: Authentication parameters in: body name: body required: true schema: $ref: '#/definitions/models.AuthParams' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' summary: To Fetch Auth Token for a Host tags: - Auth /api/hosts/keys: put: responses: "200": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update keys for all hosts tags: - Hosts /api/hosts/sync: post: responses: "200": description: sync all hosts request received schema: type: string security: - oauth: [] summary: Requests all the hosts to pull tags: - Hosts /api/hosts/upgrade: post: parameters: - description: Force upgrade in: query name: force type: boolean responses: "200": description: upgrade all hosts request received schema: type: string security: - oauth: [] summary: Requests all the hosts to upgrade their version tags: - Hosts /api/idp: delete: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Remove IDP integration tags: - IDP /api/idp/sync: post: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' security: - oauth: [] summary: Sync users and groups from IDP tags: - IDP /api/idp/sync/status: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.IDPSyncStatus' security: - oauth: [] summary: Get IDP sync status tags: - IDP /api/idp/sync/test: post: consumes: - application/json parameters: - description: IDP sync test request in: body name: body required: true schema: $ref: '#/definitions/models.IDPSyncTestRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Test IDP Sync Credentials tags: - IDP /api/metrics: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.NetworkMetrics' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get metrics for all nodes on server tags: - Metrics /api/metrics-ext/{network}: get: parameters: - description: Network ID in: path name: network required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.Metrics' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get metrics for external clients in a network tags: - Metrics /api/metrics/{network}: get: parameters: - description: Network ID in: path name: network required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.NetworkMetrics' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get metrics for all nodes in a network tags: - Metrics /api/metrics/{network}/{nodeid}: get: parameters: - description: Network ID in: path name: network required: true type: string - description: Node ID in: path name: nodeid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.Metrics' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get metrics for a specific node tags: - Metrics /api/networks: get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.Network' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Lists all networks tags: - Networks post: parameters: - description: Network details in: body name: body required: true schema: $ref: '#/definitions/schema.Network' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.Network' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create a network tags: - Networks /api/networks/{networkname}: delete: parameters: - description: Network name in: path name: networkname required: true type: string - description: Force Delete in: query name: force type: boolean produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete a network tags: - Networks get: parameters: - description: Network name in: path name: networkname required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.Network' "404": description: Not Found schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get a network tags: - Networks put: parameters: - description: Network name in: path name: networkname required: true type: string - description: Network details in: body name: body required: true schema: $ref: '#/definitions/schema.Network' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.Network' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update network settings tags: - Networks /api/networks/{networkname}/egress_routes: get: parameters: - description: Network name in: path name: networkname required: true type: string produces: - application/json responses: "200": description: OK schema: additionalProperties: items: type: string type: array type: object "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get a network Egress routes tags: - Networks /api/nodes: get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ApiNode' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get all nodes across all networks tags: - Nodes /api/nodes/{network}: get: parameters: - description: Network ID in: path name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ApiNode' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Gets all nodes associated with network including pending nodes tags: - Nodes /api/nodes/{network}/{nodeid}: delete: parameters: - description: Network ID in: path name: network required: true type: string - description: Node ID in: path name: nodeid required: true type: string - description: Force delete in: query name: force type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete an individual node tags: - Nodes get: parameters: - description: Network ID in: path name: network required: true type: string - description: Node ID in: path name: nodeid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.NodeGet' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get an individual node tags: - Nodes put: consumes: - application/json parameters: - description: Network ID in: path name: network required: true type: string - description: Node ID in: path name: nodeid required: true type: string - description: Node update data in: body name: body required: true schema: $ref: '#/definitions/models.ApiNode' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ApiNode' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update an individual node tags: - Nodes /api/nodes/{network}/{nodeid}/creategateway: post: consumes: - application/json parameters: - description: Network ID in: path name: network required: true type: string - description: Node ID in: path name: nodeid required: true type: string - description: Egress gateway request in: body name: body required: true schema: $ref: '#/definitions/models.EgressGatewayRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ApiNode' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create an egress gateway tags: - Nodes /api/nodes/{network}/{nodeid}/deletegateway: delete: parameters: - description: Network ID in: path name: network required: true type: string - description: Node ID in: path name: nodeid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ApiNode' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete an egress gateway tags: - Nodes /api/nodes/{network}/{nodeid}/gateway: delete: parameters: - description: Network ID in: path name: network required: true type: string - description: Node ID in: path name: nodeid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ApiNode' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete a gateway tags: - Gateways post: consumes: - application/json parameters: - description: Network ID in: path name: network required: true type: string - description: Node ID in: path name: nodeid required: true type: string - description: Gateway request in: body name: body required: true schema: $ref: '#/definitions/models.CreateGwReq' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ApiNode' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create a gateway tags: - Gateways /api/nodes/{network}/{nodeid}/gateway/assign: post: parameters: - description: Network ID in: path name: network required: true type: string - description: Client node ID to assign to gateway in: path name: nodeid required: true type: string - description: Gateway node ID in: query name: gw_id required: true type: string - description: Enable auto-assign gateway (Pro only) in: query name: auto_assign_gw type: boolean produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ApiNode' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Assign a node to a gateway tags: - Gateways /api/nodes/{network}/{nodeid}/gateway/unassign: post: parameters: - description: Network ID in: path name: network required: true type: string - description: Node ID in: path name: nodeid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ApiNode' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Unassign client nodes from a gateway tags: - Gateways /api/server/feature_flags: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.FeatureFlags' summary: Get feature flags for this server tags: - Server /api/server/getconfig: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ServerConfig' security: - oauth: [] summary: Get the server configuration tags: - Server /api/server/getserverinfo: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ServerConfig' security: - oauth: [] summary: Get the server information tags: - Server /api/server/settings: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ServerSettings' security: - oauth: [] summary: Get the server settings tags: - Server put: consumes: - application/json parameters: - description: Server settings in: body name: body required: true schema: $ref: '#/definitions/models.ServerSettings' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ServerSettings' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update the server settings tags: - Server /api/server/status: get: produces: - application/json responses: "200": description: Server status schema: type: object summary: Get the server status tags: - Server /api/users: get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ReturnUser' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get all users tags: - Users /api/users/{username}: delete: parameters: - description: Username of the user to delete in: path name: username required: true type: string - description: Force delete configs in: query name: force_delete_configs type: string produces: - application/json responses: "200": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete a user tags: - Users get: parameters: - description: Username of the user to fetch in: path name: username required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ReturnUser' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get an individual user tags: - Users post: consumes: - application/json parameters: - description: Username of the user to create in: path name: username required: true type: string - description: User details in: body name: body required: true schema: $ref: '#/definitions/models.User' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ReturnUser' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create a user tags: - Users put: consumes: - application/json parameters: - description: Username of the user to update in: path name: username required: true type: string - description: User details in: body name: body required: true schema: $ref: '#/definitions/models.User' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ReturnUser' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update a user tags: - Users /api/users/{username}/auth/complete-totp: post: consumes: - application/json parameters: - description: Username in: path name: username required: true type: string - description: TOTP verification parameters in: body name: body required: true schema: $ref: '#/definitions/models.UserTOTPVerificationParams' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Verify and complete setting up TOTP 2FA for a user tags: - Auth /api/users/{username}/auth/init-totp: post: parameters: - description: Username in: path name: username required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.TOTPInitiateResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Initiate setting up TOTP 2FA for a user tags: - Auth /api/users/{username}/auth/verify-totp: post: consumes: - application/json parameters: - description: Username in: path name: username required: true type: string - description: TOTP verification parameters in: body name: body required: true schema: $ref: '#/definitions/models.UserTOTPVerificationParams' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessfulUserLoginResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' summary: Verify a user's TOTP token tags: - Auth /api/users/{username}/disable: post: parameters: - description: Username of the user to disable in: path name: username required: true type: string - description: Force disable configs in: query name: force_disable_configs type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Disable a user's account tags: - Users /api/users/{username}/enable: post: parameters: - description: Username of the user to enable in: path name: username required: true type: string - description: Force enable configs in: query name: force_enable_configs type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Enable a user's account tags: - Users /api/users/{username}/remote_access_gw: get: parameters: - description: Username to fetch all the gateways with access in: path name: username required: true type: string - description: Device ID in: query name: device_id type: string - description: Remote access client ID in: query name: remote_access_clientid type: string - description: If 'true', returns array format in: query name: from_mobile type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get user remote access gateways tags: - Users /api/users/{username}/remote_access_gw/{remote_access_gateway_id}: delete: consumes: - application/json parameters: - description: Username in: path name: username required: true type: string - description: Remote Access Gateway ID in: path name: remote_access_gateway_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ReturnUser' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Remove user from a remote access gateway tags: - Users post: consumes: - application/json parameters: - description: Username in: path name: username required: true type: string - description: Remote Access Gateway ID in: path name: remote_access_gateway_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ReturnUser' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Attach user to a remote access gateway tags: - Users /api/users/{username}/settings: get: parameters: - description: Username of the user in: path name: username required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.UserSettings' security: - oauth: [] summary: Get a user's preferences and settings tags: - Users put: consumes: - application/json parameters: - description: Username of the user in: path name: username required: true type: string - description: User settings in: body name: body required: true schema: $ref: '#/definitions/models.UserSettings' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.UserSettings' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update a user's preferences and settings tags: - Users /api/users/{username}/validate-identity: post: consumes: - application/json parameters: - description: Username in: path name: username required: true type: string - description: User Identity Validation Request in: body name: body required: true schema: $ref: '#/definitions/models.UserIdentityValidationRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.UserIdentityValidationResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Validate a user's identity tags: - Users /api/users/adm/authenticate: post: consumes: - application/json parameters: - description: Authentication parameters in: body name: body required: true schema: $ref: '#/definitions/models.UserAuthParams' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' summary: Authenticate a user to retrieve an authorization token tags: - Auth /api/users/adm/createsuperadmin: post: consumes: - application/json parameters: - description: User details in: body name: body required: true schema: $ref: '#/definitions/models.User' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ReturnUser' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' summary: Create a super admin tags: - Users /api/users/adm/hassuperadmin: get: produces: - application/json responses: "200": description: OK schema: type: boolean "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' summary: Check if the server has a super admin tags: - Users /api/users/adm/transfersuperadmin/{username}: post: parameters: - description: Username of the user to transfer super admin role in: path name: username required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ReturnUser' "403": description: Forbidden schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Transfer super admin role to another admin user tags: - Users /api/users/ingress/{ingress_id}: get: consumes: - application/json parameters: - description: Ingress Gateway ID in: path name: ingress_id required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.IngressGwUsers' type: array "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List users attached to a remote access gateway tags: - Users /api/users_pending: delete: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete all pending users tags: - Users get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ReturnUser' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get all pending users tags: - Users /api/users_pending/user/{username}: delete: parameters: - description: Username of the pending user to delete in: path name: username required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete a pending user tags: - Users post: parameters: - description: Username of the pending user to approve in: path name: username required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Approve a pending user tags: - Users /api/v1/acls: delete: parameters: - description: ACL ID in: query name: acl_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete Acl tags: - ACL get: parameters: - description: Network ID in: query name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.Acl' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List Acls in a network tags: - ACL post: consumes: - application/json parameters: - description: ACL policy details in: body name: body required: true schema: $ref: '#/definitions/models.Acl' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.Acl' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create Acl tags: - ACL put: consumes: - application/json parameters: - description: ACL update details in: body name: body required: true schema: $ref: '#/definitions/models.UpdateAclRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update Acl tags: - ACL /api/v1/acls/egress: get: parameters: - description: Egress ID in: query name: egress_id required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.Acl' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List Egress Acls tags: - ACL /api/v1/acls/policy_types: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.AclPolicyTypes' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List Acl Policy types tags: - ACL /api/v1/activity: get: parameters: - description: Filter by username in: query name: username type: string - description: Filter by network ID in: query name: network_id type: string - description: Start date in RFC3339 format in: query name: from_date type: string - description: End date in RFC3339 format in: query name: to_date type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.Event' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List all activity tags: - Activity /api/v1/client_conf/{network}: get: parameters: - description: Network ID in: path name: network required: true type: string responses: "200": description: WireGuard config file schema: type: string "403": description: Forbidden schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get config file HA configuration tags: - Config Files /api/v1/egress/presets: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List egress domain presets tags: - Egress /api/v1/egress: delete: parameters: - description: Egress resource ID in: query name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete Egress Resource tags: - Egress get: parameters: - description: Network identifier in: query name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.Egress' type: array "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List Egress Resources tags: - Egress post: consumes: - application/json parameters: - description: Egress request data in: body name: body required: true schema: $ref: '#/definitions/models.EgressReq' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.Egress' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create Egress Resource tags: - Egress put: consumes: - application/json parameters: - description: Egress request data in: body name: body required: true schema: $ref: '#/definitions/models.EgressReq' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.Egress' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update Egress Resource tags: - Egress /api/v1/enrollment-keys: get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.EnrollmentKey' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Lists all EnrollmentKeys for admins tags: - EnrollmentKeys post: consumes: - application/json parameters: - description: Enrollment Key parameters in: body name: body required: true schema: $ref: '#/definitions/models.APIEnrollmentKey' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.EnrollmentKey' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Creates an EnrollmentKey for hosts to register with server and join networks tags: - EnrollmentKeys /api/v1/enrollment-keys/{keyID}: delete: parameters: - description: Enrollment Key ID in: path name: keyID required: true type: string responses: "200": description: OK schema: type: string "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Deletes an EnrollmentKey from Netmaker server tags: - EnrollmentKeys put: consumes: - application/json parameters: - description: Enrollment Key ID in: path name: keyID required: true type: string - description: Enrollment Key parameters in: body name: body required: true schema: $ref: '#/definitions/models.APIEnrollmentKey' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.EnrollmentKey' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Updates an EnrollmentKey tags: - EnrollmentKeys /api/v1/extclients/{network}/bulk: delete: consumes: - application/json parameters: - description: Network ID in: path name: network required: true type: string - description: List of ext client IDs to delete in: body name: body required: true schema: $ref: '#/definitions/models.BulkDeleteRequest' produces: - application/json responses: "202": description: Accepted schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Bulk delete ext clients tags: - Config Files /api/v1/extclients/{network}/bulk/status: put: consumes: - application/json parameters: - description: Network ID in: path name: network required: true type: string - description: Client IDs and desired enabled state in: body name: body required: true schema: $ref: '#/definitions/models.BulkExtClientStatusUpdate' produces: - application/json responses: "202": description: Accepted schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Bulk update ext client enabled status tags: - Config Files /api/v1/fallback/host/{hostid}: put: parameters: - description: Host ID in: path name: hostid required: true type: string - description: Host update data in: body name: body required: true schema: $ref: '#/definitions/models.HostUpdate' responses: "200": description: updated host data schema: type: string "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Updates a Netclient host on Netmaker server tags: - Hosts /api/v1/flows: get: parameters: - description: Filter by network ID in: query name: network_id type: string - description: Start time in RFC3339 format in: query name: from type: string - description: End time in RFC3339 format in: query name: to type: string - description: Source type filter in: query name: src_type type: string - description: Source entity ID filter in: query name: src_entity_id type: string - description: Destination type filter in: query name: dst_type type: string - description: Destination entity ID filter in: query name: dst_entity_id type: string - description: Protocol filter in: query name: protocol type: string - description: Node ID filter in: query name: node_id type: string - description: Username filter in: query name: username type: string - description: Page number in: query name: page type: integer - description: Items per page (max 1000) in: query name: per_page type: integer produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/controllers.FlowRow' type: array "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List flow logs tags: - Traffic Logs /api/v1/host: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.HostPull' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Used by clients for "pull" command tags: - Hosts /api/v1/host/{hostid}/peer_info: get: parameters: - description: Host ID in: path name: hostid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.HostPeerInfo' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Fetches host peerinfo tags: - Hosts /api/v1/host/{hostid}/signalpeer: post: parameters: - description: Host ID in: path name: hostid required: true type: string - description: Signal data in: body name: body required: true schema: $ref: '#/definitions/models.Signal' responses: "200": description: OK schema: $ref: '#/definitions/models.Signal' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Send signal to peer tags: - Hosts /api/v1/host/register/{token}: post: consumes: - application/json parameters: - description: Enrollment Key Token in: path name: token required: true type: string - description: Host registration parameters in: body name: body required: true schema: $ref: '#/definitions/schema.Host' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.RegisterResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' summary: Handles a Netclient registration with server and add nodes accordingly tags: - EnrollmentKeys /api/v1/hosts: get: parameters: - collectionFormat: csv description: Filter by OS in: query items: enum: - windows - linux - darwin type: string name: os type: array - description: Search across fields in: query name: q type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ApiHost' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List all hosts tags: - Hosts /api/v1/hosts/bulk: delete: consumes: - application/json parameters: - description: List of host IDs to delete in: body name: body required: true schema: $ref: '#/definitions/models.BulkDeleteRequest' produces: - application/json responses: "202": description: Accepted schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Bulk delete hosts tags: - Hosts /api/v1/jit: delete: parameters: - description: Network ID in: query name: network required: true type: string - description: Grant ID to revoke in: query name: grant_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete/revoke a JIT grant tags: - JIT get: consumes: - application/json parameters: - description: Network ID in: query name: network required: true type: string - description: Filter by status (pending, approved, denied, expired) in: query name: status type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Network ID in: query name: network required: true type: string - description: JIT operation request in: body name: body required: true schema: $ref: '#/definitions/models.JITOperationRequest' produces: - application/json - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] - oauth: [] summary: Handle JIT operations (enable, disable, approve, deny) tags: - JIT - JIT post: consumes: - application/json parameters: - description: Network ID in: query name: network required: true type: string - description: Filter by status (pending, approved, denied, expired) in: query name: status type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Network ID in: query name: network required: true type: string - description: JIT operation request in: body name: body required: true schema: $ref: '#/definitions/models.JITOperationRequest' produces: - application/json - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] - oauth: [] summary: Handle JIT operations (enable, disable, approve, deny) tags: - JIT - JIT /api/v1/jit_user/networks: get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.UserJITNetworkStatus' type: array "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get user JIT networks status tags: - JIT /api/v1/jit_user/request: post: consumes: - application/json parameters: - description: Network ID in: query name: network required: true type: string - description: JIT access request in: body name: body required: true schema: $ref: '#/definitions/models.JITAccessRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.JITRequest' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Request JIT access to a network tags: - JIT /api/v1/legacy/nodes: delete: produces: - application/json responses: "200": description: Wiped all legacy nodes. schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete all legacy nodes from DB. tags: - Nodes /api/v1/nameserver: delete: consumes: - application/json parameters: - description: Nameserver ID in: query name: id required: true type: string produces: - application/json responses: "200": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete Nameserver Resource tags: - DNS get: parameters: - description: Network identifier in: query name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.Nameserver' type: array "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List Nameservers tags: - DNS post: consumes: - application/json parameters: - description: Nameserver request body in: body name: body required: true schema: $ref: '#/definitions/models.NameserverReq' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.Nameserver' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create Nameserver tags: - DNS put: consumes: - application/json parameters: - description: Nameserver request body in: body name: body required: true schema: $ref: '#/definitions/models.NameserverReq' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.Nameserver' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update Nameserver tags: - DNS /api/v1/nameserver/global: get: produces: - application/json responses: "200": description: OK schema: additionalProperties: $ref: '#/definitions/schema.Nameserver' type: object "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List Global Nameservers tags: - DNS /api/v1/network/activity: get: parameters: - description: Network ID required to get the network events in: query name: network_id required: true type: string - description: Start date in RFC3339 format in: query name: from_date type: string - description: End date in RFC3339 format in: query name: to_date type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.Event' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List network activity tags: - Activity /api/v1/networks/{network}/graph: get: parameters: - description: Network ID in: path name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ApiNode' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get network topology graph tags: - Networks /api/v1/networks/stats: get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.Network' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Lists all networks with stats tags: - Networks /api/v1/node/{network}/auto_relay/reset: post: parameters: - description: Network ID in: path name: network required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Reset AutoRelay for a network tags: - Auto Relay /api/v1/node/{nodeid}/auto_relay: delete: parameters: - description: Node ID in: path name: nodeid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.Node' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete autorelay node tags: - Auto Relay get: parameters: - description: Node ID in: path name: nodeid required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.Node' type: array "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get auto relay nodes tags: - Auto Relay post: parameters: - description: Node ID in: path name: nodeid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.Node' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create AutoRelay node tags: - Auto Relay /api/v1/node/{nodeid}/auto_relay_check: get: consumes: - application/json parameters: - description: Node ID in: path name: nodeid required: true type: string - description: autorelay request in: body name: body required: true schema: $ref: '#/definitions/models.AutoRelayMeReq' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Check AutoRelay context tags: - Auto Relay /api/v1/node/{nodeid}/auto_relay_me: post: consumes: - application/json parameters: - description: Node ID in: path name: nodeid required: true type: string - description: AutoRelay request in: body name: body required: true schema: $ref: '#/definitions/models.AutoRelayMeReq' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: AutoRelay me tags: - Auto Relay put: consumes: - application/json parameters: - description: Node ID in: path name: nodeid required: true type: string - description: AutoRelay request in: body name: body required: true schema: $ref: '#/definitions/models.AutoRelayMeReq' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update AutoRelay me tags: - Auto Relay /api/v1/nodes/{network}/bulk: delete: consumes: - application/json parameters: - description: Network ID in: path name: network required: true type: string - description: List of node IDs to delete in: body name: body required: true schema: $ref: '#/definitions/models.BulkDeleteRequest' produces: - application/json responses: "202": description: Accepted schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Bulk delete nodes tags: - Nodes /api/v1/nodes/{network}/bulk/status: put: consumes: - application/json parameters: - description: Network ID in: path name: network required: true type: string - description: Node IDs and desired connected state in: body name: body required: true schema: $ref: '#/definitions/models.BulkNodeStatusUpdate' produces: - application/json responses: "202": description: Accepted schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Bulk update node connected status tags: - Nodes /api/v1/nodes/{network}/status: get: parameters: - description: Network ID in: path name: network required: true type: string produces: - application/json responses: "200": description: OK schema: additionalProperties: $ref: '#/definitions/models.NodeStatus' type: object "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get all nodes status on the network tags: - Nodes /api/v1/nodes/migrate: put: consumes: - application/json parameters: - description: Migration data in: body name: body required: true schema: $ref: '#/definitions/models.MigrationData' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.HostPull' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Used to migrate a legacy node. tags: - Nodes /api/v1/pending_hosts: get: parameters: - description: Network ID in: query name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.PendingHost' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List pending hosts in a network tags: - Hosts /api/v1/pending_hosts/approve/{id}: post: parameters: - description: Pending Host ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ApiNode' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Approve pending host in a network tags: - Hosts /api/v1/pending_hosts/reject/{id}: post: parameters: - description: Pending Host ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.PendingHost' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Reject pending host in a network tags: - Hosts /api/v1/posture_check: delete: parameters: - description: Posture Check ID in: query name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.PostureCheck' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete Posture Check tags: - Posture Check get: parameters: - description: Network ID in: query name: network required: true type: string - description: Posture Check ID to fetch a specific check in: query name: id type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.PostureCheck' type: array "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List Posture Checks tags: - Posture Check post: consumes: - application/json parameters: - description: Posture Check payload in: body name: body required: true schema: $ref: '#/definitions/schema.PostureCheck' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.PostureCheck' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create Posture Check tags: - Posture Check put: consumes: - application/json parameters: - description: Posture Check payload in: body name: body required: true schema: $ref: '#/definitions/schema.PostureCheck' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.PostureCheck' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update Posture Check tags: - Posture Check /api/v1/posture_check/attrs: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List Posture Checks Available Attributes tags: - Posture Check /api/v1/posture_check/violations: get: parameters: - description: Network ID in: query name: network required: true type: string - description: If 'true', list violated users instead of nodes in: query name: users type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ApiNode' type: array "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List Posture Check violated Nodes tags: - Posture Check /api/v1/tags: delete: parameters: - description: Tag ID to delete in: query name: tag_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete Tag tags: - TAG get: parameters: - description: Network ID in: query name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.TagListRespNodes' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List Tags in a network tags: - TAG post: consumes: - application/json parameters: - description: Tag creation request in: body name: body required: true schema: $ref: '#/definitions/models.CreateTagReq' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.TagListRespNodes' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create Tag tags: - TAG put: consumes: - application/json parameters: - description: Tag update request in: body name: body required: true schema: $ref: '#/definitions/models.UpdateTagReq' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.TagListRespNodes' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update Tag tags: - TAG /api/v1/user/activity: get: parameters: - description: Username required to get the user events in: query name: username required: true type: string - description: Start date in RFC3339 format in: query name: from_date type: string - description: End date in RFC3339 format in: query name: to_date type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.Event' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List user activity tags: - Activity /api/v1/users: get: parameters: - description: Username in: query name: username required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ReturnUser' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get an individual user with role info tags: - Users /api/v1/users/access_token: delete: parameters: - description: Token ID in: query name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete user access tokens tags: - Users get: parameters: - description: Username in: query name: username required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.UserAccessToken' type: array "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get user access tokens tags: - Users post: consumes: - application/json parameters: - description: Access token request in: body name: body required: true schema: $ref: '#/definitions/schema.UserAccessToken' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessfulUserLoginResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create a user API access token tags: - Users /api/v1/users/add_network_user: put: parameters: - description: Username in: query name: username required: true type: string - description: Network ID in: query name: network_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.User' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Add user to network tags: - Users /api/v1/users/bulk: delete: consumes: - application/json parameters: - description: List of usernames to delete in: body name: body required: true schema: $ref: '#/definitions/models.BulkDeleteRequest' - description: Force delete associated ext-client configs in: query name: force_delete_configs type: boolean produces: - application/json responses: "202": description: Accepted schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Bulk delete users tags: - Users /api/v1/users/bulk/status: post: consumes: - application/json parameters: - description: List of usernames and desired status in: body name: body required: true schema: $ref: '#/definitions/models.BulkUserStatusUpdate' - description: Also toggle associated ext-client connectivity in: query name: force_toggle_configs type: boolean produces: - application/json responses: "202": description: Accepted schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Bulk disable/enable user accounts tags: - Users /api/v1/users/group: delete: parameters: - description: Group ID required to delete the group in: query name: group_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete user group tags: - Users get: parameters: - description: Group ID in: query name: group_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.UserGroup' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get a user group tags: - Users post: consumes: - application/json parameters: - description: Create group request in: body name: body required: true schema: $ref: '#/definitions/schema.UserGroup' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.UserGroup' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Create a user group tags: - Users put: consumes: - application/json parameters: - description: User group update data in: body name: body required: true schema: $ref: '#/definitions/schema.UserGroup' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.UserGroup' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Update a user group tags: - Users /api/v1/users/groups: get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.UserGroup' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List all user groups tags: - Users /api/v1/users/groups/network: get: parameters: - description: Network ID in: query name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.UserGroup' type: array "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List user groups with access to a network tags: - Users /api/v1/users/invite: delete: parameters: - description: Invitee email to delete in: query name: invitee_email required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete a pending user invite tags: - Users get: parameters: - description: Invitee email in: query name: email required: true type: string - description: Invite code in: query name: invite_code required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' summary: Verify user invite tags: - Users post: consumes: - application/json parameters: - description: Invite users request in: body name: body required: true schema: $ref: '#/definitions/models.InviteUsersReq' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Invite users tags: - Users /api/v1/users/invite-signup: post: consumes: - application/json parameters: - description: Invitee email in: query name: email required: true type: string - description: Invite code in: query name: invite_code required: true type: string - description: User signup data in: body name: body required: true schema: $ref: '#/definitions/models.User' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' summary: User signup via invite tags: - Users /api/v1/users/invites: delete: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Delete all pending user invites tags: - Users get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.UserInvite' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List all pending user invites tags: - Users /api/v1/users/logout: post: parameters: - description: Username in: query name: username required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Log out a user tags: - Users /api/v1/users/network: get: parameters: - description: Network ID in: query name: network required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ReturnUser' type: array "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List users with access to a network tags: - Users /api/v1/users/network_ip: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.UserIPMap' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List users network IP mappings tags: - Users /api/v1/users/remove_network_user: put: parameters: - description: Username in: query name: username required: true type: string - description: Network ID in: query name: network_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.User' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Remove user from network tags: - Users /api/v1/users/role: get: parameters: - description: Role ID required to get the role details in: query name: role_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/schema.UserRole' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: Get user role permission template tags: - Users /api/v1/users/roles: get: parameters: - description: If true, lists platform roles. Otherwise, lists network roles. in: query name: platform type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.UserRole' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List all user roles tags: - Users /api/v1/users/unassigned_network_users: get: parameters: - description: Network ID in: query name: network_id required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ReturnUser' type: array "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List unassigned network users tags: - Users /api/v2/users: get: parameters: - description: Filter by Account Status enum: - enabled - disabled in: query name: account_status type: string - description: Filter by MFA Status enum: - enabled - disabled in: query name: mfa_status type: string - collectionFormat: csv description: Filter by Role in: query items: enum: - super-admin - admin - platform-user - service-user - auditor type: string name: role type: array - description: Filter by Auth Type enum: - basic - oauth in: query name: auth_type type: string - description: Search across fields in: query name: q type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ReturnUser' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List all users tags: - Users /api/v2/users/groups: get: parameters: - description: Filter Default / Custom Groups enum: - "true" - "false" in: query name: default type: string - description: Search across fields in: query name: q type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/schema.UserGroup' type: array "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - oauth: [] summary: List all user groups tags: - Users swagger: "2.0" tags: - description: | Most actions that can be performed via API can be performed via UI. We recommend managing your networks using the official netmaker-ui project. However, Netmaker can also be run without the UI, and all functions can be achieved via API calls. If your use case requires using Netmaker without the UI or you need to do some troubleshooting/advanced configuration, using the API directly may help. name: APIUsage - description: | API calls are primarily authenticated using a user authentication token. This token should be included in the header as follows: -H "Authorization: Bearer " To obtain YOUR_AUTH_TOKEN: Call the api/users/adm/authenticate endpoint (see documentation below for details). Note: While a MasterKey exists (configurable via env var or config file), it should be considered a backup option, used only when server access is lost. By default, this key is "secret key," but it's crucial to change this and keep it secure in your instance. For more information on configuration and security best practices, refer to the [Netmaker documentation](https://docs.netmaker.io/). name: Authentication - description: | Check out our [Pricing](https://www.netmaker.io/pricing). And Feel Free to [Contact Us](https://www.netmaker.io/contact) if you have any questions or need some clarifications. name: Pricing