> For the complete documentation index, see [llms.txt](https://learn.netmaker.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.netmaker.io/api-spec/hosts.md).

# Hosts

## GET /api/hosts

> List all hosts

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/hosts":{"get":{"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/models.ApiHost"},"type":"array"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"List all hosts","tags":["Hosts"]}}},"components":{"schemas":{"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":"#/components/schemas/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.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## PUT /api/hosts/{hostid}

> Updates a Netclient host on Netmaker server

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/hosts/{hostid}":{"put":{"parameters":[{"schema":{"type":"string"},"description":"Host ID","in":"path","name":"hostid","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ApiHost"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"Updates a Netclient host on Netmaker server","tags":["Hosts"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ApiHost"}}},"description":"New host data","required":true}}}},"components":{"schemas":{"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":"#/components/schemas/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.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## DELETE /api/hosts/{hostid}

> Deletes a Netclient host from Netmaker server

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/hosts/{hostid}":{"delete":{"parameters":[{"schema":{"type":"string"},"description":"Host ID","in":"path","name":"hostid","required":true},{"schema":{"type":"boolean"},"description":"Force delete","in":"query","name":"force"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ApiHost"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"Deletes a Netclient host from Netmaker server","tags":["Hosts"]}}},"components":{"schemas":{"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":"#/components/schemas/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.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## PUT /api/hosts/{hostid}/keys

> Update keys for a host

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/hosts/{hostid}/keys":{"put":{"parameters":[{"schema":{"type":"string"},"description":"Host ID","in":"path","name":"hostid","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"Update keys for a host","tags":["Hosts"]}}},"components":{"schemas":{"models.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## POST /api/hosts/{hostid}/networks/{network}

> To Add Host To Network

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/hosts/{hostid}/networks/{network}":{"post":{"parameters":[{"schema":{"type":"string"},"description":"Host ID","in":"path","name":"hostid","required":true},{"schema":{"type":"string"},"description":"Network name","in":"path","name":"network","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"To Add Host To Network","tags":["Hosts"]}}},"components":{"schemas":{"models.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## DELETE /api/hosts/{hostid}/networks/{network}

> To Remove Host from Network

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/hosts/{hostid}/networks/{network}":{"delete":{"parameters":[{"schema":{"type":"string"},"description":"Host ID","in":"path","name":"hostid","required":true},{"schema":{"type":"string"},"description":"Network name","in":"path","name":"network","required":true},{"schema":{"type":"boolean"},"description":"Force delete","in":"query","name":"force"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"To Remove Host from Network","tags":["Hosts"]}}},"components":{"schemas":{"models.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## POST /api/hosts/{hostid}/sync

> Requests a host to pull

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/hosts/{hostid}/sync":{"post":{"parameters":[{"schema":{"type":"string"},"description":"Host ID","in":"path","name":"hostid","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"Requests a host to pull","tags":["Hosts"]}}},"components":{"schemas":{"models.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## PUT /api/hosts/{hostid}/upgrade

> Upgrade a host

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/hosts/{hostid}/upgrade":{"put":{"parameters":[{"schema":{"type":"string"},"description":"Host ID","in":"path","name":"hostid","required":true},{"schema":{"type":"boolean"},"description":"Force upgrade","in":"query","name":"force"}],"responses":{"200":{"description":"passed message to upgrade host","content":{"application/json":{"schema":{"type":"string"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"Upgrade a host","tags":["Hosts"]}}},"components":{"schemas":{"models.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## PUT /api/hosts/keys

> Update keys for all hosts

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/hosts/keys":{"put":{"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"Update keys for all hosts","tags":["Hosts"]}}},"components":{"schemas":{"models.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## POST /api/hosts/sync

> Requests all the hosts to pull

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/hosts/sync":{"post":{"responses":{"200":{"description":"sync all hosts request received","content":{"application/json":{"schema":{"type":"string"}}}}},"summary":"Requests all the hosts to pull","tags":["Hosts"]}}}}
```

## POST /api/hosts/upgrade

> Requests all the hosts to upgrade their version

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/hosts/upgrade":{"post":{"parameters":[{"schema":{"type":"boolean"},"description":"Force upgrade","in":"query","name":"force"}],"responses":{"200":{"description":"upgrade all hosts request received","content":{"application/json":{"schema":{"type":"string"}}}}},"summary":"Requests all the hosts to upgrade their version","tags":["Hosts"]}}}}
```

## PUT /api/v1/fallback/host/{hostid}

> Updates a Netclient host on Netmaker server

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/v1/fallback/host/{hostid}":{"put":{"parameters":[{"schema":{"type":"string"},"description":"Host ID","in":"path","name":"hostid","required":true}],"responses":{"200":{"description":"updated host data","content":{"application/json":{"schema":{"type":"string"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"Updates a Netclient host on Netmaker server","tags":["Hosts"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.HostUpdate"}}},"description":"Host update data","required":true}}}},"components":{"schemas":{"models.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"},"models.HostUpdate":{"properties":{"action":{"$ref":"#/components/schemas/models.HostMqAction"},"egressDomain":{"$ref":"#/components/schemas/models.EgressDomain"},"host":{"$ref":"#/components/schemas/models.Host"},"newMetrics":{"$ref":"#/components/schemas/models.Metrics"},"node":{"$ref":"#/components/schemas/models.Node"},"signal":{"$ref":"#/components/schemas/models.Signal"}},"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"},"models.EgressDomain":{"properties":{"domain":{"type":"string"},"host":{"$ref":"#/components/schemas/models.Host"},"id":{"type":"string"},"node":{"$ref":"#/components/schemas/models.Node"}},"type":"object"},"models.Host":{"properties":{"autoupdate":{"type":"boolean"},"country_code":{"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":"#/components/schemas/models.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":{"items":{"type":"integer"},"type":"array"},"traffickeypublic":{"items":{"type":"integer"},"type":"array"},"turn_endpoint":{"$ref":"#/components/schemas/netip.AddrPort"},"verbosity":{"type":"integer"},"version":{"type":"string"},"wg_public_listen_port":{"type":"integer"}},"type":"object"},"models.Iface":{"properties":{"address":{"$ref":"#/components/schemas/net.IPNet"},"addressString":{"type":"string"},"name":{"type":"string"}},"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"},"netip.AddrPort":{"type":"object"},"models.Node":{"properties":{"action":{"type":"string"},"additional_rag_ips":{"items":{"type":"number"},"type":"array"},"address":{"$ref":"#/components/schemas/net.IPNet"},"address6":{"$ref":"#/components/schemas/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"},"defaultacl":{"description":"== PRO ==","type":"string"},"egressgatewaynatenabled":{"type":"boolean"},"egressgatewayranges":{"items":{"type":"string"},"type":"array"},"egressgatewayrequest":{"$ref":"#/components/schemas/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":"#/components/schemas/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":"#/components/schemas/net.IPNet"},"location":{"description":"Format: \"lat,lon\"","type":"string"},"metadata":{"type":"string"},"network":{"type":"string"},"networkrange":{"type":"integer"},"networkrange6":{"type":"number"},"node_status":{"$ref":"#/components/schemas/models.NodeStatus"},"ownerid":{"type":"string"},"pendingdelete":{"type":"boolean"},"posture_check_violation_severity_level":{"$ref":"#/components/schemas/models.Severity"},"posture_check_violations":{"items":{"$ref":"#/components/schemas/models.Violation"},"type":"array"},"relayedby":{"type":"string"},"relaynodes":{"items":{"type":"string"},"type":"array"},"server":{"type":"string"},"static_node":{"$ref":"#/components/schemas/models.ExtClient"},"tags":{"additionalProperties":{"type":"object"},"type":"object"}},"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":"#/components/schemas/models.EgressRangeMetric"},"type":"array"}},"type":"object"},"models.EgressRangeMetric":{"properties":{"nat":{"type":"boolean"},"nat_mode":{"$ref":"#/components/schemas/models.EgressNATMode"},"network":{"type":"string"},"route_metric":{"description":"preffered range 1-999","type":"integer"},"virtual_network":{"type":"string"}},"type":"object"},"models.EgressNATMode":{"enum":["virtual_nat","direct_nat"],"type":"string"},"models.InetNodeReq":{"properties":{"inet_node_client_ids":{"items":{"type":"string"},"type":"array"}},"type":"object"},"models.NodeStatus":{"enum":["online","offline","warning","error","unknown","disconnected"],"type":"string"},"models.Severity":{"enum":[0,1,2,3,4],"type":"integer"},"models.Violation":{"properties":{"attribute":{"type":"string"},"check_id":{"type":"string"},"message":{"type":"string"},"name":{"type":"string"},"severity":{"$ref":"#/components/schemas/models.Severity"}},"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":"#/components/schemas/models.Severity"},"posture_check_violations":{"items":{"$ref":"#/components/schemas/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.Metrics":{"properties":{"connectivity":{"additionalProperties":{"$ref":"#/components/schemas/models.Metric"},"type":"object"},"network":{"type":"string"},"node_id":{"type":"string"},"node_name":{"type":"string"},"updated_at":{"type":"string"}},"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.Signal":{"properties":{"action":{"$ref":"#/components/schemas/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"}}}}
```

## GET /api/v1/host

> Used by clients for "pull" command

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/v1/host":{"get":{"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.HostPull"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"Used by clients for \"pull\" command","tags":["Hosts"]}}},"components":{"schemas":{"models.HostPull":{"properties":{"address_identity_map":{"additionalProperties":{"$ref":"#/components/schemas/models.PeerIdentity"},"type":"object"},"auto_relay_nodes":{"additionalProperties":{"items":{"$ref":"#/components/schemas/models.Node"},"type":"array"},"type":"object"},"change_default_gw":{"type":"boolean"},"default_gw_ip":{"items":{"type":"integer"},"type":"array"},"dns_nameservers":{"items":{"$ref":"#/components/schemas/models.Nameserver"},"type":"array"},"egress_network_routes":{"items":{"$ref":"#/components/schemas/models.EgressNetworkRoutes"},"type":"array"},"egress_with_domains":{"items":{"$ref":"#/components/schemas/models.EgressDomain"},"type":"array"},"endpoint_detection":{"type":"boolean"},"fw_update":{"$ref":"#/components/schemas/models.FwUpdate"},"gw_nodes":{"additionalProperties":{"items":{"$ref":"#/components/schemas/models.Node"},"type":"array"},"type":"object"},"host":{"$ref":"#/components/schemas/models.Host"},"host_network_info":{"$ref":"#/components/schemas/models.HostInfoMap"},"is_inet_gw":{"type":"boolean"},"name_servers":{"items":{"type":"string"},"type":"array"},"nodes":{"items":{"$ref":"#/components/schemas/models.Node"},"type":"array"},"peer_ids":{"$ref":"#/components/schemas/models.PeerMap"},"peers":{"items":{"$ref":"#/components/schemas/wgtypes.PeerConfig"},"type":"array"},"replace_peers":{"type":"boolean"},"server_config":{"$ref":"#/components/schemas/models.ServerConfig"}},"type":"object"},"models.PeerIdentity":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"$ref":"#/components/schemas/models.PeerType"}},"type":"object"},"models.PeerType":{"enum":[0,1,2,3],"type":"integer"},"models.Node":{"properties":{"action":{"type":"string"},"additional_rag_ips":{"items":{"type":"number"},"type":"array"},"address":{"$ref":"#/components/schemas/net.IPNet"},"address6":{"$ref":"#/components/schemas/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"},"defaultacl":{"description":"== PRO ==","type":"string"},"egressgatewaynatenabled":{"type":"boolean"},"egressgatewayranges":{"items":{"type":"string"},"type":"array"},"egressgatewayrequest":{"$ref":"#/components/schemas/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":"#/components/schemas/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":"#/components/schemas/net.IPNet"},"location":{"description":"Format: \"lat,lon\"","type":"string"},"metadata":{"type":"string"},"network":{"type":"string"},"networkrange":{"type":"integer"},"networkrange6":{"type":"number"},"node_status":{"$ref":"#/components/schemas/models.NodeStatus"},"ownerid":{"type":"string"},"pendingdelete":{"type":"boolean"},"posture_check_violation_severity_level":{"$ref":"#/components/schemas/models.Severity"},"posture_check_violations":{"items":{"$ref":"#/components/schemas/models.Violation"},"type":"array"},"relayedby":{"type":"string"},"relaynodes":{"items":{"type":"string"},"type":"array"},"server":{"type":"string"},"static_node":{"$ref":"#/components/schemas/models.ExtClient"},"tags":{"additionalProperties":{"type":"object"},"type":"object"}},"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"},"models.EgressGatewayRequest":{"properties":{"natenabled":{"type":"string"},"netid":{"type":"string"},"nodeid":{"type":"string"},"ranges":{"items":{"type":"string"},"type":"array"},"ranges_with_metric":{"items":{"$ref":"#/components/schemas/models.EgressRangeMetric"},"type":"array"}},"type":"object"},"models.EgressRangeMetric":{"properties":{"nat":{"type":"boolean"},"nat_mode":{"$ref":"#/components/schemas/models.EgressNATMode"},"network":{"type":"string"},"route_metric":{"description":"preffered range 1-999","type":"integer"},"virtual_network":{"type":"string"}},"type":"object"},"models.EgressNATMode":{"enum":["virtual_nat","direct_nat"],"type":"string"},"models.InetNodeReq":{"properties":{"inet_node_client_ids":{"items":{"type":"string"},"type":"array"}},"type":"object"},"models.NodeStatus":{"enum":["online","offline","warning","error","unknown","disconnected"],"type":"string"},"models.Severity":{"enum":[0,1,2,3,4],"type":"integer"},"models.Violation":{"properties":{"attribute":{"type":"string"},"check_id":{"type":"string"},"message":{"type":"string"},"name":{"type":"string"},"severity":{"$ref":"#/components/schemas/models.Severity"}},"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":"#/components/schemas/models.Severity"},"posture_check_violations":{"items":{"$ref":"#/components/schemas/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.Nameserver":{"properties":{"ips":{"items":{"type":"string"},"type":"array"},"is_fallback":{"type":"boolean"},"is_search_domain":{"type":"boolean"},"match_domain":{"type":"string"}},"type":"object"},"models.EgressNetworkRoutes":{"properties":{"egress_gw_addr":{"$ref":"#/components/schemas/net.IPNet"},"egress_gw_addr6":{"$ref":"#/components/schemas/net.IPNet"},"egress_ranges":{"items":{"type":"string"},"type":"array"},"egress_ranges_metric":{"items":{"$ref":"#/components/schemas/models.EgressRangeMetric"},"type":"array"},"network":{"type":"string"},"node_addr":{"$ref":"#/components/schemas/net.IPNet"},"node_addr6":{"$ref":"#/components/schemas/net.IPNet"},"peer_key":{"type":"string"}},"type":"object"},"models.EgressDomain":{"properties":{"domain":{"type":"string"},"host":{"$ref":"#/components/schemas/models.Host"},"id":{"type":"string"},"node":{"$ref":"#/components/schemas/models.Node"}},"type":"object"},"models.Host":{"properties":{"autoupdate":{"type":"boolean"},"country_code":{"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":"#/components/schemas/models.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":{"items":{"type":"integer"},"type":"array"},"traffickeypublic":{"items":{"type":"integer"},"type":"array"},"turn_endpoint":{"$ref":"#/components/schemas/netip.AddrPort"},"verbosity":{"type":"integer"},"version":{"type":"string"},"wg_public_listen_port":{"type":"integer"}},"type":"object"},"models.Iface":{"properties":{"address":{"$ref":"#/components/schemas/net.IPNet"},"addressString":{"type":"string"},"name":{"type":"string"}},"type":"object"},"netip.AddrPort":{"type":"object"},"models.FwUpdate":{"properties":{"acl_rules":{"additionalProperties":{"$ref":"#/components/schemas/models.AclRule"},"type":"object"},"allow_all":{"type":"boolean"},"egress_info":{"additionalProperties":{"$ref":"#/components/schemas/models.EgressInfo"},"type":"object"},"ingress_info":{"additionalProperties":{"$ref":"#/components/schemas/models.IngressInfo"},"type":"object"},"is_egress_gw":{"type":"boolean"},"is_ingress_gw":{"type":"boolean"},"networks":{"items":{"$ref":"#/components/schemas/models.AclRule"},"type":"array"}},"type":"object"},"models.AclRule":{"properties":{"allowed":{"type":"boolean"},"allowed_ports":{"items":{"type":"string"},"type":"array"},"allowed_protocols":{"allOf":[{"$ref":"#/components/schemas/models.Protocol"}],"description":"tcp, udp, etc."},"direction":{"allOf":[{"$ref":"#/components/schemas/models.AllowedTrafficDirection"}],"description":"single or two-way"},"dst":{"items":{"$ref":"#/components/schemas/net.IPNet"},"type":"array"},"dst6":{"items":{"$ref":"#/components/schemas/net.IPNet"},"type":"array"},"id":{"type":"string"},"ip_list":{"items":{"$ref":"#/components/schemas/net.IPNet"},"type":"array"},"ip6_list":{"items":{"$ref":"#/components/schemas/net.IPNet"},"type":"array"}},"type":"object"},"models.Protocol":{"enum":["all","udp","tcp","icmp"],"type":"string"},"models.AllowedTrafficDirection":{"enum":[0,1],"type":"integer"},"models.EgressInfo":{"properties":{"egress_fw_rules":{"additionalProperties":{"$ref":"#/components/schemas/models.AclRule"},"type":"object"},"egress_gateway_cfg":{"$ref":"#/components/schemas/models.EgressGatewayRequest"},"egress_gw_addr":{"$ref":"#/components/schemas/net.IPNet"},"egress_gw_addr6":{"$ref":"#/components/schemas/net.IPNet"},"egress_id":{"type":"string"},"network":{"$ref":"#/components/schemas/net.IPNet"},"network6":{"$ref":"#/components/schemas/net.IPNet"}},"type":"object"},"models.IngressInfo":{"properties":{"egress_ranges":{"items":{"$ref":"#/components/schemas/net.IPNet"},"type":"array"},"egress_ranges6":{"items":{"$ref":"#/components/schemas/net.IPNet"},"type":"array"},"ingress_id":{"type":"string"},"network":{"$ref":"#/components/schemas/net.IPNet"},"network6":{"$ref":"#/components/schemas/net.IPNet"},"rules":{"items":{"$ref":"#/components/schemas/models.FwRule"},"type":"array"},"static_node_ips":{"items":{"items":{"type":"integer"},"type":"array"},"type":"array"}},"type":"object"},"models.FwRule":{"properties":{"allow":{"type":"boolean"},"allowed_ports":{"items":{"type":"string"},"type":"array"},"allowed_protocols":{"allOf":[{"$ref":"#/components/schemas/models.Protocol"}],"description":"tcp, udp, etc."},"dst_ip":{"$ref":"#/components/schemas/net.IPNet"},"src_ip":{"$ref":"#/components/schemas/net.IPNet"}},"type":"object"},"models.HostInfoMap":{"additionalProperties":{"$ref":"#/components/schemas/models.HostNetworkInfo"},"type":"object"},"models.HostNetworkInfo":{"properties":{"interfaces":{"items":{"$ref":"#/components/schemas/models.Iface"},"type":"array"},"is_static":{"type":"boolean"},"is_static_port":{"type":"boolean"},"listen_port":{"type":"integer"},"version":{"type":"string"}},"type":"object"},"models.PeerMap":{"additionalProperties":{"$ref":"#/components/schemas/models.IDandAddr"},"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"},"wgtypes.PeerConfig":{"properties":{"allowedIPs":{"description":"AllowedIPs specifies a list of allowed IP addresses in CIDR notation\nfor this peer.","items":{"$ref":"#/components/schemas/net.IPNet"},"type":"array"},"endpoint":{"allOf":[{"$ref":"#/components/schemas/net.UDPAddr"}],"description":"Endpoint specifies the endpoint of this peer entry, if not nil."},"persistentKeepaliveInterval":{"description":"PersistentKeepaliveInterval specifies the persistent keepalive interval\nfor this peer, if not nil.\n\nA 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.\n\nA non-nil, zero-value Key will clear the preshared key.","items":{"type":"integer"},"type":"array"},"publicKey":{"description":"PublicKey specifies the public key of this peer.  PublicKey is a\nmandatory field for all PeerConfigs.","items":{"type":"integer"},"type":"array"},"remove":{"description":"Remove specifies if the peer with this public key should be removed\nfrom a device's peer list.","type":"boolean"},"replaceAllowedIPs":{"description":"ReplaceAllowedIPs specifies if the allowed IPs specified in this peer\nconfiguration should replace any existing ones, instead of appending them\nto the allowed IPs list.","type":"boolean"},"updateOnly":{"description":"UpdateOnly specifies that an operation will only occur on this peer\nif the peer already exists as part of the interface.","type":"boolean"}},"type":"object"},"net.UDPAddr":{"properties":{"ip":{"items":{"type":"integer"},"type":"array"},"port":{"type":"integer"},"zone":{"description":"IPv6 scoped addressing zone","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.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## GET /api/v1/host/{hostid}/peer\_info

> Fetches host peerinfo

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/v1/host/{hostid}/peer_info":{"get":{"parameters":[{"schema":{"type":"string"},"description":"Host ID","in":"path","name":"hostid","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.HostPeerInfo"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"Fetches host peerinfo","tags":["Hosts"]}}},"components":{"schemas":{"models.HostPeerInfo":{"properties":{"network_peers":{"additionalProperties":{"$ref":"#/components/schemas/models.PeerMap"},"type":"object"}},"type":"object"},"models.PeerMap":{"additionalProperties":{"$ref":"#/components/schemas/models.IDandAddr"},"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.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## POST /api/v1/host/{hostid}/signalpeer

> Send signal to peer

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/v1/host/{hostid}/signalpeer":{"post":{"parameters":[{"schema":{"type":"string"},"description":"Host ID","in":"path","name":"hostid","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.Signal"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"Send signal to peer","tags":["Hosts"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.Signal"}}},"description":"Signal data","required":true}}}},"components":{"schemas":{"models.Signal":{"properties":{"action":{"$ref":"#/components/schemas/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"},"models.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## GET /api/v1/pending\_hosts

> List pending hosts in a network

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/v1/pending_hosts":{"get":{"parameters":[{"schema":{"type":"string"},"description":"Network ID","in":"query","name":"network","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/schema.PendingHost"},"type":"array"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"List pending hosts in a network","tags":["Hosts"]}}},"components":{"schemas":{"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"},"models.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## POST /api/v1/pending\_hosts/approve/{id}

> Approve pending host in a network

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/v1/pending_hosts/approve/{id}":{"post":{"parameters":[{"schema":{"type":"string"},"description":"Pending Host ID","in":"path","name":"id","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ApiNode"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"Approve pending host in a network","tags":["Hosts"]}}},"components":{"schemas":{"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":"#/components/schemas/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":"#/components/schemas/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":"#/components/schemas/models.Severity"},"posture_check_violations":{"items":{"$ref":"#/components/schemas/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":"#/components/schemas/models.ExtClient"},"status":{"$ref":"#/components/schemas/models.NodeStatus"},"tags":{"additionalProperties":{"type":"object"},"type":"object"}},"required":["hostid","id"],"type":"object"},"models.EgressRangeMetric":{"properties":{"nat":{"type":"boolean"},"nat_mode":{"$ref":"#/components/schemas/models.EgressNATMode"},"network":{"type":"string"},"route_metric":{"description":"preffered range 1-999","type":"integer"},"virtual_network":{"type":"string"}},"type":"object"},"models.EgressNATMode":{"enum":["virtual_nat","direct_nat"],"type":"string"},"models.InetNodeReq":{"properties":{"inet_node_client_ids":{"items":{"type":"string"},"type":"array"}},"type":"object"},"models.Severity":{"enum":[0,1,2,3,4],"type":"integer"},"models.Violation":{"properties":{"attribute":{"type":"string"},"check_id":{"type":"string"},"message":{"type":"string"},"name":{"type":"string"},"severity":{"$ref":"#/components/schemas/models.Severity"}},"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":"#/components/schemas/models.Severity"},"posture_check_violations":{"items":{"$ref":"#/components/schemas/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.NodeStatus":{"enum":["online","offline","warning","error","unknown","disconnected"],"type":"string"},"models.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```

## POST /api/v1/pending\_hosts/reject/{id}

> Reject pending host in a network

```json
{"openapi":"3.1.1","info":{"title":"NetMaker","version":"1.4.0"},"tags":[],"servers":[{"url":"http://api.demo.netmaker.io"}],"security":[{"oauth":[]}],"paths":{"/api/v1/pending_hosts/reject/{id}":{"post":{"parameters":[{"schema":{"type":"string"},"description":"Pending Host ID","in":"path","name":"id","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/schema.PendingHost"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models.ErrorResponse"}}}}},"summary":"Reject pending host in a network","tags":["Hosts"]}}},"components":{"schemas":{"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"},"models.ErrorResponse":{"properties":{"code":{"type":"integer"},"message":{"type":"string"},"response":{}},"type":"object"}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://learn.netmaker.io/api-spec/hosts.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
