diff --git a/src/pages/ipa/resources/accounts.mdx b/src/pages/ipa/resources/accounts.mdx new file mode 100644 index 00000000..fcd770f6 --- /dev/null +++ b/src/pages/ipa/resources/accounts.mdx @@ -0,0 +1,968 @@ +export const title = 'Accounts' + + + +## List all Accounts {{ tag: 'GET' , label: '/api/accounts' }} + + + + Returns a list of accounts of a user. Always returns a list of one account. + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/accounts \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/accounts', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/accounts" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/accounts" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/accounts") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/accounts") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/accounts', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "ch8i4ug6lnn4g9hqv7l0", + "settings": { + "peer_login_expiration_enabled": true, + "peer_login_expiration": 43200, + "peer_inactivity_expiration_enabled": true, + "peer_inactivity_expiration": 43200, + "regular_users_view_blocked": true, + "groups_propagation_enabled": true, + "jwt_groups_enabled": true, + "jwt_groups_claim_name": "roles", + "jwt_allow_groups": [ + "Administrators" + ], + "routing_peer_dns_resolution_enabled": true, + "dns_domain": "my-organization.org", + "extra": { + "peer_approval_enabled": true, + "network_traffic_logs_enabled": true, + "network_traffic_packet_counter_enabled": true + }, + "lazy_connection_enabled": true + }, + "domain": "netbird.io", + "domain_category": "private", + "created_at": "2023-05-05T09:00:35.477782Z", + "created_by": "google-oauth2|277474792786460067937", + "onboarding": { + "signup_form_pending": true, + "onboarding_flow_pending": false + } + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "settings": { + "peer_login_expiration_enabled": "boolean", + "peer_login_expiration": "integer", + "peer_inactivity_expiration_enabled": "boolean", + "peer_inactivity_expiration": "integer", + "regular_users_view_blocked": "boolean", + "groups_propagation_enabled": "boolean", + "jwt_groups_enabled": "boolean", + "jwt_groups_claim_name": "string", + "jwt_allow_groups": [ + "string" + ], + "routing_peer_dns_resolution_enabled": "boolean", + "dns_domain": "string", + "extra": { + "peer_approval_enabled": "boolean", + "network_traffic_logs_enabled": "boolean", + "network_traffic_packet_counter_enabled": "boolean" + }, + "lazy_connection_enabled": "boolean" + }, + "domain": "string", + "domain_category": "string", + "created_at": "string", + "created_by": "string", + "onboarding": { + "signup_form_pending": "boolean", + "onboarding_flow_pending": "boolean" + } + } +] +``` + + + + + + +--- + + +## Delete an Account {{ tag: 'DELETE' , label: '/api/accounts/{accountId}' }} + + + + Deletes an account and all its resources. Only account owners can delete accounts. + + ### Path Parameters + + + + The unique identifier of an account + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/accounts/{accountId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/accounts/{accountId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/accounts/{accountId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/accounts/{accountId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/accounts/{accountId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/accounts/{accountId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/accounts/{accountId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- + + +## Update an Account {{ tag: 'PUT' , label: '/api/accounts/{accountId}' }} + + + + Update information about an account + + ### Path Parameters + + + + The unique identifier of an account + + + + ### Request-Body Parameters + + + +
+ More Information + + + + + Enables or disables peer login expiration globally. After peer's login has expired the user has to log in (authenticate). Applies only to peers that were added by a user (interactive SSO login). + + + + + Period of time after which peer login expires (seconds). + + + + + Enables or disables peer inactivity expiration globally. After peer's session has expired the user has to log in (authenticate). Applies only to peers that were added by a user (interactive SSO login). + + + + + Period of time of inactivity after which peer session expires (seconds). + + + + + Allows blocking regular users from viewing parts of the system. + + + + + Allows propagate the new user auto groups to peers that belongs to the user + + + + + Allows extract groups from JWT claim and add it to account groups. + + + + + Name of the claim from which we extract groups names to add it to account groups. + + + + + List of groups to which users are allowed access + + + + + Enables or disables DNS resolution on the routing peers + + + + + Allows to define a custom dns domain for the account + + + + +
+ More Information + + + + + (Cloud only) Enables or disables peer approval globally. If enabled, all peers added will be in pending state until approved by an admin. + + + + + Enables or disables network traffic logging. If enabled, all network traffic events from peers will be stored. + + + + + Enables or disables network traffic packet counter. If enabled, network packets and their size will be counted and reported. (This can have an slight impact on performance) + + + + + +
+ +
+ + + Enables or disables experimental lazy connection + + +
+ +
+
+ +
+ + +
+ More Information + + + + + Indicates whether the account signup form is pending + + + + + Indicates whether the account onboarding flow is pending + + + + + +
+ +
+
+ + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/accounts/{accountId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "settings": { + "peer_login_expiration_enabled": true, + "peer_login_expiration": 43200, + "peer_inactivity_expiration_enabled": true, + "peer_inactivity_expiration": 43200, + "regular_users_view_blocked": true, + "groups_propagation_enabled": true, + "jwt_groups_enabled": true, + "jwt_groups_claim_name": "roles", + "jwt_allow_groups": [ + "Administrators" + ], + "routing_peer_dns_resolution_enabled": true, + "dns_domain": "my-organization.org", + "extra": { + "peer_approval_enabled": true, + "network_traffic_logs_enabled": true, + "network_traffic_packet_counter_enabled": true + }, + "lazy_connection_enabled": true + }, + "onboarding": { + "signup_form_pending": true, + "onboarding_flow_pending": false + } +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "settings": { + "peer_login_expiration_enabled": true, + "peer_login_expiration": 43200, + "peer_inactivity_expiration_enabled": true, + "peer_inactivity_expiration": 43200, + "regular_users_view_blocked": true, + "groups_propagation_enabled": true, + "jwt_groups_enabled": true, + "jwt_groups_claim_name": "roles", + "jwt_allow_groups": [ + "Administrators" + ], + "routing_peer_dns_resolution_enabled": true, + "dns_domain": "my-organization.org", + "extra": { + "peer_approval_enabled": true, + "network_traffic_logs_enabled": true, + "network_traffic_packet_counter_enabled": true + }, + "lazy_connection_enabled": true + }, + "onboarding": { + "signup_form_pending": true, + "onboarding_flow_pending": false + } +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/accounts/{accountId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/accounts/{accountId}" +payload = json.dumps({ + "settings": { + "peer_login_expiration_enabled": true, + "peer_login_expiration": 43200, + "peer_inactivity_expiration_enabled": true, + "peer_inactivity_expiration": 43200, + "regular_users_view_blocked": true, + "groups_propagation_enabled": true, + "jwt_groups_enabled": true, + "jwt_groups_claim_name": "roles", + "jwt_allow_groups": [ + "Administrators" + ], + "routing_peer_dns_resolution_enabled": true, + "dns_domain": "my-organization.org", + "extra": { + "peer_approval_enabled": true, + "network_traffic_logs_enabled": true, + "network_traffic_packet_counter_enabled": true + }, + "lazy_connection_enabled": true + }, + "onboarding": { + "signup_form_pending": true, + "onboarding_flow_pending": false + } +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/accounts/{accountId}" + method := "PUT" + + payload := strings.NewReader(`{ + "settings": { + "peer_login_expiration_enabled": true, + "peer_login_expiration": 43200, + "peer_inactivity_expiration_enabled": true, + "peer_inactivity_expiration": 43200, + "regular_users_view_blocked": true, + "groups_propagation_enabled": true, + "jwt_groups_enabled": true, + "jwt_groups_claim_name": "roles", + "jwt_allow_groups": [ + "Administrators" + ], + "routing_peer_dns_resolution_enabled": true, + "dns_domain": "my-organization.org", + "extra": { + "peer_approval_enabled": true, + "network_traffic_logs_enabled": true, + "network_traffic_packet_counter_enabled": true + }, + "lazy_connection_enabled": true + }, + "onboarding": { + "signup_form_pending": true, + "onboarding_flow_pending": false + } +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/accounts/{accountId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "settings": { + "peer_login_expiration_enabled": true, + "peer_login_expiration": 43200, + "peer_inactivity_expiration_enabled": true, + "peer_inactivity_expiration": 43200, + "regular_users_view_blocked": true, + "groups_propagation_enabled": true, + "jwt_groups_enabled": true, + "jwt_groups_claim_name": "roles", + "jwt_allow_groups": [ + "Administrators" + ], + "routing_peer_dns_resolution_enabled": true, + "dns_domain": "my-organization.org", + "extra": { + "peer_approval_enabled": true, + "network_traffic_logs_enabled": true, + "network_traffic_packet_counter_enabled": true + }, + "lazy_connection_enabled": true + }, + "onboarding": { + "signup_form_pending": true, + "onboarding_flow_pending": false + } +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "settings": { + "peer_login_expiration_enabled": true, + "peer_login_expiration": 43200, + "peer_inactivity_expiration_enabled": true, + "peer_inactivity_expiration": 43200, + "regular_users_view_blocked": true, + "groups_propagation_enabled": true, + "jwt_groups_enabled": true, + "jwt_groups_claim_name": "roles", + "jwt_allow_groups": [ + "Administrators" + ], + "routing_peer_dns_resolution_enabled": true, + "dns_domain": "my-organization.org", + "extra": { + "peer_approval_enabled": true, + "network_traffic_logs_enabled": true, + "network_traffic_packet_counter_enabled": true + }, + "lazy_connection_enabled": true + }, + "onboarding": { + "signup_form_pending": true, + "onboarding_flow_pending": false + } +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/accounts/{accountId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/accounts/{accountId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "settings": { + "peer_login_expiration_enabled": true, + "peer_login_expiration": 43200, + "peer_inactivity_expiration_enabled": true, + "peer_inactivity_expiration": 43200, + "regular_users_view_blocked": true, + "groups_propagation_enabled": true, + "jwt_groups_enabled": true, + "jwt_groups_claim_name": "roles", + "jwt_allow_groups": [ + "Administrators" + ], + "routing_peer_dns_resolution_enabled": true, + "dns_domain": "my-organization.org", + "extra": { + "peer_approval_enabled": true, + "network_traffic_logs_enabled": true, + "network_traffic_packet_counter_enabled": true + }, + "lazy_connection_enabled": true + }, + "onboarding": { + "signup_form_pending": true, + "onboarding_flow_pending": false + } +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7l0", + "settings": { + "peer_login_expiration_enabled": true, + "peer_login_expiration": 43200, + "peer_inactivity_expiration_enabled": true, + "peer_inactivity_expiration": 43200, + "regular_users_view_blocked": true, + "groups_propagation_enabled": true, + "jwt_groups_enabled": true, + "jwt_groups_claim_name": "roles", + "jwt_allow_groups": [ + "Administrators" + ], + "routing_peer_dns_resolution_enabled": true, + "dns_domain": "my-organization.org", + "extra": { + "peer_approval_enabled": true, + "network_traffic_logs_enabled": true, + "network_traffic_packet_counter_enabled": true + }, + "lazy_connection_enabled": true + }, + "domain": "netbird.io", + "domain_category": "private", + "created_at": "2023-05-05T09:00:35.477782Z", + "created_by": "google-oauth2|277474792786460067937", + "onboarding": { + "signup_form_pending": true, + "onboarding_flow_pending": false + } +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "settings": { + "peer_login_expiration_enabled": "boolean", + "peer_login_expiration": "integer", + "peer_inactivity_expiration_enabled": "boolean", + "peer_inactivity_expiration": "integer", + "regular_users_view_blocked": "boolean", + "groups_propagation_enabled": "boolean", + "jwt_groups_enabled": "boolean", + "jwt_groups_claim_name": "string", + "jwt_allow_groups": [ + "string" + ], + "routing_peer_dns_resolution_enabled": "boolean", + "dns_domain": "string", + "extra": { + "peer_approval_enabled": "boolean", + "network_traffic_logs_enabled": "boolean", + "network_traffic_packet_counter_enabled": "boolean" + }, + "lazy_connection_enabled": "boolean" + }, + "domain": "string", + "domain_category": "string", + "created_at": "string", + "created_by": "string", + "onboarding": { + "signup_form_pending": "boolean", + "onboarding_flow_pending": "boolean" + } +} +``` + + + + +
+ +--- diff --git a/src/pages/ipa/resources/dns.mdx b/src/pages/ipa/resources/dns.mdx new file mode 100644 index 00000000..8ca013e2 --- /dev/null +++ b/src/pages/ipa/resources/dns.mdx @@ -0,0 +1,1878 @@ +export const title = 'DNS' + + + +## List all Nameserver Groups {{ tag: 'GET' , label: '/api/dns/nameservers' }} + + + + Returns a list of all Nameserver Groups + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/dns/nameservers \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/dns/nameservers', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/dns/nameservers" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/dns/nameservers" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/dns/nameservers") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/dns/nameservers") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/dns/nameservers', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "name": "string", + "description": "string", + "nameservers": [ + { + "ip": "string", + "ns_type": "string", + "port": "integer" + } + ], + "enabled": "boolean", + "groups": [ + "string" + ], + "primary": "boolean", + "domains": [ + "string" + ], + "search_domains_enabled": "boolean" + } +] +``` + + + + + + +--- + + +## Create a Nameserver Group {{ tag: 'POST' , label: '/api/dns/nameservers' }} + + + + Creates a Nameserver Group + + ### Request-Body Parameters + + + + Name of nameserver group name + + + + + Description of the nameserver group + + + + +
+ Nameserver list + + + + + Nameserver IP + + + + + Nameserver Type + + + + + Nameserver Port + + + + + +
+ +
+ + + Nameserver group status + + + + + Distribution group IDs that defines group of peers that will use this nameserver group + + + + + Defines if a nameserver group is primary that resolves all domains. It should be true only if domains list is empty. + + + + + Match domain list. It should be empty only if primary is true. + + + + + Search domain status for match domains. It should be true only if domains list is not empty. + + +
+ + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/dns/nameservers \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/dns/nameservers', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/dns/nameservers" +payload = json.dumps({ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/dns/nameservers" + method := "POST" + + payload := strings.NewReader(`{ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/dns/nameservers") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/dns/nameservers") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/dns/nameservers', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "description": "string", + "nameservers": [ + { + "ip": "string", + "ns_type": "string", + "port": "integer" + } + ], + "enabled": "boolean", + "groups": [ + "string" + ], + "primary": "boolean", + "domains": [ + "string" + ], + "search_domains_enabled": "boolean" +} +``` + + + + +
+ +--- + + +## Retrieve a Nameserver Group {{ tag: 'GET' , label: '/api/dns/nameservers/{nsgroupId}' }} + + + + Get information about a Nameserver Groups + + ### Path Parameters + + + + The unique identifier of a Nameserver Group + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/dns/nameservers/{nsgroupId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/dns/nameservers/{nsgroupId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/dns/nameservers/{nsgroupId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/dns/nameservers/{nsgroupId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/dns/nameservers/{nsgroupId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/dns/nameservers/{nsgroupId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/dns/nameservers/{nsgroupId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "description": "string", + "nameservers": [ + { + "ip": "string", + "ns_type": "string", + "port": "integer" + } + ], + "enabled": "boolean", + "groups": [ + "string" + ], + "primary": "boolean", + "domains": [ + "string" + ], + "search_domains_enabled": "boolean" +} +``` + + + + + + +--- + + +## Update a Nameserver Group {{ tag: 'PUT' , label: '/api/dns/nameservers/{nsgroupId}' }} + + + + Update/Replace a Nameserver Group + + ### Path Parameters + + + + The unique identifier of a Nameserver Group + + + + ### Request-Body Parameters + + + + Name of nameserver group name + + + + + Description of the nameserver group + + + + +
+ Nameserver list + + + + + Nameserver IP + + + + + Nameserver Type + + + + + Nameserver Port + + + + + +
+ +
+ + + Nameserver group status + + + + + Distribution group IDs that defines group of peers that will use this nameserver group + + + + + Defines if a nameserver group is primary that resolves all domains. It should be true only if domains list is empty. + + + + + Match domain list. It should be empty only if primary is true. + + + + + Search domain status for match domains. It should be true only if domains list is not empty. + + +
+ + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/dns/nameservers/{nsgroupId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/dns/nameservers/{nsgroupId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/dns/nameservers/{nsgroupId}" +payload = json.dumps({ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/dns/nameservers/{nsgroupId}" + method := "PUT" + + payload := strings.NewReader(`{ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/dns/nameservers/{nsgroupId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/dns/nameservers/{nsgroupId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/dns/nameservers/{nsgroupId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "Google DNS", + "description": "Google DNS servers", + "nameservers": [ + { + "ip": "8.8.8.8", + "ns_type": "udp", + "port": 53 + } + ], + "enabled": true, + "groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "primary": true, + "domains": [ + "example.com" + ], + "search_domains_enabled": true +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "description": "string", + "nameservers": [ + { + "ip": "string", + "ns_type": "string", + "port": "integer" + } + ], + "enabled": "boolean", + "groups": [ + "string" + ], + "primary": "boolean", + "domains": [ + "string" + ], + "search_domains_enabled": "boolean" +} +``` + + + + +
+ +--- + + +## Delete a Nameserver Group {{ tag: 'DELETE' , label: '/api/dns/nameservers/{nsgroupId}' }} + + + + Delete a Nameserver Group + + ### Path Parameters + + + + The unique identifier of a Nameserver Group + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/dns/nameservers/{nsgroupId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/dns/nameservers/{nsgroupId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/dns/nameservers/{nsgroupId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/dns/nameservers/{nsgroupId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/dns/nameservers/{nsgroupId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/dns/nameservers/{nsgroupId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/dns/nameservers/{nsgroupId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- + + +## Retrieve DNS settings {{ tag: 'GET' , label: '/api/dns/settings' }} + + + + Returns a DNS settings object + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/dns/settings \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/dns/settings', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/dns/settings" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/dns/settings" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/dns/settings") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/dns/settings") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/dns/settings', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "items": { + "disabled_management_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] + } +} +``` +```json {{ title: 'Schema' }} +{ + "items": { + "disabled_management_groups": [ + "string" + ] + } +} +``` + + + + + + +--- + + +## Update DNS Settings {{ tag: 'PUT' , label: '/api/dns/settings' }} + + + + Updates a DNS settings object + + ### Request-Body Parameters + + + + Groups whose DNS management is disabled + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/dns/settings \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "disabled_management_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "disabled_management_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/dns/settings', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/dns/settings" +payload = json.dumps({ + "disabled_management_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/dns/settings" + method := "PUT" + + payload := strings.NewReader(`{ + "disabled_management_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/dns/settings") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "disabled_management_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "disabled_management_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/dns/settings") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/dns/settings', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "disabled_management_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "disabled_management_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +} +``` +```json {{ title: 'Schema' }} +{ + "disabled_management_groups": [ + "string" + ] +} +``` + + + + + + +--- diff --git a/src/pages/ipa/resources/events.mdx b/src/pages/ipa/resources/events.mdx new file mode 100644 index 00000000..18cd79d6 --- /dev/null +++ b/src/pages/ipa/resources/events.mdx @@ -0,0 +1,563 @@ +export const title = 'Events' + + + +## List all Audit Events {{ tag: 'GET' , label: '/api/events/audit' }} + + + + Returns a list of all audit events + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/events/audit \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/events/audit', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/events/audit" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/events/audit" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/events/audit") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/events/audit") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/events/audit', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": 10, + "timestamp": "2023-05-05T10:04:37.473542Z", + "activity": "Route created", + "activity_code": "route.add", + "initiator_id": "google-oauth2|123456789012345678901", + "initiator_name": "John Doe", + "initiator_email": "demo@netbird.io", + "target_id": "chad9d86lnnc59g18ou0", + "meta": { + "name": "my route", + "network_range": "10.64.0.0/24", + "peer_id": "chacbco6lnnbn6cg5s91" + } + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "timestamp": "string", + "activity": "string", + "activity_code": "string", + "initiator_id": "string", + "initiator_name": "string", + "initiator_email": "string", + "target_id": "string", + "meta": { + "description": "The metadata of the event", + "type": "object", + "additionalProperties": "string", + "example": { + "name": "my route", + "network_range": "10.64.0.0/24", + "peer_id": "chacbco6lnnbn6cg5s91" + } + } + } +] +``` + + + + + + +--- + + +## List all Traffic Events {{ tag: 'GET' , label: '/api/events/network-traffic' }} + + + + Returns a list of all network traffic events + + ### Query Parameters + + + + Page number + + + + Number of items per page + + + + Filter by user ID + + + + Filter by reporter ID + + + + Filter by protocol + + + + Filter by event type + + + + Filter by connection type + + + + Filter by direction + + + + Case-insensitive partial match on user email, source/destination names, and source/destination addresses + + + + Start date for filtering events (ISO 8601 format, e.g., 2024-01-01T00:00:00Z). + + + + End date for filtering events (ISO 8601 format, e.g., 2024-01-31T23:59:59Z). + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/events/network-traffic \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/events/network-traffic', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/events/network-traffic" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/events/network-traffic" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/events/network-traffic") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/events/network-traffic") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/events/network-traffic', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "data": [ + { + "flow_id": "61092452-b17c-4b14-b7cf-a2158c549826", + "reporter_id": "ch8i4ug6lnn4g9hqv7m0", + "source": { + "id": "ch8i4ug6lnn4g9hqv7m0", + "type": "PEER", + "name": "My Peer", + "geo_location": { + "city_name": "Berlin", + "country_code": "DE" + }, + "os": "Linux", + "address": "100.64.0.10:51820", + "dns_label": "*.mydomain.com" + }, + "destination": { + "id": "ch8i4ug6lnn4g9hqv7m0", + "type": "PEER", + "name": "My Peer", + "geo_location": { + "city_name": "Berlin", + "country_code": "DE" + }, + "os": "Linux", + "address": "100.64.0.10:51820", + "dns_label": "*.mydomain.com" + }, + "user": { + "id": "google-oauth2|123456789012345678901", + "email": "alice@netbird.io", + "name": "Alice Smith" + }, + "policy": { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "All to All" + }, + "icmp": { + "type": 8, + "code": 0 + }, + "protocol": 6, + "direction": "INGRESS", + "rx_bytes": 1234, + "rx_packets": 5, + "tx_bytes": 1234, + "tx_packets": 5, + "events": [ + { + "type": "TYPE_START", + "timestamp": {} + } + ] + } + ], + "page": { + "type": "integer", + "description": "Current page number" + }, + "page_size": { + "type": "integer", + "description": "Number of items per page" + }, + "total_records": { + "type": "integer", + "description": "Total number of event records available" + }, + "total_pages": { + "type": "integer", + "description": "Total number of pages available" + } +} +``` +```json {{ title: 'Schema' }} +{ + "data": [ + { + "flow_id": "string", + "reporter_id": "string", + "source": { + "id": "string", + "type": "string", + "name": "string", + "geo_location": { + "city_name": "string", + "country_code": "string" + }, + "os": "string", + "address": "string", + "dns_label": "string" + }, + "destination": { + "id": "string", + "type": "string", + "name": "string", + "geo_location": { + "city_name": "string", + "country_code": "string" + }, + "os": "string", + "address": "string", + "dns_label": "string" + }, + "user": { + "id": "string", + "email": "string", + "name": "string" + }, + "policy": { + "id": "string", + "name": "string" + }, + "icmp": { + "type": "integer", + "code": "integer" + }, + "protocol": "integer", + "direction": "string", + "rx_bytes": "integer", + "rx_packets": "integer", + "tx_bytes": "integer", + "tx_packets": "integer", + "events": [ + { + "type": "string", + "timestamp": "string" + } + ] + } + ], + "page": "integer", + "page_size": "integer", + "total_records": "integer", + "total_pages": "integer" +} +``` + + + + + + +--- diff --git a/src/pages/ipa/resources/geo-locations.mdx b/src/pages/ipa/resources/geo-locations.mdx new file mode 100644 index 00000000..b5b87842 --- /dev/null +++ b/src/pages/ipa/resources/geo-locations.mdx @@ -0,0 +1,364 @@ +export const title = 'Geo Locations' + + + +## List all country codes {{ tag: 'GET' , label: '/api/locations/countries' }} + + + + Get list of all country in 2-letter ISO 3166-1 alpha-2 codes + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/locations/countries \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/locations/countries', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/locations/countries" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/locations/countries" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/locations/countries") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/locations/countries") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/locations/countries', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + "DE" +] +``` +```json {{ title: 'Schema' }} +[ + "string" +] +``` + + + + + + +--- + + +## List all city names by country {{ tag: 'GET' , label: '/api/locations/countries/{country}/cities' }} + + + + Get a list of all English city names for a given country code + + ### Path Parameters + + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/locations/countries/{country}/cities \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/locations/countries/{country}/cities', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/locations/countries/{country}/cities" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/locations/countries/{country}/cities" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/locations/countries/{country}/cities") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/locations/countries/{country}/cities") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/locations/countries/{country}/cities', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "geoname_id": 2950158, + "city_name": "Berlin" +} +``` +```json {{ title: 'Schema' }} +{ + "geoname_id": "integer", + "city_name": "string" +} +``` + + + + + + +--- diff --git a/src/pages/ipa/resources/groups.mdx b/src/pages/ipa/resources/groups.mdx new file mode 100644 index 00000000..4d0cab6f --- /dev/null +++ b/src/pages/ipa/resources/groups.mdx @@ -0,0 +1,1274 @@ +export const title = 'Groups' + + + +## List all Groups {{ tag: 'GET' , label: '/api/groups' }} + + + + Returns a list of all groups + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/groups \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/groups', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/groups" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/groups" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/groups") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/groups") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/groups', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api", + "peers": [ + { + "id": "chacbco6lnnbn6cg5s90", + "name": "stage-host-1" + } + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string", + "peers": [ + { + "id": "string", + "name": "string" + } + ], + "resources": [ + { + "id": "string", + "type": "string" + } + ] + } +] +``` + + + + + + +--- + + +## Create a Group {{ tag: 'POST' , label: '/api/groups' }} + + + + Creates a group + + ### Request-Body Parameters + + + + Group name identifier + + + + + List of peers ids + + + + +
+ More Information + + + + + ID of the resource + + + + + Network resource type based of the address + + + + + +
+ +
+
+ + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/groups \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/groups', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/groups" +payload = json.dumps({ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/groups" + method := "POST" + + payload := strings.NewReader(`{ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/groups") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/groups") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/groups', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api", + "peers": [ + { + "id": "chacbco6lnnbn6cg5s90", + "name": "stage-host-1" + } + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string", + "peers": [ + { + "id": "string", + "name": "string" + } + ], + "resources": [ + { + "id": "string", + "type": "string" + } + ] +} +``` + + + + +
+ +--- + + +## Retrieve a Group {{ tag: 'GET' , label: '/api/groups/{groupId}' }} + + + + Get information about a group + + ### Path Parameters + + + + The unique identifier of a group + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/groups/{groupId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/groups/{groupId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/groups/{groupId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/groups/{groupId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/groups/{groupId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/groups/{groupId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/groups/{groupId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api", + "peers": [ + { + "id": "chacbco6lnnbn6cg5s90", + "name": "stage-host-1" + } + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string", + "peers": [ + { + "id": "string", + "name": "string" + } + ], + "resources": [ + { + "id": "string", + "type": "string" + } + ] +} +``` + + + + + + +--- + + +## Update a Group {{ tag: 'PUT' , label: '/api/groups/{groupId}' }} + + + + Update/Replace a group + + ### Path Parameters + + + + The unique identifier of a group + + + + ### Request-Body Parameters + + + + Group name identifier + + + + + List of peers ids + + + + +
+ More Information + + + + + ID of the resource + + + + + Network resource type based of the address + + + + + +
+ +
+
+ + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/groups/{groupId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/groups/{groupId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/groups/{groupId}" +payload = json.dumps({ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/groups/{groupId}" + method := "PUT" + + payload := strings.NewReader(`{ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/groups/{groupId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/groups/{groupId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/groups/{groupId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "name": "devs", + "peers": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api", + "peers": [ + { + "id": "chacbco6lnnbn6cg5s90", + "name": "stage-host-1" + } + ], + "resources": [ + { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + ] +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string", + "peers": [ + { + "id": "string", + "name": "string" + } + ], + "resources": [ + { + "id": "string", + "type": "string" + } + ] +} +``` + + + + +
+ +--- + + +## Delete a Group {{ tag: 'DELETE' , label: '/api/groups/{groupId}' }} + + + + Delete a group + + ### Path Parameters + + + + The unique identifier of a group + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/groups/{groupId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/groups/{groupId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/groups/{groupId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/groups/{groupId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/groups/{groupId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/groups/{groupId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/groups/{groupId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- diff --git a/src/pages/ipa/resources/ingress-ports.mdx b/src/pages/ipa/resources/ingress-ports.mdx new file mode 100644 index 00000000..e9c19ce5 --- /dev/null +++ b/src/pages/ipa/resources/ingress-ports.mdx @@ -0,0 +1,2470 @@ +export const title = 'Ingress Ports' + + + +## List all Port Allocations {{ tag: 'GET' , label: '/api/peers/{peerId}/ingress/ports' }} + + + + Returns a list of all ingress port allocations for a peer + + ### Path Parameters + + + + The unique identifier of a peer + + + + ### Query Parameters + + + + Filters ingress port allocations by name + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/peers/{peerId}/ingress/ports \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/peers/{peerId}/ingress/ports', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/peers/{peerId}/ingress/ports" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/peers/{peerId}/ingress/ports" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/peers/{peerId}/ingress/ports") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/peers/{peerId}/ingress/ports") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/peers/{peerId}/ingress/ports', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "Ingress Peer Allocation 1", + "ingress_peer_id": "x7p3kqf2rdd8j5zxw4n9", + "region": "germany", + "enabled": true, + "ingress_ip": "192.34.0.123", + "port_range_mappings": [ + { + "translated_start": 80, + "translated_end": 320, + "ingress_start": 1080, + "ingress_end": 1320, + "protocol": "tcp" + } + ] + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "name": "string", + "ingress_peer_id": "string", + "region": "string", + "enabled": "boolean", + "ingress_ip": "string", + "port_range_mappings": [ + { + "translated_start": "integer", + "translated_end": "integer", + "ingress_start": "integer", + "ingress_end": "integer", + "protocol": "string" + } + ] + } +] +``` + + + + + + +--- + + +## Create a Port Allocation {{ tag: 'POST' , label: '/api/peers/{peerId}/ingress/ports' }} + + + + Creates a new ingress port allocation for a peer + + ### Path Parameters + + + + The unique identifier of a peer + + + + ### Request-Body Parameters + + + + Name of the ingress port allocation + + + + + Indicates if an ingress port allocation is enabled + + + + +
+ List of port ranges that are forwarded by the ingress peer + + + + + The starting port of the range of forwarded ports + + + + + The ending port of the range of forwarded ports + + + + + The protocol accepted by the port range + + + + + +
+ +
+ + +
+ More Information + + + + + The number of ports to be forwarded + + + + + The protocol accepted by the port + + + + + +
+ +
+
+ + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/peers/{peerId}/ingress/ports \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/peers/{peerId}/ingress/ports', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/peers/{peerId}/ingress/ports" +payload = json.dumps({ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/peers/{peerId}/ingress/ports" + method := "POST" + + payload := strings.NewReader(`{ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/peers/{peerId}/ingress/ports") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/peers/{peerId}/ingress/ports") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/peers/{peerId}/ingress/ports', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "Ingress Peer Allocation 1", + "ingress_peer_id": "x7p3kqf2rdd8j5zxw4n9", + "region": "germany", + "enabled": true, + "ingress_ip": "192.34.0.123", + "port_range_mappings": [ + { + "translated_start": 80, + "translated_end": 320, + "ingress_start": 1080, + "ingress_end": 1320, + "protocol": "tcp" + } + ] +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "ingress_peer_id": "string", + "region": "string", + "enabled": "boolean", + "ingress_ip": "string", + "port_range_mappings": [ + { + "translated_start": "integer", + "translated_end": "integer", + "ingress_start": "integer", + "ingress_end": "integer", + "protocol": "string" + } + ] +} +``` + + + + +
+ +--- + + +## Retrieve a Port Allocation {{ tag: 'GET' , label: '/api/peers/{peerId}/ingress/ports/{allocationId}' }} + + + + Get information about an ingress port allocation + + ### Path Parameters + + + + The unique identifier of a peer + + + + The unique identifier of an ingress port allocation + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/peers/{peerId}/ingress/ports/{allocationId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "Ingress Peer Allocation 1", + "ingress_peer_id": "x7p3kqf2rdd8j5zxw4n9", + "region": "germany", + "enabled": true, + "ingress_ip": "192.34.0.123", + "port_range_mappings": [ + { + "translated_start": 80, + "translated_end": 320, + "ingress_start": 1080, + "ingress_end": 1320, + "protocol": "tcp" + } + ] +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "ingress_peer_id": "string", + "region": "string", + "enabled": "boolean", + "ingress_ip": "string", + "port_range_mappings": [ + { + "translated_start": "integer", + "translated_end": "integer", + "ingress_start": "integer", + "ingress_end": "integer", + "protocol": "string" + } + ] +} +``` + + + + + + +--- + + +## Update a Port Allocation {{ tag: 'PUT' , label: '/api/peers/{peerId}/ingress/ports/{allocationId}' }} + + + + Update information about an ingress port allocation + + ### Path Parameters + + + + The unique identifier of a peer + + + + The unique identifier of an ingress port allocation + + + + ### Request-Body Parameters + + + + Name of the ingress port allocation + + + + + Indicates if an ingress port allocation is enabled + + + + +
+ List of port ranges that are forwarded by the ingress peer + + + + + The starting port of the range of forwarded ports + + + + + The ending port of the range of forwarded ports + + + + + The protocol accepted by the port range + + + + + +
+ +
+ + +
+ More Information + + + + + The number of ports to be forwarded + + + + + The protocol accepted by the port + + + + + +
+ +
+
+ + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/peers/{peerId}/ingress/ports/{allocationId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}" +payload = json.dumps({ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}" + method := "PUT" + + payload := strings.NewReader(`{ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "name": "Ingress Port Allocation 1", + "enabled": true, + "port_ranges": [ + { + "start": 80, + "end": 320, + "protocol": "tcp" + } + ], + "direct_port": { + "count": 5, + "protocol": "udp" + } +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "Ingress Peer Allocation 1", + "ingress_peer_id": "x7p3kqf2rdd8j5zxw4n9", + "region": "germany", + "enabled": true, + "ingress_ip": "192.34.0.123", + "port_range_mappings": [ + { + "translated_start": 80, + "translated_end": 320, + "ingress_start": 1080, + "ingress_end": 1320, + "protocol": "tcp" + } + ] +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "ingress_peer_id": "string", + "region": "string", + "enabled": "boolean", + "ingress_ip": "string", + "port_range_mappings": [ + { + "translated_start": "integer", + "translated_end": "integer", + "ingress_start": "integer", + "ingress_end": "integer", + "protocol": "string" + } + ] +} +``` + + + + +
+ +--- + + +## Delete a Port Allocation {{ tag: 'DELETE' , label: '/api/peers/{peerId}/ingress/ports/{allocationId}' }} + + + + Delete an ingress port allocation + + ### Path Parameters + + + + The unique identifier of a peer + + + + The unique identifier of an ingress port allocation + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/peers/{peerId}/ingress/ports/{allocationId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/peers/{peerId}/ingress/ports/{allocationId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- + + +## List all Ingress Peers {{ tag: 'GET' , label: '/api/ingress/peers' }} + + + + Returns a list of all ingress peers + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/ingress/peers \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/ingress/peers', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/ingress/peers" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/ingress/peers" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/ingress/peers") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/ingress/peers") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/ingress/peers', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "peer_id": "x7p3kqf2rdd8j5zxw4n9", + "ingress_ip": "192.34.0.123", + "available_ports": { + "tcp": 45765, + "udp": 50000 + }, + "enabled": true, + "connected": true, + "fallback": true, + "region": "germany" + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "peer_id": "string", + "ingress_ip": "string", + "available_ports": { + "tcp": "integer", + "udp": "integer" + }, + "enabled": "boolean", + "connected": "boolean", + "fallback": "boolean", + "region": "string" + } +] +``` + + + + + + +--- + + +## Create a Ingress Peer {{ tag: 'POST' , label: '/api/ingress/peers' }} + + + + Creates a new ingress peer + + ### Request-Body Parameters + + + + ID of the peer that is used as an ingress peer + + + + + Defines if an ingress peer is enabled + + + + + Defines if an ingress peer can be used as a fallback if no ingress peer can be found in the region of the forwarded peer + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/ingress/peers \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "peer_id": "ch8i4ug6lnn4g9hqv7m0", + "enabled": true, + "fallback": true +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "peer_id": "ch8i4ug6lnn4g9hqv7m0", + "enabled": true, + "fallback": true +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/ingress/peers', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/ingress/peers" +payload = json.dumps({ + "peer_id": "ch8i4ug6lnn4g9hqv7m0", + "enabled": true, + "fallback": true +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/ingress/peers" + method := "POST" + + payload := strings.NewReader(`{ + "peer_id": "ch8i4ug6lnn4g9hqv7m0", + "enabled": true, + "fallback": true +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/ingress/peers") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "peer_id": "ch8i4ug6lnn4g9hqv7m0", + "enabled": true, + "fallback": true +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "peer_id": "ch8i4ug6lnn4g9hqv7m0", + "enabled": true, + "fallback": true +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/ingress/peers") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/ingress/peers', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "peer_id": "ch8i4ug6lnn4g9hqv7m0", + "enabled": true, + "fallback": true +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7m0", + "peer_id": "x7p3kqf2rdd8j5zxw4n9", + "ingress_ip": "192.34.0.123", + "available_ports": { + "tcp": 45765, + "udp": 50000 + }, + "enabled": true, + "connected": true, + "fallback": true, + "region": "germany" +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "peer_id": "string", + "ingress_ip": "string", + "available_ports": { + "tcp": "integer", + "udp": "integer" + }, + "enabled": "boolean", + "connected": "boolean", + "fallback": "boolean", + "region": "string" +} +``` + + + + + + +--- + + +## Retrieve a Ingress Peer {{ tag: 'GET' , label: '/api/ingress/peers/{ingressPeerId}' }} + + + + Get information about an ingress peer + + ### Path Parameters + + + + The unique identifier of an ingress peer + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/ingress/peers/{ingressPeerId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/ingress/peers/{ingressPeerId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/ingress/peers/{ingressPeerId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/ingress/peers/{ingressPeerId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/ingress/peers/{ingressPeerId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/ingress/peers/{ingressPeerId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/ingress/peers/{ingressPeerId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7m0", + "peer_id": "x7p3kqf2rdd8j5zxw4n9", + "ingress_ip": "192.34.0.123", + "available_ports": { + "tcp": 45765, + "udp": 50000 + }, + "enabled": true, + "connected": true, + "fallback": true, + "region": "germany" +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "peer_id": "string", + "ingress_ip": "string", + "available_ports": { + "tcp": "integer", + "udp": "integer" + }, + "enabled": "boolean", + "connected": "boolean", + "fallback": "boolean", + "region": "string" +} +``` + + + + + + +--- + + +## Update a Ingress Peer {{ tag: 'PUT' , label: '/api/ingress/peers/{ingressPeerId}' }} + + + + Update information about an ingress peer + + ### Path Parameters + + + + The unique identifier of an ingress peer + + + + ### Request-Body Parameters + + + + Defines if an ingress peer is enabled + + + + + Defines if an ingress peer can be used as a fallback if no ingress peer can be found in the region of the forwarded peer + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/ingress/peers/{ingressPeerId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "enabled": true, + "fallback": true +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "enabled": true, + "fallback": true +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/ingress/peers/{ingressPeerId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/ingress/peers/{ingressPeerId}" +payload = json.dumps({ + "enabled": true, + "fallback": true +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/ingress/peers/{ingressPeerId}" + method := "PUT" + + payload := strings.NewReader(`{ + "enabled": true, + "fallback": true +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/ingress/peers/{ingressPeerId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "enabled": true, + "fallback": true +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "enabled": true, + "fallback": true +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/ingress/peers/{ingressPeerId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/ingress/peers/{ingressPeerId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "enabled": true, + "fallback": true +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7m0", + "peer_id": "x7p3kqf2rdd8j5zxw4n9", + "ingress_ip": "192.34.0.123", + "available_ports": { + "tcp": 45765, + "udp": 50000 + }, + "enabled": true, + "connected": true, + "fallback": true, + "region": "germany" +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "peer_id": "string", + "ingress_ip": "string", + "available_ports": { + "tcp": "integer", + "udp": "integer" + }, + "enabled": "boolean", + "connected": "boolean", + "fallback": "boolean", + "region": "string" +} +``` + + + + + + +--- + + +## Delete a Ingress Peer {{ tag: 'DELETE' , label: '/api/ingress/peers/{ingressPeerId}' }} + + + + Delete an ingress peer + + ### Path Parameters + + + + The unique identifier of an ingress peer + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/ingress/peers/{ingressPeerId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/ingress/peers/{ingressPeerId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/ingress/peers/{ingressPeerId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/ingress/peers/{ingressPeerId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/ingress/peers/{ingressPeerId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/ingress/peers/{ingressPeerId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/ingress/peers/{ingressPeerId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- diff --git a/src/pages/ipa/resources/networks.mdx b/src/pages/ipa/resources/networks.mdx new file mode 100644 index 00000000..d0c19c67 --- /dev/null +++ b/src/pages/ipa/resources/networks.mdx @@ -0,0 +1,3680 @@ +export const title = 'Networks' + + + +## List all Networks {{ tag: 'GET' , label: '/api/networks' }} + + + + Returns a list of all networks + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/networks \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/networks', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "chacdk86lnnboviihd7g", + "routers": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "routing_peers_count": 2, + "resources": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "policies": [ + "ch8i4ug6lnn4g9hqv7m2" + ], + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "routers": [ + "string" + ], + "routing_peers_count": "integer", + "resources": [ + "string" + ], + "policies": [ + "string" + ], + "name": "string", + "description": "string" + } +] +``` + + + + + + +--- + + +## Create a Network {{ tag: 'POST' , label: '/api/networks' }} + + + + Creates a Network + + ### Request-Body Parameters + + + + Network name + + + + + Network description + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/networks \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/networks', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks" +payload = json.dumps({ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks" + method := "POST" + + payload := strings.NewReader(`{ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacdk86lnnboviihd7g", + "routers": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "routing_peers_count": 2, + "resources": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "policies": [ + "ch8i4ug6lnn4g9hqv7m2" + ], + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "routers": [ + "string" + ], + "routing_peers_count": "integer", + "resources": [ + "string" + ], + "policies": [ + "string" + ], + "name": "string", + "description": "string" +} +``` + + + + + + +--- + + +## Retrieve a Network {{ tag: 'GET' , label: '/api/networks/{networkId}' }} + + + + Get information about a Network + + ### Path Parameters + + + + The unique identifier of a network + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/networks/{networkId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacdk86lnnboviihd7g", + "routers": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "routing_peers_count": 2, + "resources": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "policies": [ + "ch8i4ug6lnn4g9hqv7m2" + ], + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "routers": [ + "string" + ], + "routing_peers_count": "integer", + "resources": [ + "string" + ], + "policies": [ + "string" + ], + "name": "string", + "description": "string" +} +``` + + + + + + +--- + + +## Update a Network {{ tag: 'PUT' , label: '/api/networks/{networkId}' }} + + + + Update/Replace a Network + + ### Path Parameters + + + + The unique identifier of a network + + + + ### Request-Body Parameters + + + + Network name + + + + + Network description + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/networks/{networkId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}" +payload = json.dumps({ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}" + method := "PUT" + + payload := strings.NewReader(`{ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacdk86lnnboviihd7g", + "routers": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "routing_peers_count": 2, + "resources": [ + "ch8i4ug6lnn4g9hqv7m1" + ], + "policies": [ + "ch8i4ug6lnn4g9hqv7m2" + ], + "name": "Remote Network 1", + "description": "A remote network that needs to be accessed" +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "routers": [ + "string" + ], + "routing_peers_count": "integer", + "resources": [ + "string" + ], + "policies": [ + "string" + ], + "name": "string", + "description": "string" +} +``` + + + + + + +--- + + +## Delete a Network {{ tag: 'DELETE' , label: '/api/networks/{networkId}' }} + + + + Delete a network + + ### Path Parameters + + + + The unique identifier of a network + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/networks/{networkId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- + + +## List all Network Resources {{ tag: 'GET' , label: '/api/networks/{networkId}/resources' }} + + + + Returns a list of all resources in a network + + ### Path Parameters + + + + The unique identifier of a network + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/networks/{networkId}/resources \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}/resources', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}/resources" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}/resources" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}/resources") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}/resources") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}/resources', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "chacdk86lnnboviihd7g", + "type": "host", + "groups": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "type": "string", + "groups": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "name": "string", + "description": "string", + "address": "string", + "enabled": "boolean" + } +] +``` + + + + + + +--- + + +## Create a Network Resource {{ tag: 'POST' , label: '/api/networks/{networkId}/resources' }} + + + + Creates a Network Resource + + ### Path Parameters + + + + The unique identifier of a network + + + + ### Request-Body Parameters + + + + Network resource name + + + + + Network resource description + + + + + Network resource address (either a direct host like 1.1.1.1 or 1.1.1.1/32, or a subnet like 192.168.178.0/24, or domains like example.com and *.example.com) + + + + + Network resource status + + + + + Group IDs containing the resource + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/networks/{networkId}/resources \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}/resources', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}/resources" +payload = json.dumps({ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}/resources" + method := "POST" + + payload := strings.NewReader(`{ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}/resources") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}/resources") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}/resources', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacdk86lnnboviihd7g", + "type": "host", + "groups": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "type": "string", + "groups": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "name": "string", + "description": "string", + "address": "string", + "enabled": "boolean" +} +``` + + + + + + +--- + + +## Retrieve a Network Resource {{ tag: 'GET' , label: '/api/networks/{networkId}/resources/{resourceId}' }} + + + + Get information about a Network Resource + + ### Path Parameters + + + + The unique identifier of a network + + + + The unique identifier of a network resource + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/networks/{networkId}/resources/{resourceId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}/resources/{resourceId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacdk86lnnboviihd7g", + "type": "host", + "groups": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "type": "string", + "groups": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "name": "string", + "description": "string", + "address": "string", + "enabled": "boolean" +} +``` + + + + + + +--- + + +## Update a Network Resource {{ tag: 'PUT' , label: '/api/networks/{networkId}/resources/{resourceId}' }} + + + + Update a Network Resource + + ### Path Parameters + + + + The unique identifier of a network + + + + The unique identifier of a resource + + + + ### Request-Body Parameters + + + + Network resource name + + + + + Network resource description + + + + + Network resource address (either a direct host like 1.1.1.1 or 1.1.1.1/32, or a subnet like 192.168.178.0/24, or domains like example.com and *.example.com) + + + + + Network resource status + + + + + Group IDs containing the resource + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/networks/{networkId}/resources/{resourceId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}/resources/{resourceId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}" +payload = json.dumps({ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}" + method := "PUT" + + payload := strings.NewReader(`{ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true, + "groups": [ + "chacdk86lnnboviihd70" + ] +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacdk86lnnboviihd7g", + "type": "host", + "groups": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "name": "Remote Resource 1", + "description": "A remote resource inside network 1", + "address": "1.1.1.1", + "enabled": true +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "type": "string", + "groups": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "name": "string", + "description": "string", + "address": "string", + "enabled": "boolean" +} +``` + + + + + + +--- + + +## Delete a Network Resource {{ tag: 'DELETE' , label: '/api/networks/{networkId}/resources/{resourceId}' }} + + + + Delete a network resource + + ### Path Parameters + + + + + + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/networks/{networkId}/resources/{resourceId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}/resources/{resourceId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}/resources/{resourceId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- + + +## List all Network Routers {{ tag: 'GET' , label: '/api/networks/{networkId}/routers' }} + + + + Returns a list of all routers in a network + + ### Path Parameters + + + + The unique identifier of a network + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/networks/{networkId}/routers \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}/routers', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}/routers" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}/routers" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}/routers") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}/routers") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}/routers', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "chacdk86lnnboviihd7g", + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "peer": "string", + "peer_groups": [ + "string" + ], + "metric": "integer", + "masquerade": "boolean", + "enabled": "boolean" + } +] +``` + + + + + + +--- + + +## Create a Network Router {{ tag: 'POST' , label: '/api/networks/{networkId}/routers' }} + + + + Creates a Network Router + + ### Path Parameters + + + + The unique identifier of a network + + + + ### Request-Body Parameters + + + + Peer Identifier associated with route. This property can not be set together with `peer_groups` + + + + + Peers Group Identifier associated with route. This property can not be set together with `peer` + + + + + Route metric number. Lowest number has higher priority + + + + + Indicate if peer should masquerade traffic to this route's prefix + + + + + Network router status + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/networks/{networkId}/routers \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}/routers', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}/routers" +payload = json.dumps({ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}/routers" + method := "POST" + + payload := strings.NewReader(`{ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}/routers") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}/routers") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}/routers', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacdk86lnnboviihd7g", + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "peer": "string", + "peer_groups": [ + "string" + ], + "metric": "integer", + "masquerade": "boolean", + "enabled": "boolean" +} +``` + + + + + + +--- + + +## Retrieve a Network Router {{ tag: 'GET' , label: '/api/networks/{networkId}/routers/{routerId}' }} + + + + Get information about a Network Router + + ### Path Parameters + + + + The unique identifier of a network + + + + The unique identifier of a router + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/networks/{networkId}/routers/{routerId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}/routers/{routerId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}/routers/{routerId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}/routers/{routerId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}/routers/{routerId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}/routers/{routerId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}/routers/{routerId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacdk86lnnboviihd7g", + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "peer": "string", + "peer_groups": [ + "string" + ], + "metric": "integer", + "masquerade": "boolean", + "enabled": "boolean" +} +``` + + + + + + +--- + + +## Update a Network Router {{ tag: 'PUT' , label: '/api/networks/{networkId}/routers/{routerId}' }} + + + + Update a Network Router + + ### Path Parameters + + + + The unique identifier of a network + + + + The unique identifier of a router + + + + ### Request-Body Parameters + + + + Peer Identifier associated with route. This property can not be set together with `peer_groups` + + + + + Peers Group Identifier associated with route. This property can not be set together with `peer` + + + + + Route metric number. Lowest number has higher priority + + + + + Indicate if peer should masquerade traffic to this route's prefix + + + + + Network router status + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/networks/{networkId}/routers/{routerId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}/routers/{routerId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}/routers/{routerId}" +payload = json.dumps({ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}/routers/{routerId}" + method := "PUT" + + payload := strings.NewReader(`{ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}/routers/{routerId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}/routers/{routerId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}/routers/{routerId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacdk86lnnboviihd7g", + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "peer": "string", + "peer_groups": [ + "string" + ], + "metric": "integer", + "masquerade": "boolean", + "enabled": "boolean" +} +``` + + + + + + +--- + + +## Delete a Network Router {{ tag: 'DELETE' , label: '/api/networks/{networkId}/routers/{routerId}' }} + + + + Delete a network router + + ### Path Parameters + + + + + + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/networks/{networkId}/routers/{routerId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/networks/{networkId}/routers/{routerId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/{networkId}/routers/{routerId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/{networkId}/routers/{routerId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/{networkId}/routers/{routerId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/{networkId}/routers/{routerId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/{networkId}/routers/{routerId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- + + +## List all Network Routers {{ tag: 'GET' , label: '/api/networks/routers' }} + + + + Returns a list of all routers in a network + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/networks/routers \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/networks/routers', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/networks/routers" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/networks/routers" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/networks/routers") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/networks/routers") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/networks/routers', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "chacdk86lnnboviihd7g", + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "metric": 9999, + "masquerade": true, + "enabled": true + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "peer": "string", + "peer_groups": [ + "string" + ], + "metric": "integer", + "masquerade": "boolean", + "enabled": "boolean" + } +] +``` + + + + + + +--- diff --git a/src/pages/ipa/resources/peers.mdx b/src/pages/ipa/resources/peers.mdx new file mode 100644 index 00000000..c839c333 --- /dev/null +++ b/src/pages/ipa/resources/peers.mdx @@ -0,0 +1,1232 @@ +export const title = 'Peers' + + + +## List all Peers {{ tag: 'GET' , label: '/api/peers' }} + + + + Returns a list of all peers + + ### Query Parameters + + + + Filter peers by name + + + + Filter peers by IP address + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/peers \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/peers', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/peers" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/peers" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/peers") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/peers") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/peers', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "chacbco6lnnbn6cg5s90", + "name": "stage-host-1", + "ip": "10.64.0.1", + "connection_ip": "35.64.0.1", + "connected": true, + "last_seen": "2023-05-05T10:05:26.420578Z", + "os": "Darwin 13.2.1", + "kernel_version": "23.2.0", + "geoname_id": 2643743, + "version": "0.14.0", + "groups": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "ssh_enabled": true, + "user_id": "google-oauth2|277474792786460067937", + "hostname": "stage-host-1", + "ui_version": "0.14.0", + "dns_label": "stage-host-1.netbird.cloud", + "login_expiration_enabled": false, + "login_expired": false, + "last_login": "2023-05-05T09:00:35.477782Z", + "inactivity_expiration_enabled": false, + "approval_required": true, + "country_code": "DE", + "city_name": "Berlin", + "serial_number": "C02XJ0J0JGH7", + "extra_dns_labels": [ + "stage-host-1" + ], + "ephemeral": false, + "accessible_peers_count": 5 + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "name": "string", + "ip": "string", + "connection_ip": "string", + "connected": "boolean", + "last_seen": "string", + "os": "string", + "kernel_version": "string", + "geoname_id": "integer", + "version": "string", + "groups": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "ssh_enabled": "boolean", + "user_id": "string", + "hostname": "string", + "ui_version": "string", + "dns_label": "string", + "login_expiration_enabled": "boolean", + "login_expired": "boolean", + "last_login": "string", + "inactivity_expiration_enabled": "boolean", + "approval_required": "boolean", + "country_code": "string", + "city_name": "string", + "serial_number": "string", + "extra_dns_labels": [ + "string" + ], + "ephemeral": "boolean", + "accessible_peers_count": "integer" + } +] +``` + + + + + + +--- + + +## Retrieve a Peer {{ tag: 'GET' , label: '/api/peers/{peerId}' }} + + + + Get information about a peer + + ### Path Parameters + + + + The unique identifier of a peer + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/peers/{peerId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/peers/{peerId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/peers/{peerId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/peers/{peerId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/peers/{peerId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/peers/{peerId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/peers/{peerId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacbco6lnnbn6cg5s90", + "name": "stage-host-1", + "ip": "10.64.0.1", + "connection_ip": "35.64.0.1", + "connected": true, + "last_seen": "2023-05-05T10:05:26.420578Z", + "os": "Darwin 13.2.1", + "kernel_version": "23.2.0", + "geoname_id": 2643743, + "version": "0.14.0", + "groups": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "ssh_enabled": true, + "user_id": "google-oauth2|277474792786460067937", + "hostname": "stage-host-1", + "ui_version": "0.14.0", + "dns_label": "stage-host-1.netbird.cloud", + "login_expiration_enabled": false, + "login_expired": false, + "last_login": "2023-05-05T09:00:35.477782Z", + "inactivity_expiration_enabled": false, + "approval_required": true, + "country_code": "DE", + "city_name": "Berlin", + "serial_number": "C02XJ0J0JGH7", + "extra_dns_labels": [ + "stage-host-1" + ], + "ephemeral": false +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "ip": "string", + "connection_ip": "string", + "connected": "boolean", + "last_seen": "string", + "os": "string", + "kernel_version": "string", + "geoname_id": "integer", + "version": "string", + "groups": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "ssh_enabled": "boolean", + "user_id": "string", + "hostname": "string", + "ui_version": "string", + "dns_label": "string", + "login_expiration_enabled": "boolean", + "login_expired": "boolean", + "last_login": "string", + "inactivity_expiration_enabled": "boolean", + "approval_required": "boolean", + "country_code": "string", + "city_name": "string", + "serial_number": "string", + "extra_dns_labels": [ + "string" + ], + "ephemeral": "boolean" +} +``` + + + + + + +--- + + +## Update a Peer {{ tag: 'PUT' , label: '/api/peers/{peerId}' }} + + + + Update information about a peer + + ### Path Parameters + + + + The unique identifier of a peer + + + + ### Request-Body Parameters + + + + + + + + + + + + + + + + + + + + + + + + (Cloud only) Indicates whether peer needs approval + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/peers/{peerId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "stage-host-1", + "ssh_enabled": true, + "login_expiration_enabled": false, + "inactivity_expiration_enabled": false, + "approval_required": true +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "stage-host-1", + "ssh_enabled": true, + "login_expiration_enabled": false, + "inactivity_expiration_enabled": false, + "approval_required": true +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/peers/{peerId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/peers/{peerId}" +payload = json.dumps({ + "name": "stage-host-1", + "ssh_enabled": true, + "login_expiration_enabled": false, + "inactivity_expiration_enabled": false, + "approval_required": true +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/peers/{peerId}" + method := "PUT" + + payload := strings.NewReader(`{ + "name": "stage-host-1", + "ssh_enabled": true, + "login_expiration_enabled": false, + "inactivity_expiration_enabled": false, + "approval_required": true +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/peers/{peerId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "stage-host-1", + "ssh_enabled": true, + "login_expiration_enabled": false, + "inactivity_expiration_enabled": false, + "approval_required": true +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "stage-host-1", + "ssh_enabled": true, + "login_expiration_enabled": false, + "inactivity_expiration_enabled": false, + "approval_required": true +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/peers/{peerId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/peers/{peerId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "name": "stage-host-1", + "ssh_enabled": true, + "login_expiration_enabled": false, + "inactivity_expiration_enabled": false, + "approval_required": true +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacbco6lnnbn6cg5s90", + "name": "stage-host-1", + "ip": "10.64.0.1", + "connection_ip": "35.64.0.1", + "connected": true, + "last_seen": "2023-05-05T10:05:26.420578Z", + "os": "Darwin 13.2.1", + "kernel_version": "23.2.0", + "geoname_id": 2643743, + "version": "0.14.0", + "groups": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "ssh_enabled": true, + "user_id": "google-oauth2|277474792786460067937", + "hostname": "stage-host-1", + "ui_version": "0.14.0", + "dns_label": "stage-host-1.netbird.cloud", + "login_expiration_enabled": false, + "login_expired": false, + "last_login": "2023-05-05T09:00:35.477782Z", + "inactivity_expiration_enabled": false, + "approval_required": true, + "country_code": "DE", + "city_name": "Berlin", + "serial_number": "C02XJ0J0JGH7", + "extra_dns_labels": [ + "stage-host-1" + ], + "ephemeral": false +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "ip": "string", + "connection_ip": "string", + "connected": "boolean", + "last_seen": "string", + "os": "string", + "kernel_version": "string", + "geoname_id": "integer", + "version": "string", + "groups": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "ssh_enabled": "boolean", + "user_id": "string", + "hostname": "string", + "ui_version": "string", + "dns_label": "string", + "login_expiration_enabled": "boolean", + "login_expired": "boolean", + "last_login": "string", + "inactivity_expiration_enabled": "boolean", + "approval_required": "boolean", + "country_code": "string", + "city_name": "string", + "serial_number": "string", + "extra_dns_labels": [ + "string" + ], + "ephemeral": "boolean" +} +``` + + + + + + +--- + + +## Delete a Peer {{ tag: 'DELETE' , label: '/api/peers/{peerId}' }} + + + + Delete a peer + + ### Path Parameters + + + + The unique identifier of a peer + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/peers/{peerId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/peers/{peerId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/peers/{peerId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/peers/{peerId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/peers/{peerId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/peers/{peerId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/peers/{peerId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- + + +## List accessible Peers {{ tag: 'GET' , label: '/api/peers/{peerId}/accessible-peers' }} + + + + Returns a list of peers that the specified peer can connect to within the network. + + ### Path Parameters + + + + The unique identifier of a peer + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/peers/{peerId}/accessible-peers \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/peers/{peerId}/accessible-peers', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/peers/{peerId}/accessible-peers" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/peers/{peerId}/accessible-peers" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/peers/{peerId}/accessible-peers") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/peers/{peerId}/accessible-peers") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/peers/{peerId}/accessible-peers', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "chacbco6lnnbn6cg5s90", + "name": "stage-host-1", + "ip": "10.64.0.1", + "dns_label": "stage-host-1.netbird.cloud", + "user_id": "google-oauth2|277474792786460067937", + "os": "linux", + "country_code": "DE", + "city_name": "Berlin", + "geoname_id": 2643743, + "connected": true, + "last_seen": "2023-05-05T10:05:26.420578Z" + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "name": "string", + "ip": "string", + "dns_label": "string", + "user_id": "string", + "os": "string", + "country_code": "string", + "city_name": "string", + "geoname_id": "integer", + "connected": "boolean", + "last_seen": "string" + } +] +``` + + + + + + +--- diff --git a/src/pages/ipa/resources/policies.mdx b/src/pages/ipa/resources/policies.mdx new file mode 100644 index 00000000..7ee56d83 --- /dev/null +++ b/src/pages/ipa/resources/policies.mdx @@ -0,0 +1,2214 @@ +export const title = 'Policies' + + + +## List all Policies {{ tag: 'GET' , label: '/api/policies' }} + + + + Returns a list of all policies + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/policies \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/policies', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/policies" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/policies" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/policies") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/policies") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/policies', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "id": "ch8i4ug6lnn4g9hqv7mg", + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "name": "string", + "description": "string", + "enabled": "boolean", + "id": "string", + "source_posture_checks": [ + "string" + ], + "rules": [ + { + "name": "string", + "description": "string", + "enabled": "boolean", + "action": "string", + "bidirectional": "boolean", + "protocol": "string", + "ports": [ + "string" + ], + "port_ranges": [ + { + "start": "integer", + "end": "integer" + } + ], + "id": "string", + "sources": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "sourceResource": { + "id": "string", + "type": "string" + }, + "destinations": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "destinationResource": { + "id": "string", + "type": "string" + } + } + ] + } +] +``` + + + + + + +--- + + +## Create a Policy {{ tag: 'POST' , label: '/api/policies' }} + + + + Creates a policy + + ### Request-Body Parameters + + + + Policy name identifier + + + + + Policy friendly description + + + + + Policy status + + + + + Posture checks ID's applied to policy source groups + + + + +
+ Policy rule object for policy UI editor + + + + + Policy rule name identifier + + + + + Policy rule friendly description + + + + + Policy rule status + + + + + Policy rule accept or drops packets + + + + + Define if the rule is applicable in both directions, sources, and destinations. + + + + + Policy rule type of the traffic + + + + + Policy rule affected ports + + + + +
+ Policy rule affected ports ranges list + + + + + The starting port of the range + + + + + The ending port of the range + + + + + +
+ +
+ + + Policy rule ID + + + + + Policy rule source group IDs + + + + +
+ More Information + + + + + ID of the resource + + + + + Network resource type based of the address + + + + + +
+ +
+ + + Policy rule destination group IDs + + + + +
+ More Information + + + + + ID of the resource + + + + + Network resource type based of the address + + + + + +
+ +
+
+ +
+
+ +
+
+ + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/policies \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/policies', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/policies" +payload = json.dumps({ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/policies" + method := "POST" + + payload := strings.NewReader(`{ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/policies") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/policies") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/policies', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "id": "ch8i4ug6lnn4g9hqv7mg", + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +} +``` +```json {{ title: 'Schema' }} +{ + "name": "string", + "description": "string", + "enabled": "boolean", + "id": "string", + "source_posture_checks": [ + "string" + ], + "rules": [ + { + "name": "string", + "description": "string", + "enabled": "boolean", + "action": "string", + "bidirectional": "boolean", + "protocol": "string", + "ports": [ + "string" + ], + "port_ranges": [ + { + "start": "integer", + "end": "integer" + } + ], + "id": "string", + "sources": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "sourceResource": { + "id": "string", + "type": "string" + }, + "destinations": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "destinationResource": { + "id": "string", + "type": "string" + } + } + ] +} +``` + + + + +
+ +--- + + +## Retrieve a Policy {{ tag: 'GET' , label: '/api/policies/{policyId}' }} + + + + Get information about a Policies + + ### Path Parameters + + + + The unique identifier of a policy + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/policies/{policyId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/policies/{policyId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/policies/{policyId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/policies/{policyId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/policies/{policyId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/policies/{policyId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/policies/{policyId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "id": "ch8i4ug6lnn4g9hqv7mg", + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +} +``` +```json {{ title: 'Schema' }} +{ + "name": "string", + "description": "string", + "enabled": "boolean", + "id": "string", + "source_posture_checks": [ + "string" + ], + "rules": [ + { + "name": "string", + "description": "string", + "enabled": "boolean", + "action": "string", + "bidirectional": "boolean", + "protocol": "string", + "ports": [ + "string" + ], + "port_ranges": [ + { + "start": "integer", + "end": "integer" + } + ], + "id": "string", + "sources": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "sourceResource": { + "id": "string", + "type": "string" + }, + "destinations": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "destinationResource": { + "id": "string", + "type": "string" + } + } + ] +} +``` + + + + + + +--- + + +## Update a Policy {{ tag: 'PUT' , label: '/api/policies/{policyId}' }} + + + + Update/Replace a Policy + + ### Path Parameters + + + + The unique identifier of a policy + + + + ### Request-Body Parameters + + + + Policy name identifier + + + + + Policy friendly description + + + + + Policy status + + + + + Posture checks ID's applied to policy source groups + + + + +
+ Policy rule object for policy UI editor + + + + + Policy rule name identifier + + + + + Policy rule friendly description + + + + + Policy rule status + + + + + Policy rule accept or drops packets + + + + + Define if the rule is applicable in both directions, sources, and destinations. + + + + + Policy rule type of the traffic + + + + + Policy rule affected ports + + + + +
+ Policy rule affected ports ranges list + + + + + The starting port of the range + + + + + The ending port of the range + + + + + +
+ +
+ + + Policy rule ID + + + + + Policy rule source group IDs + + + + +
+ More Information + + + + + ID of the resource + + + + + Network resource type based of the address + + + + + +
+ +
+ + + Policy rule destination group IDs + + + + +
+ More Information + + + + + ID of the resource + + + + + Network resource type based of the address + + + + + +
+ +
+
+ +
+
+ +
+
+ + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/policies/{policyId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/policies/{policyId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/policies/{policyId}" +payload = json.dumps({ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/policies/{policyId}" + method := "PUT" + + payload := strings.NewReader(`{ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/policies/{policyId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/policies/{policyId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/policies/{policyId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + "ch8i4ug6lnn4g9hqv797" + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + "ch8i4ug6lnn4g9h7v7m0" + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "name": "ch8i4ug6lnn4g9hqv7mg", + "description": "This is a default policy that allows connections between all the resources", + "enabled": true, + "id": "ch8i4ug6lnn4g9hqv7mg", + "source_posture_checks": [ + "chacdk86lnnboviihd70" + ], + "rules": [ + { + "name": "Default", + "description": "This is a default rule that allows connections between all the resources", + "enabled": true, + "action": "accept", + "bidirectional": true, + "protocol": "tcp", + "ports": [ + "80" + ], + "port_ranges": [ + { + "start": 80, + "end": 320 + } + ], + "id": "ch8i4ug6lnn4g9hqv7mg", + "sources": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "sourceResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + }, + "destinations": [ + { + "id": "ch8i4ug6lnn4g9hqv7m0", + "name": "devs", + "peers_count": 2, + "resources_count": 5, + "issued": "api" + } + ], + "destinationResource": { + "id": "chacdk86lnnboviihd7g", + "type": "host" + } + } + ] +} +``` +```json {{ title: 'Schema' }} +{ + "name": "string", + "description": "string", + "enabled": "boolean", + "id": "string", + "source_posture_checks": [ + "string" + ], + "rules": [ + { + "name": "string", + "description": "string", + "enabled": "boolean", + "action": "string", + "bidirectional": "boolean", + "protocol": "string", + "ports": [ + "string" + ], + "port_ranges": [ + { + "start": "integer", + "end": "integer" + } + ], + "id": "string", + "sources": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "sourceResource": { + "id": "string", + "type": "string" + }, + "destinations": [ + { + "id": "string", + "name": "string", + "peers_count": "integer", + "resources_count": "integer", + "issued": "string" + } + ], + "destinationResource": { + "id": "string", + "type": "string" + } + } + ] +} +``` + + + + +
+ +--- + + +## Delete a Policy {{ tag: 'DELETE' , label: '/api/policies/{policyId}' }} + + + + Delete a policy + + ### Path Parameters + + + + The unique identifier of a policy + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/policies/{policyId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/policies/{policyId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/policies/{policyId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/policies/{policyId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/policies/{policyId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/policies/{policyId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/policies/{policyId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- diff --git a/src/pages/ipa/resources/posture-checks.mdx b/src/pages/ipa/resources/posture-checks.mdx new file mode 100644 index 00000000..1b6a314a --- /dev/null +++ b/src/pages/ipa/resources/posture-checks.mdx @@ -0,0 +1,2506 @@ +export const title = 'Posture Checks' + + + +## List all Posture Checks {{ tag: 'GET' , label: '/api/posture-checks' }} + + + + Returns a list of all posture checks + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/posture-checks \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/posture-checks', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/posture-checks" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/posture-checks" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/posture-checks") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/posture-checks") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/posture-checks', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "ch8i4ug6lnn4g9hqv7mg", + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "name": "string", + "description": "string", + "checks": { + "nb_version_check": { + "min_version": "string" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "string", + "city_name": "string" + } + ], + "action": "string" + }, + "peer_network_range_check": { + "ranges": [ + "string" + ], + "action": "string" + }, + "process_check": { + "processes": [ + { + "linux_path": "string", + "mac_path": "string", + "windows_path": "string" + } + ] + } + } + } +] +``` + + + + + + +--- + + +## Create a Posture Check {{ tag: 'POST' , label: '/api/posture-checks' }} + + + + Creates a posture check + + ### Request-Body Parameters + + + + Posture check name identifier + + + + + Posture check friendly description + + + + +
+ List of objects that perform the actual checks + + + + +
+ Posture check for the version of operating system + + + + + Minimum acceptable version + + + + + +
+ +
+ + +
+ Posture check for the version of operating system + + + + +
+ Posture check for the version of operating system + + + + + Minimum acceptable version + + + + + +
+ +
+ + +
+ Posture check for the version of operating system + + + + + Minimum acceptable version + + + + + +
+ +
+ + +
+ Posture check for the version of operating system + + + + + Minimum acceptable version + + + + + +
+ +
+ + +
+ Posture check with the kernel version + + + + + Minimum acceptable version + + + + + +
+ +
+ + +
+ Posture check with the kernel version + + + + + Minimum acceptable version + + + + + +
+ +
+
+ +
+
+ +
+ + +
+ Posture check for geo location + + + + +
+ List of geo locations to which the policy applies + + + + + 2-letter ISO 3166-1 alpha-2 code that represents the country + + + + + Commonly used English name of the city + + + + + +
+ +
+ + + Action to take upon policy match + + +
+ +
+
+ +
+ + +
+ Posture check for allow or deny access based on peer local network addresses + + + + + List of peer network ranges in CIDR notation + + + + + Action to take upon policy match + + + + + +
+ +
+ + +
+ Posture Check for binaries exist and are running in the peer’s system + + + + +
+ More Information + + + + + Path to the process executable file in a Linux operating system + + + + + Path to the process executable file in a Mac operating system + + + + + Path to the process executable file in a Windows operating system + + + + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/posture-checks \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/posture-checks', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/posture-checks" +payload = json.dumps({ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/posture-checks" + method := "POST" + + payload := strings.NewReader(`{ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/posture-checks") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/posture-checks") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/posture-checks', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7mg", + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "description": "string", + "checks": { + "nb_version_check": { + "min_version": "string" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "string", + "city_name": "string" + } + ], + "action": "string" + }, + "peer_network_range_check": { + "ranges": [ + "string" + ], + "action": "string" + }, + "process_check": { + "processes": [ + { + "linux_path": "string", + "mac_path": "string", + "windows_path": "string" + } + ] + } + } +} +``` + + + + +
+ +--- + + +## Retrieve a Posture Check {{ tag: 'GET' , label: '/api/posture-checks/{postureCheckId}' }} + + + + Get information about a posture check + + ### Path Parameters + + + + The unique identifier of a posture check + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/posture-checks/{postureCheckId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/posture-checks/{postureCheckId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/posture-checks/{postureCheckId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/posture-checks/{postureCheckId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/posture-checks/{postureCheckId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/posture-checks/{postureCheckId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/posture-checks/{postureCheckId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7mg", + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "description": "string", + "checks": { + "nb_version_check": { + "min_version": "string" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "string", + "city_name": "string" + } + ], + "action": "string" + }, + "peer_network_range_check": { + "ranges": [ + "string" + ], + "action": "string" + }, + "process_check": { + "processes": [ + { + "linux_path": "string", + "mac_path": "string", + "windows_path": "string" + } + ] + } + } +} +``` + + + + + + +--- + + +## Update a Posture Check {{ tag: 'PUT' , label: '/api/posture-checks/{postureCheckId}' }} + + + + Update/Replace a posture check + + ### Path Parameters + + + + The unique identifier of a posture check + + + + ### Request-Body Parameters + + + + Posture check name identifier + + + + + Posture check friendly description + + + + +
+ List of objects that perform the actual checks + + + + +
+ Posture check for the version of operating system + + + + + Minimum acceptable version + + + + + +
+ +
+ + +
+ Posture check for the version of operating system + + + + +
+ Posture check for the version of operating system + + + + + Minimum acceptable version + + + + + +
+ +
+ + +
+ Posture check for the version of operating system + + + + + Minimum acceptable version + + + + + +
+ +
+ + +
+ Posture check for the version of operating system + + + + + Minimum acceptable version + + + + + +
+ +
+ + +
+ Posture check with the kernel version + + + + + Minimum acceptable version + + + + + +
+ +
+ + +
+ Posture check with the kernel version + + + + + Minimum acceptable version + + + + + +
+ +
+
+ +
+
+ +
+ + +
+ Posture check for geo location + + + + +
+ List of geo locations to which the policy applies + + + + + 2-letter ISO 3166-1 alpha-2 code that represents the country + + + + + Commonly used English name of the city + + + + + +
+ +
+ + + Action to take upon policy match + + +
+ +
+
+ +
+ + +
+ Posture check for allow or deny access based on peer local network addresses + + + + + List of peer network ranges in CIDR notation + + + + + Action to take upon policy match + + + + + +
+ +
+ + +
+ Posture Check for binaries exist and are running in the peer’s system + + + + +
+ More Information + + + + + Path to the process executable file in a Linux operating system + + + + + Path to the process executable file in a Mac operating system + + + + + Path to the process executable file in a Windows operating system + + + + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/posture-checks/{postureCheckId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/posture-checks/{postureCheckId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/posture-checks/{postureCheckId}" +payload = json.dumps({ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/posture-checks/{postureCheckId}" + method := "PUT" + + payload := strings.NewReader(`{ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/posture-checks/{postureCheckId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/posture-checks/{postureCheckId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/posture-checks/{postureCheckId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i4ug6lnn4g9hqv7mg", + "name": "Default", + "description": "This checks if the peer is running required NetBird's version", + "checks": { + "nb_version_check": { + "min_version": "14.3" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "DE", + "city_name": "Berlin" + } + ], + "action": "allow" + }, + "peer_network_range_check": { + "ranges": [ + "192.168.1.0/24", + "10.0.0.0/8", + "2001:db8:1234:1a00::/56" + ], + "action": "allow" + }, + "process_check": { + "processes": [ + { + "linux_path": "/usr/local/bin/netbird", + "mac_path": "/Applications/NetBird.app/Contents/MacOS/netbird", + "windows_path": "C:
rogramData…etBird\netbird.exe" + } + ] + } + } +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "description": "string", + "checks": { + "nb_version_check": { + "min_version": "string" + }, + "os_version_check": { + "android": { + "min_version": "13" + }, + "ios": { + "min_version": "17.3.1" + }, + "darwin": { + "min_version": "14.2.1" + }, + "linux": { + "min_kernel_version": "5.3.3" + }, + "windows": { + "min_kernel_version": "10.0.1234" + } + }, + "geo_location_check": { + "locations": [ + { + "country_code": "string", + "city_name": "string" + } + ], + "action": "string" + }, + "peer_network_range_check": { + "ranges": [ + "string" + ], + "action": "string" + }, + "process_check": { + "processes": [ + { + "linux_path": "string", + "mac_path": "string", + "windows_path": "string" + } + ] + } + } +} +``` + + + + +
+ +--- + + +## Delete a Posture Check {{ tag: 'DELETE' , label: '/api/posture-checks/{postureCheckId}' }} + + + + Delete a posture check + + ### Path Parameters + + + + The unique identifier of a posture check + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/posture-checks/{postureCheckId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/posture-checks/{postureCheckId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/posture-checks/{postureCheckId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/posture-checks/{postureCheckId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/posture-checks/{postureCheckId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/posture-checks/{postureCheckId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/posture-checks/{postureCheckId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- diff --git a/src/pages/ipa/resources/routes.mdx b/src/pages/ipa/resources/routes.mdx new file mode 100644 index 00000000..9dfeb45a --- /dev/null +++ b/src/pages/ipa/resources/routes.mdx @@ -0,0 +1,1510 @@ +export const title = 'Routes' + + + +## List all Routes {{ tag: 'GET' , label: '/api/routes' }} + + + + Returns a list of all routes + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/routes \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/routes', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/routes" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/routes" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/routes") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/routes") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/routes', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "chacdk86lnnboviihd7g", + "network_type": "IPv4", + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "network_type": "string", + "description": "string", + "network_id": "string", + "enabled": "boolean", + "peer": "string", + "peer_groups": [ + "string" + ], + "network": "string", + "domains": [ + "string" + ], + "metric": "integer", + "masquerade": "boolean", + "groups": [ + "string" + ], + "keep_route": "boolean", + "access_control_groups": [ + "string" + ] + } +] +``` + + + + + + +--- + + +## Create a Route {{ tag: 'POST' , label: '/api/routes' }} + + + + Creates a Route + + ### Request-Body Parameters + + + + Route description + + + + + Route network identifier, to group HA routes + + + + + Route status + + + + + Peer Identifier associated with route. This property can not be set together with `peer_groups` + + + + + Peers Group Identifier associated with route. This property can not be set together with `peer` + + + + + Network range in CIDR format, Conflicts with domains + + + + + Domain list to be dynamically resolved. Max of 32 domains can be added per route configuration. Conflicts with network + + + + + Route metric number. Lowest number has higher priority + + + + + Indicate if peer should masquerade traffic to this route's prefix + + + + + Group IDs containing routing peers + + + + + Indicate if the route should be kept after a domain doesn't resolve that IP anymore + + + + + Access control group identifier associated with route. + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/routes \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/routes', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/routes" +payload = json.dumps({ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/routes" + method := "POST" + + payload := strings.NewReader(`{ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/routes") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/routes") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/routes', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacdk86lnnboviihd7g", + "network_type": "IPv4", + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "network_type": "string", + "description": "string", + "network_id": "string", + "enabled": "boolean", + "peer": "string", + "peer_groups": [ + "string" + ], + "network": "string", + "domains": [ + "string" + ], + "metric": "integer", + "masquerade": "boolean", + "groups": [ + "string" + ], + "keep_route": "boolean", + "access_control_groups": [ + "string" + ] +} +``` + + + + + + +--- + + +## Retrieve a Route {{ tag: 'GET' , label: '/api/routes/{routeId}' }} + + + + Get information about a Routes + + ### Path Parameters + + + + The unique identifier of a route + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/routes/{routeId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/routes/{routeId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/routes/{routeId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/routes/{routeId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/routes/{routeId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/routes/{routeId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/routes/{routeId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacdk86lnnboviihd7g", + "network_type": "IPv4", + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "network_type": "string", + "description": "string", + "network_id": "string", + "enabled": "boolean", + "peer": "string", + "peer_groups": [ + "string" + ], + "network": "string", + "domains": [ + "string" + ], + "metric": "integer", + "masquerade": "boolean", + "groups": [ + "string" + ], + "keep_route": "boolean", + "access_control_groups": [ + "string" + ] +} +``` + + + + + + +--- + + +## Update a Route {{ tag: 'PUT' , label: '/api/routes/{routeId}' }} + + + + Update/Replace a Route + + ### Path Parameters + + + + The unique identifier of a route + + + + ### Request-Body Parameters + + + + Route description + + + + + Route network identifier, to group HA routes + + + + + Route status + + + + + Peer Identifier associated with route. This property can not be set together with `peer_groups` + + + + + Peers Group Identifier associated with route. This property can not be set together with `peer` + + + + + Network range in CIDR format, Conflicts with domains + + + + + Domain list to be dynamically resolved. Max of 32 domains can be added per route configuration. Conflicts with network + + + + + Route metric number. Lowest number has higher priority + + + + + Indicate if peer should masquerade traffic to this route's prefix + + + + + Group IDs containing routing peers + + + + + Indicate if the route should be kept after a domain doesn't resolve that IP anymore + + + + + Access control group identifier associated with route. + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/routes/{routeId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/routes/{routeId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/routes/{routeId}" +payload = json.dumps({ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/routes/{routeId}" + method := "PUT" + + payload := strings.NewReader(`{ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/routes/{routeId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/routes/{routeId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/routes/{routeId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "chacdk86lnnboviihd7g", + "network_type": "IPv4", + "description": "My first route", + "network_id": "Route 1", + "enabled": true, + "peer": "chacbco6lnnbn6cg5s91", + "peer_groups": [ + "chacbco6lnnbn6cg5s91" + ], + "network": "10.64.0.0/24", + "domains": [ + "example.com" + ], + "metric": 9999, + "masquerade": true, + "groups": [ + "chacdk86lnnboviihd70" + ], + "keep_route": true, + "access_control_groups": [ + "chacbco6lnnbn6cg5s91" + ] +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "network_type": "string", + "description": "string", + "network_id": "string", + "enabled": "boolean", + "peer": "string", + "peer_groups": [ + "string" + ], + "network": "string", + "domains": [ + "string" + ], + "metric": "integer", + "masquerade": "boolean", + "groups": [ + "string" + ], + "keep_route": "boolean", + "access_control_groups": [ + "string" + ] +} +``` + + + + + + +--- + + +## Delete a Route {{ tag: 'DELETE' , label: '/api/routes/{routeId}' }} + + + + Delete a route + + ### Path Parameters + + + + The unique identifier of a route + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/routes/{routeId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/routes/{routeId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/routes/{routeId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/routes/{routeId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/routes/{routeId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/routes/{routeId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/routes/{routeId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- diff --git a/src/pages/ipa/resources/setup-keys.mdx b/src/pages/ipa/resources/setup-keys.mdx new file mode 100644 index 00000000..a8698eb8 --- /dev/null +++ b/src/pages/ipa/resources/setup-keys.mdx @@ -0,0 +1,1206 @@ +export const title = 'Setup Keys' + + + +## List all Setup Keys {{ tag: 'GET' , label: '/api/setup-keys' }} + + + + Returns a list of all Setup Keys + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/setup-keys \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/setup-keys', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/setup-keys" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/setup-keys" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/setup-keys") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/setup-keys") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/setup-keys', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": 2531583362, + "name": "Default key", + "expires": "2023-06-01T14:47:22.291057Z", + "type": "reusable", + "valid": true, + "revoked": false, + "used_times": 2, + "last_used": "2023-05-05T09:00:35.477782Z", + "state": "valid", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "updated_at": "2023-05-05T09:00:35.477782Z", + "usage_limit": 0, + "ephemeral": true, + "allow_extra_dns_labels": true, + "key": "A6160****" + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "name": "string", + "expires": "string", + "type": "string", + "valid": "boolean", + "revoked": "boolean", + "used_times": "integer", + "last_used": "string", + "state": "string", + "auto_groups": [ + "string" + ], + "updated_at": "string", + "usage_limit": "integer", + "ephemeral": "boolean", + "allow_extra_dns_labels": "boolean", + "key": "string" + } +] +``` + + + + + + +--- + + +## Create a Setup Key {{ tag: 'POST' , label: '/api/setup-keys' }} + + + + Creates a setup key + + ### Request-Body Parameters + + + + Setup Key name + + + + + Setup key type, one-off for single time usage and reusable + + + + + Expiration time in seconds + + + + + List of group IDs to auto-assign to peers registered with this key + + + + + A number of times this key can be used. The value of 0 indicates the unlimited usage. + + + + + Indicate that the peer will be ephemeral or not + + + + + Allow extra DNS labels to be added to the peer + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/setup-keys \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "Default key", + "type": "reusable", + "expires_in": 86400, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "usage_limit": 0, + "ephemeral": true, + "allow_extra_dns_labels": true +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "Default key", + "type": "reusable", + "expires_in": 86400, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "usage_limit": 0, + "ephemeral": true, + "allow_extra_dns_labels": true +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/setup-keys', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/setup-keys" +payload = json.dumps({ + "name": "Default key", + "type": "reusable", + "expires_in": 86400, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "usage_limit": 0, + "ephemeral": true, + "allow_extra_dns_labels": true +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/setup-keys" + method := "POST" + + payload := strings.NewReader(`{ + "name": "Default key", + "type": "reusable", + "expires_in": 86400, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "usage_limit": 0, + "ephemeral": true, + "allow_extra_dns_labels": true +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/setup-keys") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "Default key", + "type": "reusable", + "expires_in": 86400, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "usage_limit": 0, + "ephemeral": true, + "allow_extra_dns_labels": true +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "Default key", + "type": "reusable", + "expires_in": 86400, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "usage_limit": 0, + "ephemeral": true, + "allow_extra_dns_labels": true +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/setup-keys") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/setup-keys', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "name": "Default key", + "type": "reusable", + "expires_in": 86400, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "usage_limit": 0, + "ephemeral": true, + "allow_extra_dns_labels": true +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": 2531583362, + "name": "Default key", + "expires": "2023-06-01T14:47:22.291057Z", + "type": "reusable", + "valid": true, + "revoked": false, + "used_times": 2, + "last_used": "2023-05-05T09:00:35.477782Z", + "state": "valid", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "updated_at": "2023-05-05T09:00:35.477782Z", + "usage_limit": 0, + "ephemeral": true, + "allow_extra_dns_labels": true, + "key": "A616097E-FCF0-48FA-9354-CA4A61142761" +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "expires": "string", + "type": "string", + "valid": "boolean", + "revoked": "boolean", + "used_times": "integer", + "last_used": "string", + "state": "string", + "auto_groups": [ + "string" + ], + "updated_at": "string", + "usage_limit": "integer", + "ephemeral": "boolean", + "allow_extra_dns_labels": "boolean", + "key": "string" +} +``` + + + + + + +--- + + +## Retrieve a Setup Key {{ tag: 'GET' , label: '/api/setup-keys/{keyId}' }} + + + + Get information about a setup key + + ### Path Parameters + + + + The unique identifier of a setup key + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/setup-keys/{keyId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/setup-keys/{keyId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/setup-keys/{keyId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/setup-keys/{keyId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/setup-keys/{keyId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/setup-keys/{keyId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/setup-keys/{keyId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": 2531583362, + "name": "Default key", + "expires": "2023-06-01T14:47:22.291057Z", + "type": "reusable", + "valid": true, + "revoked": false, + "used_times": 2, + "last_used": "2023-05-05T09:00:35.477782Z", + "state": "valid", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "updated_at": "2023-05-05T09:00:35.477782Z", + "usage_limit": 0, + "ephemeral": true, + "allow_extra_dns_labels": true, + "key": "A6160****" +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "expires": "string", + "type": "string", + "valid": "boolean", + "revoked": "boolean", + "used_times": "integer", + "last_used": "string", + "state": "string", + "auto_groups": [ + "string" + ], + "updated_at": "string", + "usage_limit": "integer", + "ephemeral": "boolean", + "allow_extra_dns_labels": "boolean", + "key": "string" +} +``` + + + + + + +--- + + +## Update a Setup Key {{ tag: 'PUT' , label: '/api/setup-keys/{keyId}' }} + + + + Update information about a setup key + + ### Path Parameters + + + + The unique identifier of a setup key + + + + ### Request-Body Parameters + + + + Setup key revocation status + + + + + List of group IDs to auto-assign to peers registered with this key + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/setup-keys/{keyId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "revoked": false, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "revoked": false, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/setup-keys/{keyId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/setup-keys/{keyId}" +payload = json.dumps({ + "revoked": false, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/setup-keys/{keyId}" + method := "PUT" + + payload := strings.NewReader(`{ + "revoked": false, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/setup-keys/{keyId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "revoked": false, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "revoked": false, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/setup-keys/{keyId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/setup-keys/{keyId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "revoked": false, + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ] +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": 2531583362, + "name": "Default key", + "expires": "2023-06-01T14:47:22.291057Z", + "type": "reusable", + "valid": true, + "revoked": false, + "used_times": 2, + "last_used": "2023-05-05T09:00:35.477782Z", + "state": "valid", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "updated_at": "2023-05-05T09:00:35.477782Z", + "usage_limit": 0, + "ephemeral": true, + "allow_extra_dns_labels": true, + "key": "A6160****" +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "expires": "string", + "type": "string", + "valid": "boolean", + "revoked": "boolean", + "used_times": "integer", + "last_used": "string", + "state": "string", + "auto_groups": [ + "string" + ], + "updated_at": "string", + "usage_limit": "integer", + "ephemeral": "boolean", + "allow_extra_dns_labels": "boolean", + "key": "string" +} +``` + + + + + + +--- + + +## Delete a Setup Key {{ tag: 'DELETE' , label: '/api/setup-keys/{keyId}' }} + + + + Delete a Setup Key + + ### Path Parameters + + + + The unique identifier of a setup key + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/setup-keys/{keyId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/setup-keys/{keyId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/setup-keys/{keyId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/setup-keys/{keyId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/setup-keys/{keyId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/setup-keys/{keyId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/setup-keys/{keyId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- diff --git a/src/pages/ipa/resources/tokens.mdx b/src/pages/ipa/resources/tokens.mdx new file mode 100644 index 00000000..5cd0a7bc --- /dev/null +++ b/src/pages/ipa/resources/tokens.mdx @@ -0,0 +1,816 @@ +export const title = 'Tokens' + + + +## List all Tokens {{ tag: 'GET' , label: '/api/users/{userId}/tokens' }} + + + + Returns a list of all tokens for a user + + ### Path Parameters + + + + The unique identifier of a user + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/users/{userId}/tokens \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/users/{userId}/tokens', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/users/{userId}/tokens" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/users/{userId}/tokens" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/users/{userId}/tokens") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/users/{userId}/tokens") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/users/{userId}/tokens', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "ch8i54g6lnn4g9hqv7n0", + "name": "My first token", + "expiration_date": "2023-05-05T14:38:28.977616Z", + "created_by": "google-oauth2|277474792786460067937", + "created_at": "2023-05-02T14:48:20.465209Z", + "last_used": "2023-05-04T12:45:25.9723616Z" + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "name": "string", + "expiration_date": "string", + "created_by": "string", + "created_at": "string", + "last_used": "string" + } +] +``` + + + + + + +--- + + +## Create a Token {{ tag: 'POST' , label: '/api/users/{userId}/tokens' }} + + + + Create a new token for a user + + ### Path Parameters + + + + The unique identifier of a user + + + + ### Request-Body Parameters + + + + Name of the token + + + + + Expiration in days + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/users/{userId}/tokens \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "name": "My first token", + "expires_in": 30 +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "name": "My first token", + "expires_in": 30 +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/users/{userId}/tokens', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/users/{userId}/tokens" +payload = json.dumps({ + "name": "My first token", + "expires_in": 30 +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/users/{userId}/tokens" + method := "POST" + + payload := strings.NewReader(`{ + "name": "My first token", + "expires_in": 30 +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/users/{userId}/tokens") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "name": "My first token", + "expires_in": 30 +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "name": "My first token", + "expires_in": 30 +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/users/{userId}/tokens") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/users/{userId}/tokens', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "name": "My first token", + "expires_in": 30 +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "plain_token": {}, + "personal_access_token": { + "id": "ch8i54g6lnn4g9hqv7n0", + "name": "My first token", + "expiration_date": "2023-05-05T14:38:28.977616Z", + "created_by": "google-oauth2|277474792786460067937", + "created_at": "2023-05-02T14:48:20.465209Z", + "last_used": "2023-05-04T12:45:25.9723616Z" + } +} +``` +```json {{ title: 'Schema' }} +{ + "plain_token": "string", + "personal_access_token": { + "id": "string", + "name": "string", + "expiration_date": "string", + "created_by": "string", + "created_at": "string", + "last_used": "string" + } +} +``` + + + + + + +--- + + +## Retrieve a Token {{ tag: 'GET' , label: '/api/users/{userId}/tokens/{tokenId}' }} + + + + Returns a specific token for a user + + ### Path Parameters + + + + The unique identifier of a user + + + + The unique identifier of a token + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/users/{userId}/tokens/{tokenId} \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/users/{userId}/tokens/{tokenId}', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/users/{userId}/tokens/{tokenId}" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/users/{userId}/tokens/{tokenId}" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/users/{userId}/tokens/{tokenId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/users/{userId}/tokens/{tokenId}") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/users/{userId}/tokens/{tokenId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "ch8i54g6lnn4g9hqv7n0", + "name": "My first token", + "expiration_date": "2023-05-05T14:38:28.977616Z", + "created_by": "google-oauth2|277474792786460067937", + "created_at": "2023-05-02T14:48:20.465209Z", + "last_used": "2023-05-04T12:45:25.9723616Z" +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "name": "string", + "expiration_date": "string", + "created_by": "string", + "created_at": "string", + "last_used": "string" +} +``` + + + + + + +--- + + +## Delete a Token {{ tag: 'DELETE' , label: '/api/users/{userId}/tokens/{tokenId}' }} + + + + Delete a token for a user + + ### Path Parameters + + + + The unique identifier of a user + + + + The unique identifier of a token + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/users/{userId}/tokens/{tokenId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/users/{userId}/tokens/{tokenId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/users/{userId}/tokens/{tokenId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/users/{userId}/tokens/{tokenId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/users/{userId}/tokens/{tokenId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/users/{userId}/tokens/{tokenId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/users/{userId}/tokens/{tokenId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- diff --git a/src/pages/ipa/resources/users.mdx b/src/pages/ipa/resources/users.mdx new file mode 100644 index 00000000..ffd30a46 --- /dev/null +++ b/src/pages/ipa/resources/users.mdx @@ -0,0 +1,1510 @@ +export const title = 'Users' + + + +## List all Users {{ tag: 'GET' , label: '/api/users' }} + + + + Returns a list of all users + + ### Query Parameters + + + + Filters users and returns either regular users or service users + + + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/users \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/users', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/users" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/users" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/users") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/users") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/users', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +[ + { + "id": "google-oauth2|277474792786460067937", + "email": "demo@netbird.io", + "name": "Tom Schulz", + "role": "admin", + "status": "active", + "last_login": "2023-05-05T09:00:35.477782Z", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_current": true, + "is_service_user": false, + "is_blocked": false, + "issued": "api", + "permissions": { + "is_restricted": { + "type": "boolean", + "description": "Indicates whether this User's Peers view is restricted" + }, + "modules": { + "networks": { + "read": true, + "create": false, + "update": false, + "delete": false + }, + "peers": { + "read": false, + "create": false, + "update": false, + "delete": false + } + } + } + } +] +``` +```json {{ title: 'Schema' }} +[ + { + "id": "string", + "email": "string", + "name": "string", + "role": "string", + "status": "string", + "last_login": "string", + "auto_groups": [ + "string" + ], + "is_current": "boolean", + "is_service_user": "boolean", + "is_blocked": "boolean", + "issued": "string", + "permissions": { + "is_restricted": "boolean", + "modules": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": "boolean", + "propertyNames": "string" + }, + "propertyNames": "string", + "example": { + "networks": { + "read": true, + "create": false, + "update": false, + "delete": false + }, + "peers": { + "read": false, + "create": false, + "update": false, + "delete": false + } + } + } + } + } +] +``` + + + + + + +--- + + +## Create a User {{ tag: 'POST' , label: '/api/users' }} + + + + Creates a new service user or sends an invite to a regular user + + ### Request-Body Parameters + + + + User's Email to send invite to + + + + + User's full name + + + + + User's NetBird account role + + + + + Group IDs to auto-assign to peers registered by this user + + + + + Is true if this user is a service user + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/users \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "email": "demo@netbird.io", + "name": "Tom Schulz", + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_service_user": false +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "email": "demo@netbird.io", + "name": "Tom Schulz", + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_service_user": false +}); +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/users', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/users" +payload = json.dumps({ + "email": "demo@netbird.io", + "name": "Tom Schulz", + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_service_user": false +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/users" + method := "POST" + + payload := strings.NewReader(`{ + "email": "demo@netbird.io", + "name": "Tom Schulz", + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_service_user": false +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/users") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "email": "demo@netbird.io", + "name": "Tom Schulz", + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_service_user": false +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "email": "demo@netbird.io", + "name": "Tom Schulz", + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_service_user": false +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/users") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/users', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "email": "demo@netbird.io", + "name": "Tom Schulz", + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_service_user": false +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "google-oauth2|277474792786460067937", + "email": "demo@netbird.io", + "name": "Tom Schulz", + "role": "admin", + "status": "active", + "last_login": "2023-05-05T09:00:35.477782Z", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_current": true, + "is_service_user": false, + "is_blocked": false, + "issued": "api", + "permissions": { + "is_restricted": { + "type": "boolean", + "description": "Indicates whether this User's Peers view is restricted" + }, + "modules": { + "networks": { + "read": true, + "create": false, + "update": false, + "delete": false + }, + "peers": { + "read": false, + "create": false, + "update": false, + "delete": false + } + } + } +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "email": "string", + "name": "string", + "role": "string", + "status": "string", + "last_login": "string", + "auto_groups": [ + "string" + ], + "is_current": "boolean", + "is_service_user": "boolean", + "is_blocked": "boolean", + "issued": "string", + "permissions": { + "is_restricted": "boolean", + "modules": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": "boolean", + "propertyNames": "string" + }, + "propertyNames": "string", + "example": { + "networks": { + "read": true, + "create": false, + "update": false, + "delete": false + }, + "peers": { + "read": false, + "create": false, + "update": false, + "delete": false + } + } + } + } +} +``` + + + + + + +--- + + +## Update a User {{ tag: 'PUT' , label: '/api/users/{userId}' }} + + + + Update information about a User + + ### Path Parameters + + + + The unique identifier of a user + + + + ### Request-Body Parameters + + + + User's NetBird account role + + + + + Group IDs to auto-assign to peers registered by this user + + + + + If set to true then user is blocked and can't use the system + + + + + + + + + +```bash {{ title: 'cURL' }} +curl -X PUT https://api.netbird.io/api/users/{userId} \ +-H 'Accept: application/json' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Token ' \ +--data-raw '{ + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_blocked": false +}' +``` + +```js +const axios = require('axios'); +let data = JSON.stringify({ + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_blocked": false +}); +let config = { + method: 'put', + maxBodyLength: Infinity, + url: '/api/users/{userId}', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + }, + data : data +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/users/{userId}" +payload = json.dumps({ + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_blocked": false +}) +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("PUT", url, headers=headers, data=payload) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/users/{userId}" + method := "PUT" + + payload := strings.NewReader(`{ + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_blocked": false +}`) + client := &http.Client { + } + req, err := http.NewRequest(method, url, payload) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/users/{userId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Put.new(url) +request["Content-Type"] = "application/json" +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +request.body = JSON.dump({ + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_blocked": false +}) +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); +MediaType mediaType = MediaType.parse("application/json"); +RequestBody body = RequestBody.create(mediaType, '{ + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_blocked": false +}'); +Request request = new Request.Builder() + .url("https://api.netbird.io/api/users/{userId}") + .method("PUT", body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/users/{userId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'PUT', + CURLOPT_POSTFIELDS => '{ + "role": "admin", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_blocked": false +}', + CURLOPT_HTTPHEADER => array( + 'Content-Type: application/json', + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "google-oauth2|277474792786460067937", + "email": "demo@netbird.io", + "name": "Tom Schulz", + "role": "admin", + "status": "active", + "last_login": "2023-05-05T09:00:35.477782Z", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_current": true, + "is_service_user": false, + "is_blocked": false, + "issued": "api", + "permissions": { + "is_restricted": { + "type": "boolean", + "description": "Indicates whether this User's Peers view is restricted" + }, + "modules": { + "networks": { + "read": true, + "create": false, + "update": false, + "delete": false + }, + "peers": { + "read": false, + "create": false, + "update": false, + "delete": false + } + } + } +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "email": "string", + "name": "string", + "role": "string", + "status": "string", + "last_login": "string", + "auto_groups": [ + "string" + ], + "is_current": "boolean", + "is_service_user": "boolean", + "is_blocked": "boolean", + "issued": "string", + "permissions": { + "is_restricted": "boolean", + "modules": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": "boolean", + "propertyNames": "string" + }, + "propertyNames": "string", + "example": { + "networks": { + "read": true, + "create": false, + "update": false, + "delete": false + }, + "peers": { + "read": false, + "create": false, + "update": false, + "delete": false + } + } + } + } +} +``` + + + + + + +--- + + +## Delete a User {{ tag: 'DELETE' , label: '/api/users/{userId}' }} + + + + This method removes a user from accessing the system. For this leaves the IDP user intact unless the `--user-delete-from-idp` is passed to management startup. + + ### Path Parameters + + + + The unique identifier of a user + + + + + + +```bash {{ title: 'cURL' }} +curl -X DELETE https://api.netbird.io/api/users/{userId} \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'delete', + maxBodyLength: Infinity, + url: '/api/users/{userId}', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/users/{userId}" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("DELETE", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/users/{userId}" + method := "DELETE" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/users/{userId}") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Delete.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/users/{userId}") + .method("DELETE") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/users/{userId}', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'DELETE', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- + + +## Resend user invitation {{ tag: 'POST' , label: '/api/users/{userId}/invite' }} + + + + Resend user invitation + + ### Path Parameters + + + + The unique identifier of a user + + + + + + +```bash {{ title: 'cURL' }} +curl -X POST https://api.netbird.io/api/users/{userId}/invite \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'post', + maxBodyLength: Infinity, + url: '/api/users/{userId}/invite', + headers: { + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/users/{userId}/invite" + +headers = { + 'Authorization': 'Token ' +} + +response = requests.request("POST", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/users/{userId}/invite" + method := "POST" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/users/{userId}/invite") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Post.new(url) +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/users/{userId}/invite") + .method("POST") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/users/{userId}/invite', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_HTTPHEADER => array( + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + + + + +--- + + +## Retrieve current user {{ tag: 'GET' , label: '/api/users/current' }} + + + + Get information about the current user + + + + +```bash {{ title: 'cURL' }} +curl -X GET https://api.netbird.io/api/users/current \ +-H 'Accept: application/json' \ +-H 'Authorization: Token ' +``` + +```js +const axios = require('axios'); + +let config = { + method: 'get', + maxBodyLength: Infinity, + url: '/api/users/current', + headers: { + 'Accept': 'application/json', + 'Authorization': 'Token ' + } +}; + +axios(config) +.then((response) => { + console.log(JSON.stringify(response.data)); +}) +.catch((error) => { + console.log(error); +}); +``` + +```python +import requests +import json + +url = "https://api.netbird.io/api/users/current" + +headers = { + 'Accept': 'application/json', + 'Authorization': 'Token ' +} + +response = requests.request("GET", url, headers=headers) + +print(response.text) +``` + +```go +package main + +import ( + "fmt" + "strings" + "net/http" + "io/ioutil" +) + +func main() { + + url := "https://api.netbird.io/api/users/current" + method := "GET" + + client := &http.Client { + } + req, err := http.NewRequest(method, url, nil) + + if err != nil { + fmt.Println(err) + return + { + + req.Header.Add("Accept", "application/json") + req.Header.Add("Authorization", "Token ") + + res, err := client.Do(req) + if err != nil { + fmt.Println(err) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(string(body)) +} +``` + +```ruby +require "uri" +require "json" +require "net/http" + +url = URI("https://api.netbird.io/api/users/current") + +https = Net::HTTP.new(url.host, url.port) +https.use_ssl = true + +request = Net::HTTP::Get.new(url) +request["Accept"] = "application/json" +request["Authorization"] = "Token " + +response = https.request(request) +puts response.read_body +``` + +```java +OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + +Request request = new Request.Builder() + .url("https://api.netbird.io/api/users/current") + .method("GET") + .addHeader("Accept", "application/json") + .addHeader("Authorization: Token ") + .build(); +Response response = client.newCall(request).execute(); +``` + +```php + 'https://api.netbird.io/api/users/current', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Accept: application/json', + 'Authorization: Token ' + ), +)); + +$response = curl_exec($curl); + +curl_close($curl); +echo $response; +``` + + + + + +```json {{ title: 'Example' }} +{ + "id": "google-oauth2|277474792786460067937", + "email": "demo@netbird.io", + "name": "Tom Schulz", + "role": "admin", + "status": "active", + "last_login": "2023-05-05T09:00:35.477782Z", + "auto_groups": [ + "ch8i4ug6lnn4g9hqv7m0" + ], + "is_current": true, + "is_service_user": false, + "is_blocked": false, + "issued": "api", + "permissions": { + "is_restricted": { + "type": "boolean", + "description": "Indicates whether this User's Peers view is restricted" + }, + "modules": { + "networks": { + "read": true, + "create": false, + "update": false, + "delete": false + }, + "peers": { + "read": false, + "create": false, + "update": false, + "delete": false + } + } + } +} +``` +```json {{ title: 'Schema' }} +{ + "id": "string", + "email": "string", + "name": "string", + "role": "string", + "status": "string", + "last_login": "string", + "auto_groups": [ + "string" + ], + "is_current": "boolean", + "is_service_user": "boolean", + "is_blocked": "boolean", + "issued": "string", + "permissions": { + "is_restricted": "boolean", + "modules": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": "boolean", + "propertyNames": "string" + }, + "propertyNames": "string", + "example": { + "networks": { + "read": true, + "create": false, + "update": false, + "delete": false + }, + "peers": { + "read": false, + "create": false, + "update": false, + "delete": false + } + } + } + } +} +``` + + + + + + +---