diff --git a/src/pages/ipa/resources/accounts.mdx b/src/pages/ipa/resources/accounts.mdx
index 6481bd7c..d147463f 100644
--- a/src/pages/ipa/resources/accounts.mdx
+++ b/src/pages/ipa/resources/accounts.mdx
@@ -169,7 +169,10 @@ echo $response;
"peer_login_expiration": 43200,
"groups_propagation_enabled": true,
"jwt_groups_enabled": true,
- "jwt_groups_claim_name": "roles"
+ "jwt_groups_claim_name": "roles",
+ "extra": {
+ "peer_approval_enabled": true
+ }
}
}
]
@@ -183,7 +186,10 @@ echo $response;
"peer_login_expiration": "integer",
"groups_propagation_enabled": "boolean",
"jwt_groups_enabled": "boolean",
- "jwt_groups_claim_name": "string"
+ "jwt_groups_claim_name": "string",
+ "extra": {
+ "peer_approval_enabled": "boolean"
+ }
}
}
]
@@ -250,6 +256,13 @@ echo $response;
>
Name of the claim from which we extract groups names to add it to account groups.
+
+
+
+ (Cloud only) Enables or disables peer approval globally. If enabled, all peers added will be in pending state until approved by an admin.
@@ -267,7 +280,10 @@ curl -X PUT https://api.netbird.io/api/accounts/{accountId} \
"peer_login_expiration": 43200,
"groups_propagation_enabled": true,
"jwt_groups_enabled": true,
- "jwt_groups_claim_name": "roles"
+ "jwt_groups_claim_name": "roles",
+ "extra": {
+ "peer_approval_enabled": true
+ }
}
}'
```
@@ -280,7 +296,10 @@ let data = JSON.stringify({
"peer_login_expiration": 43200,
"groups_propagation_enabled": true,
"jwt_groups_enabled": true,
- "jwt_groups_claim_name": "roles"
+ "jwt_groups_claim_name": "roles",
+ "extra": {
+ "peer_approval_enabled": true
+ }
}
});
let config = {
@@ -315,7 +334,10 @@ payload = json.dumps({
"peer_login_expiration": 43200,
"groups_propagation_enabled": true,
"jwt_groups_enabled": true,
- "jwt_groups_claim_name": "roles"
+ "jwt_groups_claim_name": "roles",
+ "extra": {
+ "peer_approval_enabled": true
+ }
}
})
headers: {
@@ -350,7 +372,10 @@ func main() {
"peer_login_expiration": 43200,
"groups_propagation_enabled": true,
"jwt_groups_enabled": true,
- "jwt_groups_claim_name": "roles"
+ "jwt_groups_claim_name": "roles",
+ "extra": {
+ "peer_approval_enabled": true
+ }
}
}`)
client := &http.Client {
@@ -403,7 +428,10 @@ request.body = JSON.dump({
"peer_login_expiration": 43200,
"groups_propagation_enabled": true,
"jwt_groups_enabled": true,
- "jwt_groups_claim_name": "roles"
+ "jwt_groups_claim_name": "roles",
+ "extra": {
+ "peer_approval_enabled": true
+ }
}
})
response = https.request(request)
@@ -420,7 +448,10 @@ RequestBody body = RequestBody.create(mediaType, '{
"peer_login_expiration": 43200,
"groups_propagation_enabled": true,
"jwt_groups_enabled": true,
- "jwt_groups_claim_name": "roles"
+ "jwt_groups_claim_name": "roles",
+ "extra": {
+ "peer_approval_enabled": true
+ }
}
}');
Request request = new Request.Builder()
@@ -453,7 +484,10 @@ curl_setopt_array($curl, array(
"peer_login_expiration": 43200,
"groups_propagation_enabled": true,
"jwt_groups_enabled": true,
- "jwt_groups_claim_name": "roles"
+ "jwt_groups_claim_name": "roles",
+ "extra": {
+ "peer_approval_enabled": true
+ }
}
}',
CURLOPT_HTTPHEADER => array(
@@ -482,7 +516,10 @@ echo $response;
"peer_login_expiration": 43200,
"groups_propagation_enabled": true,
"jwt_groups_enabled": true,
- "jwt_groups_claim_name": "roles"
+ "jwt_groups_claim_name": "roles",
+ "extra": {
+ "peer_approval_enabled": true
+ }
}
}
```
@@ -494,7 +531,10 @@ echo $response;
"peer_login_expiration": "integer",
"groups_propagation_enabled": "boolean",
"jwt_groups_enabled": "boolean",
- "jwt_groups_claim_name": "string"
+ "jwt_groups_claim_name": "string",
+ "extra": {
+ "peer_approval_enabled": "boolean"
+ }
}
}
```
@@ -504,6 +544,172 @@ echo $response;
+
+
+
+---
+
+
+## Delete an Account {{ tag: 'DELETE' , label: '/api/accounts/{accountId}' }}
+
+
+
+ Deletes an account and all its resources. Only administrators and 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;
+```
+
+
+
+
+
+
+
diff --git a/src/pages/ipa/resources/dns.mdx b/src/pages/ipa/resources/dns.mdx
index f1eb9677..5c20d34d 100644
--- a/src/pages/ipa/resources/dns.mdx
+++ b/src/pages/ipa/resources/dns.mdx
@@ -239,14 +239,14 @@ echo $response;
maxLen={40}
>
- Nameserver group name
+ Name of nameserver group name
- Nameserver group description
+ Description of the nameserver group
- Nameserver group
+ Nameserver list
- Nameserver group tag groups
+ Distribution group IDs that defines group of peers that will use this nameserver group
- Nameserver group primary status
+ Defines if a nameserver group is primary that resolves all domains. It should be true only if domains list is empty.
- Nameserver group match domain list
+ Match domain list. It should be empty only if primary is true.
- Nameserver group search domain status for match domains. It should be true only if domains list is not empty.
+ Search domain status for match domains. It should be true only if domains list is not empty.
@@ -901,14 +901,14 @@ echo $response;
maxLen={40}
>
- Nameserver group name
+ Name of nameserver group name
- Nameserver group description
+ Description of the nameserver group
- Nameserver group
+ Nameserver list
- Nameserver group tag groups
+ Distribution group IDs that defines group of peers that will use this nameserver group
- Nameserver group primary status
+ Defines if a nameserver group is primary that resolves all domains. It should be true only if domains list is empty.
- Nameserver group match domain list
+ Match domain list. It should be empty only if primary is true.
- Nameserver group search domain status for match domains. It should be true only if domains list is not empty.
+ Search domain status for match domains. It should be true only if domains list is not empty.
diff --git a/src/pages/ipa/resources/peers.mdx b/src/pages/ipa/resources/peers.mdx
index 3d91ed18..ff8833c2 100644
--- a/src/pages/ipa/resources/peers.mdx
+++ b/src/pages/ipa/resources/peers.mdx
@@ -186,6 +186,7 @@ echo $response;
"login_expiration_enabled": false,
"login_expired": false,
"last_login": "2023-05-05T09:00:35.477782Z",
+ "approval_required": true,
"accessible_peers_count": 5
}
]
@@ -216,6 +217,7 @@ echo $response;
"login_expiration_enabled": "boolean",
"login_expired": "boolean",
"last_login": "string",
+ "approval_required": "boolean",
"accessible_peers_count": "integer"
}
]
@@ -423,6 +425,7 @@ echo $response;
"login_expiration_enabled": false,
"login_expired": false,
"last_login": "2023-05-05T09:00:35.477782Z",
+ "approval_required": true,
"accessible_peers": [
{
"id": "chacbco6lnnbn6cg5s90",
@@ -459,6 +462,7 @@ echo $response;
"login_expiration_enabled": "boolean",
"login_expired": "boolean",
"last_login": "string",
+ "approval_required": "boolean",
"accessible_peers": [
{
"id": "string",
@@ -518,6 +522,13 @@ echo $response;
>
+
+
+
+ (Cloud only) Indicates whether peer needs approval
@@ -532,7 +543,8 @@ curl -X PUT https://api.netbird.io/api/peers/{peerId} \
--data-raw '{
"name": "stage-host-1",
"ssh_enabled": true,
- "login_expiration_enabled": false
+ "login_expiration_enabled": false,
+ "approval_required": true
}'
```
@@ -541,7 +553,8 @@ const axios = require('axios');
let data = JSON.stringify({
"name": "stage-host-1",
"ssh_enabled": true,
- "login_expiration_enabled": false
+ "login_expiration_enabled": false,
+ "approval_required": true
});
let config = {
method: 'put',
@@ -572,7 +585,8 @@ url = "https://api.netbird.io/api/peers/{peerId}"
payload = json.dumps({
"name": "stage-host-1",
"ssh_enabled": true,
- "login_expiration_enabled": false
+ "login_expiration_enabled": false,
+ "approval_required": true
})
headers: {
'Content-Type': 'application/json',
@@ -603,7 +617,8 @@ func main() {
payload := strings.NewReader(`{
"name": "stage-host-1",
"ssh_enabled": true,
- "login_expiration_enabled": false
+ "login_expiration_enabled": false,
+ "approval_required": true
}`)
client := &http.Client {
}
@@ -652,7 +667,8 @@ request["Authorization"] = "Token "
request.body = JSON.dump({
"name": "stage-host-1",
"ssh_enabled": true,
- "login_expiration_enabled": false
+ "login_expiration_enabled": false,
+ "approval_required": true
})
response = https.request(request)
puts response.read_body
@@ -665,7 +681,8 @@ MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, '{
"name": "stage-host-1",
"ssh_enabled": true,
- "login_expiration_enabled": false
+ "login_expiration_enabled": false,
+ "approval_required": true
}');
Request request = new Request.Builder()
.url("https://api.netbird.io/api/peers/{peerId}")
@@ -694,7 +711,8 @@ curl_setopt_array($curl, array(
CURLOPT_POSTFIELDS => '{
"name": "stage-host-1",
"ssh_enabled": true,
- "login_expiration_enabled": false
+ "login_expiration_enabled": false,
+ "approval_required": true
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
@@ -739,6 +757,7 @@ echo $response;
"login_expiration_enabled": false,
"login_expired": false,
"last_login": "2023-05-05T09:00:35.477782Z",
+ "approval_required": true,
"accessible_peers": [
{
"id": "chacbco6lnnbn6cg5s90",
@@ -775,6 +794,7 @@ echo $response;
"login_expiration_enabled": "boolean",
"login_expired": "boolean",
"last_login": "string",
+ "approval_required": "boolean",
"accessible_peers": [
{
"id": "string",
diff --git a/src/pages/ipa/resources/routes.mdx b/src/pages/ipa/resources/routes.mdx
index ec29f7c3..72dde520 100644
--- a/src/pages/ipa/resources/routes.mdx
+++ b/src/pages/ipa/resources/routes.mdx
@@ -291,7 +291,7 @@ echo $response;
>
- Route group tag groups
+ Group IDs containing routing peers
@@ -909,7 +909,7 @@ echo $response;
>
- Route group tag groups
+ Group IDs containing routing peers
diff --git a/src/pages/ipa/resources/rules.mdx b/src/pages/ipa/resources/rules.mdx
index e3db97e5..b8b4d5c4 100644
--- a/src/pages/ipa/resources/rules.mdx
+++ b/src/pages/ipa/resources/rules.mdx
@@ -267,14 +267,14 @@ echo $response;
>
- List of source groups
+ List of source group IDs
- List of destination groups
+ List of destination group IDs
@@ -855,14 +855,14 @@ echo $response;
>
- List of source groups
+ List of source group IDs
- List of destination groups
+ List of destination group IDs
diff --git a/src/pages/ipa/resources/setup-keys.mdx b/src/pages/ipa/resources/setup-keys.mdx
index 17402080..557a68da 100644
--- a/src/pages/ipa/resources/setup-keys.mdx
+++ b/src/pages/ipa/resources/setup-keys.mdx
@@ -174,7 +174,7 @@ echo $response;
"last_used": "2023-05-05T09:00:35.477782Z",
"state": "valid",
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"updated_at": "2023-05-05T09:00:35.477782Z",
"usage_limit": 0,
@@ -293,7 +293,7 @@ curl -X POST https://api.netbird.io/api/setup-keys \
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -308,7 +308,7 @@ let data = JSON.stringify({
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -345,7 +345,7 @@ payload = json.dumps({
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -382,7 +382,7 @@ func main() {
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -437,7 +437,7 @@ request.body = JSON.dump({
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -456,7 +456,7 @@ RequestBody body = RequestBody.create(mediaType, '{
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -491,7 +491,7 @@ curl_setopt_array($curl, array(
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -527,7 +527,7 @@ echo $response;
"last_used": "2023-05-05T09:00:35.477782Z",
"state": "valid",
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"updated_at": "2023-05-05T09:00:35.477782Z",
"usage_limit": 0,
@@ -745,7 +745,7 @@ echo $response;
"last_used": "2023-05-05T09:00:35.477782Z",
"state": "valid",
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"updated_at": "2023-05-05T09:00:35.477782Z",
"usage_limit": 0,
@@ -869,7 +869,7 @@ curl -X PUT https://api.netbird.io/api/setup-keys/{keyId} \
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -884,7 +884,7 @@ let data = JSON.stringify({
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -921,7 +921,7 @@ payload = json.dumps({
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -958,7 +958,7 @@ func main() {
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -1013,7 +1013,7 @@ request.body = JSON.dump({
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -1032,7 +1032,7 @@ RequestBody body = RequestBody.create(mediaType, '{
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -1067,7 +1067,7 @@ curl_setopt_array($curl, array(
"expires_in": 86400,
"revoked": false,
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"usage_limit": 0,
"ephemeral": true
@@ -1103,7 +1103,7 @@ echo $response;
"last_used": "2023-05-05T09:00:35.477782Z",
"state": "valid",
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"updated_at": "2023-05-05T09:00:35.477782Z",
"usage_limit": 0,
diff --git a/src/pages/ipa/resources/users.mdx b/src/pages/ipa/resources/users.mdx
index 1abf95c7..ecf80dab 100644
--- a/src/pages/ipa/resources/users.mdx
+++ b/src/pages/ipa/resources/users.mdx
@@ -178,7 +178,7 @@ echo $response;
"status": "active",
"last_login": "2023-05-05T09:00:35.477782Z",
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"is_current": true,
"is_service_user": false,
@@ -252,7 +252,7 @@ echo $response;
>
- Groups to auto-assign to peers registered by this user
+ Group IDs to auto-assign to peers registered by this user
- Groups to auto-assign to peers registered by this user
+ Group IDs to auto-assign to peers registered by this user
"
request.body = JSON.dump({
"role": "admin",
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"is_blocked": false
})
@@ -723,7 +723,7 @@ MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, '{
"role": "admin",
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"is_blocked": false
}');
@@ -754,7 +754,7 @@ curl_setopt_array($curl, array(
CURLOPT_POSTFIELDS => '{
"role": "admin",
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"is_blocked": false
}',
@@ -785,7 +785,7 @@ echo $response;
"status": "active",
"last_login": "2023-05-05T09:00:35.477782Z",
"auto_groups": [
- "devs"
+ "ch8i4ug6lnn4g9hqv7m0"
],
"is_current": true,
"is_service_user": false,