Files
netmaker/swagger.yaml
T
Abhishek Kondur f8a0cfd744 v1.5.1: release notes (#3950)
* v1.5.1: release notes

* v1.5.1: release notes

* v1.5.1: release notes

* v1.5.1: release notes

* v1.5.1: release notes

* v1.5.1: update version tag

* v1.5.1: update version tag
2026-03-31 20:01:57 +05:30

8120 lines
190 KiB
YAML

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
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
firewallinuse:
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
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
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
domain:
type: string
id:
type: string
is_internet_gateway:
type: boolean
mode:
$ref: '#/definitions/schema.EgressNATMode'
name:
type: string
nat:
type: boolean
network:
type: string
nodes:
additionalProperties:
type: integer
type: object
range:
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
domain:
type: string
domain_ans:
items:
type: string
type: array
id:
type: string
mode:
$ref: '#/definitions/schema.EgressNATMode'
name:
type: string
nat:
type: boolean
network:
type: string
nodes:
$ref: '#/definitions/datatypes.JSONMap'
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.5.1
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:
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:
delete:
parameters:
- description: Role ID required to delete the role
in: query
name: role_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 role permission template
tags:
- Users
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
post:
consumes:
- application/json
parameters:
- description: User role template
in: body
name: body
required: true
schema:
$ref: '#/definitions/schema.UserRole'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/schema.UserRole'
"400":
description: Bad Request
schema:
$ref: '#/definitions/models.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/models.ErrorResponse'
security:
- oauth: []
summary: Create user role permission template
tags:
- Users
put:
consumes:
- application/json
parameters:
- description: User role template
in: body
name: body
required: true
schema:
$ref: '#/definitions/schema.UserRole'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/schema.UserRole'
"400":
description: Bad Request
schema:
$ref: '#/definitions/models.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/models.ErrorResponse'
security:
- oauth: []
summary: Update 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 <YOUR_AUTH_TOKEN>"
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