Files
netbird-docs/generator/api.json/openapi.json
2023-05-09 17:51:27 +02:00

3271 lines
92 KiB
JSON

{
"openapi" : "3.0.1",
"info" : {
"title" : "NetBird REST API",
"description" : "API to manipulate groups, rules, policies and retrieve information about peers and users",
"version" : "0.0.1"
},
"servers" : [ {
"url" : "https://api.netbird.io",
"description" : "Default server"
} ],
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ],
"tags" : [ {
"name" : "Users",
"description" : "Interact with and view information about users."
}, {
"name" : "Tokens",
"description" : "Interact with and view information about tokens."
}, {
"name" : "Peers",
"description" : "Interact with and view information about peers."
}, {
"name" : "Setup Keys",
"description" : "Interact with and view information about setup keys."
}, {
"name" : "Groups",
"description" : "Interact with and view information about groups."
}, {
"name" : "Rules",
"description" : "Interact with and view information about rules."
}, {
"name" : "Policies",
"description" : "Interact with and view information about policies."
}, {
"name" : "Routes",
"description" : "Interact with and view information about routes."
}, {
"name" : "DNS",
"description" : "Interact with and view information about DNS configuration."
}, {
"name" : "Events",
"description" : "View information about the account and network events."
}, {
"name" : "Accounts",
"description" : "View information about the accounts."
} ],
"paths" : {
"/api/accounts" : {
"get" : {
"tags" : [ "Accounts" ],
"summary" : "List all Accounts",
"description" : "Returns a list of accounts of a user. Always returns a list of one account.",
"operationId" : "getAccounts",
"responses" : {
"200" : {
"description" : "A JSON array of accounts",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/Account"
}
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/accounts/{accountId}" : {
"put" : {
"tags" : [ "Accounts" ],
"summary" : "Update an Account",
"description" : "Update information about an account",
"operationId" : "updateAccount",
"parameters" : [ {
"name" : "accountId",
"in" : "path",
"description" : "The unique identifier of an account",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"requestBody" : {
"description" : "update an account",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/AccountSettings"
}
}
}
},
"responses" : {
"200" : {
"description" : "An Account object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Account"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/users" : {
"get" : {
"tags" : [ "Users" ],
"summary" : "List all Users",
"description" : "Returns a list of all users",
"operationId" : "getUsers",
"parameters" : [ {
"name" : "service_user",
"in" : "query",
"description" : "Filters users and returns either regular users or service users",
"required" : false,
"style" : "form",
"explode" : true,
"schema" : {
"type" : "boolean"
}
} ],
"responses" : {
"200" : {
"description" : "A JSON array of Users",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/User"
}
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"post" : {
"tags" : [ "Users" ],
"summary" : "Create a User",
"description" : "Creates a new service user or sends an invite to a regular user",
"operationId" : "createUser",
"requestBody" : {
"description" : "User invite information",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/UserCreateRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A User object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/User"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/users/{userId}" : {
"put" : {
"tags" : [ "Users" ],
"summary" : "Update a User",
"description" : "Update information about a User",
"operationId" : "updateUser",
"parameters" : [ {
"name" : "userId",
"in" : "path",
"description" : "The unique identifier of a user",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"requestBody" : {
"description" : "User update",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/UserRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A User object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/User"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"delete" : {
"tags" : [ "Users" ],
"summary" : "Delete a User",
"description" : "Delete a User",
"operationId" : "deleteUser",
"parameters" : [ {
"name" : "userId",
"in" : "path",
"description" : "The unique identifier of a user",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "Delete status code",
"content" : { }
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/users/{userId}/tokens" : {
"get" : {
"tags" : [ "Tokens" ],
"summary" : "List all Tokens",
"description" : "Returns a list of all tokens for a user",
"operationId" : "getTokens",
"parameters" : [ {
"name" : "userId",
"in" : "path",
"description" : "The unique identifier of a user",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "A JSON Array of PersonalAccessTokens",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/PersonalAccessToken"
}
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"post" : {
"tags" : [ "Tokens" ],
"summary" : "Create a Token",
"description" : "Create a new token for a user",
"operationId" : "createToken",
"parameters" : [ {
"name" : "userId",
"in" : "path",
"description" : "The unique identifier of a user",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"requestBody" : {
"description" : "PersonalAccessToken create parameters",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/PersonalAccessTokenRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "The token in plain text",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/PersonalAccessTokenGenerated"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/users/{userId}/tokens/{tokenId}" : {
"get" : {
"tags" : [ "Tokens" ],
"summary" : "Retrieve a Token",
"description" : "Returns a specific token for a user",
"operationId" : "getToken",
"parameters" : [ {
"name" : "userId",
"in" : "path",
"description" : "The unique identifier of a user",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
}, {
"name" : "tokenId",
"in" : "path",
"description" : "The unique identifier of a token",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "A PersonalAccessTokens Object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/PersonalAccessToken"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"delete" : {
"tags" : [ "Tokens" ],
"summary" : "Delete a Token",
"description" : "Delete a token for a user",
"operationId" : "deleteToken",
"parameters" : [ {
"name" : "userId",
"in" : "path",
"description" : "The unique identifier of a user",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
}, {
"name" : "tokenId",
"in" : "path",
"description" : "The unique identifier of a token",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "Delete status code",
"content" : { }
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/peers" : {
"get" : {
"tags" : [ "Peers" ],
"summary" : "List all Peers",
"description" : "Returns a list of all peers",
"operationId" : "getPeers",
"responses" : {
"200" : {
"description" : "A JSON Array of Peers",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/Peer"
}
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/peers/{peerId}" : {
"get" : {
"tags" : [ "Peers" ],
"summary" : "Retrieve a Peer",
"description" : "Get information about a peer",
"operationId" : "getPeer",
"parameters" : [ {
"name" : "peerId",
"in" : "path",
"description" : "The unique identifier of a peer",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "A Peer object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Peer"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"put" : {
"tags" : [ "Peers" ],
"summary" : "Update a Peer",
"description" : "Update information about a peer",
"parameters" : [ {
"name" : "peerId",
"in" : "path",
"description" : "The unique identifier of a peer",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"requestBody" : {
"description" : "update a peer",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/PeerRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Peer object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Peer"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"delete" : {
"tags" : [ "Peers" ],
"summary" : "Delete a Peer",
"description" : "Delete a peer",
"parameters" : [ {
"name" : "peerId",
"in" : "path",
"description" : "The unique identifier of a peer",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "Delete status code",
"content" : { }
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/setup-keys" : {
"get" : {
"tags" : [ "Setup Keys" ],
"summary" : "List all Setup Keys",
"description" : "Returns a list of all Setup Keys",
"responses" : {
"200" : {
"description" : "A JSON Array of Setup keys",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/SetupKey"
}
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"post" : {
"tags" : [ "Setup Keys" ],
"summary" : "Create a Setup Key",
"description" : "Creates a Setup Key",
"requestBody" : {
"description" : "New Setup Key request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SetupKeyRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Setup Keys Object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SetupKey"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/setup-keys/{keyId}" : {
"get" : {
"tags" : [ "Setup Keys" ],
"summary" : "Retrieve a Setup Key",
"description" : "Get information about a Setup Key",
"parameters" : [ {
"name" : "keyId",
"in" : "path",
"description" : "The unique identifier of a setup key",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "A Setup Key object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SetupKey"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"put" : {
"tags" : [ "Setup Keys" ],
"summary" : "Update a Setup Key",
"description" : "Update information about a Setup Key",
"parameters" : [ {
"name" : "keyId",
"in" : "path",
"description" : "The unique identifier of a setup key",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"requestBody" : {
"description" : "update to Setup Key",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SetupKeyRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Setup Key object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SetupKey"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/groups" : {
"get" : {
"tags" : [ "Groups" ],
"summary" : "List all Groups",
"description" : "Returns a list of all Groups",
"responses" : {
"200" : {
"description" : "A JSON Array of Groups",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/Group"
}
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"post" : {
"tags" : [ "Groups" ],
"summary" : "Create a Group",
"description" : "Creates a Group",
"requestBody" : {
"description" : "New Group request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/GroupRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Group Object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Group"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/groups/{groupId}" : {
"get" : {
"tags" : [ "Groups" ],
"summary" : "Retrieve a Group",
"description" : "Get information about a Group",
"parameters" : [ {
"name" : "groupId",
"in" : "path",
"description" : "The unique identifier of a group",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "A Group object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Group"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"put" : {
"tags" : [ "Groups" ],
"summary" : "Update a Group",
"description" : "Update/Replace a Group",
"parameters" : [ {
"name" : "groupId",
"in" : "path",
"description" : "The unique identifier of a group",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"requestBody" : {
"description" : "Update Group request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/GroupRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Group object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Group"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"delete" : {
"tags" : [ "Groups" ],
"summary" : "Delete a Group",
"description" : "Delete a Group",
"parameters" : [ {
"name" : "groupId",
"in" : "path",
"description" : "The unique identifier of a group",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "Delete status code",
"content" : { }
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/rules" : {
"get" : {
"tags" : [ "Rules" ],
"summary" : "List all Rules",
"description" : "Returns a list of all Rules",
"responses" : {
"200" : {
"description" : "A JSON Array of Rules",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/Rule"
}
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"post" : {
"tags" : [ "Rules" ],
"summary" : "Create a Rule",
"description" : "Creates a Rule",
"requestBody" : {
"description" : "New Rule request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/RuleRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Rule Object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Rule"
}
}
}
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/rules/{ruleId}" : {
"get" : {
"tags" : [ "Rules" ],
"summary" : "Retrieve a Rule",
"description" : "Get information about a Rules",
"parameters" : [ {
"name" : "ruleId",
"in" : "path",
"description" : "The unique identifier of a rule",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "A Rule object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Rule"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"put" : {
"tags" : [ "Rules" ],
"summary" : "Update a Rule",
"description" : "Update/Replace a Rule",
"parameters" : [ {
"name" : "ruleId",
"in" : "path",
"description" : "The unique identifier of a rule",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"requestBody" : {
"description" : "Update Rule request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/RuleRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Rule object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Rule"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"delete" : {
"tags" : [ "Rules" ],
"summary" : "Delete a Rule",
"description" : "Delete a Rule",
"parameters" : [ {
"name" : "ruleId",
"in" : "path",
"description" : "The unique identifier of a rule",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "Delete status code",
"content" : { }
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/policies" : {
"get" : {
"tags" : [ "Policies" ],
"summary" : "List all Policies",
"description" : "Returns a list of all Policies",
"responses" : {
"200" : {
"description" : "A JSON Array of Policies",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/Policy"
}
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"post" : {
"tags" : [ "Policies" ],
"summary" : "Create a Policy",
"description" : "Creates a Policy",
"requestBody" : {
"description" : "New Policy request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/PolicyMinimum"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Policy Object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Policy"
}
}
}
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/policies/{policyId}" : {
"get" : {
"tags" : [ "Policies" ],
"summary" : "Retrieve a Policy",
"description" : "Get information about a Policies",
"parameters" : [ {
"name" : "policyId",
"in" : "path",
"description" : "The unique identifier of a policy",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "A Policy object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Policy"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"put" : {
"tags" : [ "Policies" ],
"summary" : "Update a Policy",
"description" : "Update/Replace a Policy",
"parameters" : [ {
"name" : "policyId",
"in" : "path",
"description" : "The unique identifier of a policy",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"requestBody" : {
"description" : "Update Policy request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/PolicyMinimum"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Policy object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Policy"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"delete" : {
"tags" : [ "Policies" ],
"summary" : "Delete a Policy",
"description" : "Delete a Policy",
"parameters" : [ {
"name" : "policyId",
"in" : "path",
"description" : "The unique identifier of a policy",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "Delete status code",
"content" : { }
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/routes" : {
"get" : {
"tags" : [ "Routes" ],
"summary" : "List all Routes",
"description" : "Returns a list of all routes",
"responses" : {
"200" : {
"description" : "A JSON Array of Routes",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/Route"
}
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"post" : {
"tags" : [ "Routes" ],
"summary" : "Create a Route",
"description" : "Creates a Route",
"requestBody" : {
"description" : "New Routes request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/RouteRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Route Object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Route"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/routes/{routeId}" : {
"get" : {
"tags" : [ "Routes" ],
"summary" : "Retrieve a Route",
"description" : "Get information about a Routes",
"parameters" : [ {
"name" : "routeId",
"in" : "path",
"description" : "The unique identifier of a route",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "A Route object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Route"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"put" : {
"tags" : [ "Routes" ],
"summary" : "Update a Route",
"description" : "Update/Replace a Route",
"parameters" : [ {
"name" : "routeId",
"in" : "path",
"description" : "The unique identifier of a route",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"requestBody" : {
"description" : "Update Route request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/RouteRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Route object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Route"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"delete" : {
"tags" : [ "Routes" ],
"summary" : "Delete a Route",
"description" : "Delete a Route",
"parameters" : [ {
"name" : "routeId",
"in" : "path",
"description" : "The unique identifier of a route",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "Delete status code",
"content" : { }
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/dns/nameservers" : {
"get" : {
"tags" : [ "DNS" ],
"summary" : "List all Nameserver Groups",
"description" : "Returns a list of all Nameserver Groups",
"responses" : {
"200" : {
"description" : "A JSON Array of Nameserver Groups",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/NameserverGroup"
}
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"post" : {
"tags" : [ "DNS" ],
"summary" : "Create a Nameserver Group",
"description" : "Creates a Nameserver Group",
"requestBody" : {
"description" : "New Nameserver Groups request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/NameserverGroupRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Nameserver Groups Object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/NameserverGroup"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/dns/nameservers/{nsgroupId}" : {
"get" : {
"tags" : [ "DNS" ],
"summary" : "Retrieve a Nameserver Group",
"description" : "Get information about a Nameserver Groups",
"parameters" : [ {
"name" : "nsgroupId",
"in" : "path",
"description" : "The unique identifier of a Nameserver Group",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "A Nameserver Group object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/NameserverGroup"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"put" : {
"tags" : [ "DNS" ],
"summary" : "Update a Nameserver Group",
"description" : "Update/Replace a Nameserver Group",
"parameters" : [ {
"name" : "nsgroupId",
"in" : "path",
"description" : "The unique identifier of a Nameserver Group",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"requestBody" : {
"description" : "Update Nameserver Group request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/NameserverGroupRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "A Nameserver Group object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/NameserverGroup"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"delete" : {
"tags" : [ "DNS" ],
"summary" : "Delete a Nameserver Group",
"description" : "Delete a Nameserver Group",
"parameters" : [ {
"name" : "nsgroupId",
"in" : "path",
"description" : "The unique identifier of a Nameserver Group",
"required" : true,
"style" : "simple",
"explode" : false,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "Delete status code",
"content" : { }
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/dns/settings" : {
"get" : {
"tags" : [ "DNS" ],
"summary" : "Retrieve DNS Settings",
"description" : "Returns a DNS settings object",
"responses" : {
"200" : {
"description" : "A JSON Object of DNS Setting",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/DNSSettings"
}
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
},
"put" : {
"tags" : [ "DNS" ],
"summary" : "Update DNS Settings",
"description" : "Updates a DNS settings object",
"requestBody" : {
"description" : "A DNS settings object",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/DNSSettings"
}
}
}
},
"responses" : {
"200" : {
"description" : "A JSON Object of DNS Setting",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/DNSSettings"
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
},
"/api/events" : {
"get" : {
"tags" : [ "Events" ],
"summary" : "List all Events",
"description" : "Returns a list of all events",
"responses" : {
"200" : {
"description" : "A JSON Array of Events",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/Event"
}
}
}
}
},
"400" : {
"description" : "Bad Request",
"content" : { }
},
"401" : {
"description" : "Requires authentication",
"content" : { }
},
"403" : {
"description" : "Forbidden",
"content" : { }
},
"500" : {
"description" : "Internal Server Error",
"content" : { }
}
},
"security" : [ {
"BearerAuth" : [ ]
}, {
"TokenAuth" : [ ]
} ]
}
}
},
"components" : {
"schemas" : {
"Account" : {
"required" : [ "id", "settings" ],
"properties" : {
"id" : {
"type" : "string",
"description" : "Account ID",
"example" : "ch8i4ug6lnn4g9hqv7l0"
},
"settings" : {
"$ref" : "#/components/schemas/AccountSettings"
}
}
},
"AccountSettings" : {
"required" : [ "peer_login_expiration", "peer_login_expiration_enabled" ],
"properties" : {
"peer_login_expiration_enabled" : {
"type" : "boolean",
"description" : "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).",
"example" : true
},
"peer_login_expiration" : {
"type" : "integer",
"description" : "Period of time after which peer login expires (seconds).",
"example" : 43200
}
}
},
"User" : {
"required" : [ "auto_groups", "email", "id", "name", "role", "status" ],
"type" : "object",
"properties" : {
"id" : {
"type" : "string",
"description" : "User ID",
"example" : "google-oauth2|277474792786460067937"
},
"email" : {
"type" : "string",
"description" : "User's email address",
"example" : "demo@netbird.io"
},
"name" : {
"type" : "string",
"description" : "User's name from idp provider",
"example" : "Tom Schulz"
},
"role" : {
"type" : "string",
"description" : "User's NetBird account role",
"example" : "admin"
},
"status" : {
"type" : "string",
"description" : "User's status",
"example" : "active",
"enum" : [ "active", "invited", "disabled" ]
},
"auto_groups" : {
"type" : "array",
"description" : "Groups to auto-assign to peers registered by this user",
"items" : {
"type" : "string",
"example" : "devs"
}
},
"is_current" : {
"type" : "boolean",
"description" : "Is true if authenticated user is the same as this user",
"readOnly" : true,
"example" : true
},
"is_service_user" : {
"type" : "boolean",
"description" : "Is true if this user is a service user",
"readOnly" : true,
"example" : false
}
}
},
"UserRequest" : {
"required" : [ "auto_groups", "role" ],
"type" : "object",
"properties" : {
"role" : {
"type" : "string",
"description" : "User's NetBird account role",
"example" : "admin"
},
"auto_groups" : {
"type" : "array",
"description" : "Groups to auto-assign to peers registered by this user",
"items" : {
"type" : "string",
"example" : "devs"
}
}
}
},
"UserCreateRequest" : {
"required" : [ "auto_groups", "is_service_user", "role" ],
"type" : "object",
"properties" : {
"email" : {
"type" : "string",
"description" : "User's Email to send invite to",
"example" : "demo@netbird.io"
},
"name" : {
"type" : "string",
"description" : "User's full name",
"example" : "Tom Schulz"
},
"role" : {
"type" : "string",
"description" : "User's NetBird account role",
"example" : "admin"
},
"auto_groups" : {
"type" : "array",
"description" : "Groups to auto-assign to peers registered by this user",
"items" : {
"type" : "string",
"example" : "devs"
}
},
"is_service_user" : {
"type" : "boolean",
"description" : "Is true if this user is a service user",
"example" : false
}
}
},
"PeerMinimum" : {
"required" : [ "id", "name" ],
"type" : "object",
"properties" : {
"id" : {
"type" : "string",
"description" : "Peer ID",
"example" : "chacbco6lnnbn6cg5s90"
},
"name" : {
"type" : "string",
"description" : "Peer's hostname",
"example" : "stage-host-1"
}
}
},
"PeerRequest" : {
"required" : [ "login_expiration_enabled", "name", "ssh_enabled" ],
"type" : "object",
"properties" : {
"name" : {
"type" : "string",
"example" : "stage-host-1"
},
"ssh_enabled" : {
"type" : "boolean",
"example" : true
},
"login_expiration_enabled" : {
"type" : "boolean",
"example" : false
}
}
},
"Peer" : {
"allOf" : [ {
"$ref" : "#/components/schemas/PeerMinimum"
}, {
"required" : [ "connected", "dns_label", "groups", "hostname", "ip", "last_login", "last_seen", "login_expiration_enabled", "login_expired", "os", "ssh_enabled", "version" ],
"type" : "object",
"properties" : {
"ip" : {
"type" : "string",
"description" : "Peer's IP address",
"example" : "10.64.0.1"
},
"connected" : {
"type" : "boolean",
"description" : "Peer to Management connection status",
"example" : true
},
"last_seen" : {
"type" : "string",
"description" : "Last time peer connected to Netbird's management service",
"format" : "date-time",
"example" : "2023-05-05T10:05:26.420578Z"
},
"os" : {
"type" : "string",
"description" : "Peer's operating system and version",
"example" : "Darwin 13.2.1"
},
"version" : {
"type" : "string",
"description" : "Peer's daemon or cli version",
"example" : "0.14.0"
},
"groups" : {
"type" : "array",
"description" : "Groups that the peer belongs to",
"items" : {
"$ref" : "#/components/schemas/GroupMinimum"
}
},
"ssh_enabled" : {
"type" : "boolean",
"description" : "Indicates whether SSH server is enabled on this peer",
"example" : true
},
"user_id" : {
"type" : "string",
"description" : "User ID of the user that enrolled this peer",
"example" : "google-oauth2|277474792786460067937"
},
"hostname" : {
"type" : "string",
"description" : "Hostname of the machine",
"example" : "stage-host-1"
},
"ui_version" : {
"type" : "string",
"description" : "Peer's desktop UI version",
"example" : "0.14.0"
},
"dns_label" : {
"type" : "string",
"description" : "Peer's DNS label is the parsed peer name for domain resolution. It is used to form an FQDN by appending the account's domain to the peer label. e.g. peer-dns-label.netbird.cloud",
"example" : "stage-host-1.netbird.cloud"
},
"login_expiration_enabled" : {
"type" : "boolean",
"description" : "Indicates whether peer login expiration has been enabled or not",
"example" : false
},
"login_expired" : {
"type" : "boolean",
"description" : "Indicates whether peer's login expired or not",
"example" : false
},
"last_login" : {
"type" : "string",
"description" : "Last time this peer performed log in (authentication). E.g., user authenticated.",
"format" : "date-time",
"example" : "2023-05-05T09:00:35.477782Z"
}
}
} ]
},
"SetupKey" : {
"required" : [ "auto_groups", "expires", "id", "key", "last_used", "name", "revoked", "state", "type", "updated_at", "usage_limit", "used_times", "valid" ],
"type" : "object",
"properties" : {
"id" : {
"type" : "string",
"description" : "Setup Key ID",
"example" : "2531583362"
},
"key" : {
"type" : "string",
"description" : "Setup Key value",
"example" : "A616097E-FCF0-48FA-9354-CA4A61142761"
},
"name" : {
"type" : "string",
"description" : "Setup key name identifier",
"example" : "Default key"
},
"expires" : {
"type" : "string",
"description" : "Setup Key expiration date",
"format" : "date-time",
"example" : "2023-06-01T14:47:22.291057Z"
},
"type" : {
"type" : "string",
"description" : "Setup key type, one-off for single time usage and reusable",
"example" : "reusable"
},
"valid" : {
"type" : "boolean",
"description" : "Setup key validity status",
"example" : true
},
"revoked" : {
"type" : "boolean",
"description" : "Setup key revocation status",
"example" : false
},
"used_times" : {
"type" : "integer",
"description" : "Usage count of setup key",
"example" : 2
},
"last_used" : {
"type" : "string",
"description" : "Setup key last usage date",
"format" : "date-time",
"example" : "2023-05-05T09:00:35.477782Z"
},
"state" : {
"type" : "string",
"description" : "Setup key status, \"valid\", \"overused\",\"expired\" or \"revoked\"",
"example" : "valid"
},
"auto_groups" : {
"type" : "array",
"description" : "Setup key groups to auto-assign to peers registered with this key",
"items" : {
"type" : "string",
"example" : "devs"
}
},
"updated_at" : {
"type" : "string",
"description" : "Setup key last update date",
"format" : "date-time",
"example" : "2023-05-05T09:00:35.477782Z"
},
"usage_limit" : {
"type" : "integer",
"description" : "A number of times this key can be used. The value of 0 indicates the unlimited usage.",
"example" : 0
}
}
},
"SetupKeyRequest" : {
"required" : [ "auto_groups", "expires_in", "name", "revoked", "type", "usage_limit" ],
"type" : "object",
"properties" : {
"name" : {
"type" : "string",
"description" : "Setup Key name",
"example" : "Default key"
},
"type" : {
"type" : "string",
"description" : "Setup key type, one-off for single time usage and reusable",
"example" : "reusable"
},
"expires_in" : {
"type" : "integer",
"description" : "Expiration time in seconds",
"example" : 43200
},
"revoked" : {
"type" : "boolean",
"description" : "Setup key revocation status",
"example" : false
},
"auto_groups" : {
"type" : "array",
"description" : "Setup key groups to auto-assign to peers registered with this key",
"items" : {
"type" : "string",
"example" : "devs"
}
},
"usage_limit" : {
"type" : "integer",
"description" : "A number of times this key can be used. The value of 0 indicates the unlimited usage.",
"example" : 0
}
}
},
"PersonalAccessToken" : {
"required" : [ "created_at", "created_by", "expiration_date", "id", "name" ],
"type" : "object",
"properties" : {
"id" : {
"type" : "string",
"description" : "ID of a token",
"example" : "ch8i54g6lnn4g9hqv7n0"
},
"name" : {
"type" : "string",
"description" : "Name of the token",
"example" : "My first token"
},
"expiration_date" : {
"type" : "string",
"description" : "Date the token expires",
"format" : "date-time",
"example" : "2023-05-05T14:38:28.977616Z"
},
"created_by" : {
"type" : "string",
"description" : "User ID of the user who created the token",
"example" : "google-oauth2|277474792786460067937"
},
"created_at" : {
"type" : "string",
"description" : "Date the token was created",
"format" : "date-time",
"example" : "2023-05-02T14:48:20.465209Z"
},
"last_used" : {
"type" : "string",
"description" : "Date the token was last used",
"format" : "date-time",
"example" : "2023-05-04T12:45:25.9723616Z"
}
}
},
"PersonalAccessTokenGenerated" : {
"required" : [ "personal_access_token", "plain_token" ],
"type" : "object",
"properties" : {
"plain_token" : {
"type" : "string",
"description" : "Plain text representation of the generated token",
"example" : "2023-05-02T14:48:20.465209Z"
},
"personal_access_token" : {
"$ref" : "#/components/schemas/PersonalAccessToken"
}
}
},
"PersonalAccessTokenRequest" : {
"required" : [ "expires_in", "name" ],
"type" : "object",
"properties" : {
"name" : {
"type" : "string",
"description" : "Name of the token",
"example" : "My first token"
},
"expires_in" : {
"maximum" : 365,
"minimum" : 1,
"type" : "integer",
"description" : "Expiration in days",
"example" : 30
}
}
},
"GroupMinimum" : {
"required" : [ "id", "name", "peers_count" ],
"type" : "object",
"properties" : {
"id" : {
"type" : "string",
"description" : "Group ID",
"example" : "ch8i4ug6lnn4g9hqv7m0"
},
"name" : {
"type" : "string",
"description" : "Group Name identifier",
"example" : "devs"
},
"peers_count" : {
"type" : "integer",
"description" : "Count of peers associated to the group",
"example" : 2
}
}
},
"GroupRequest" : {
"required" : [ "name" ],
"type" : "object",
"properties" : {
"name" : {
"type" : "string",
"description" : "Group name identifier",
"example" : "devs"
},
"peers" : {
"type" : "array",
"description" : "List of peers ids",
"example" : "ch8i4ug6lnn4g9hqv7m1",
"items" : {
"type" : "string"
}
}
}
},
"Group" : {
"allOf" : [ {
"$ref" : "#/components/schemas/GroupMinimum"
}, {
"required" : [ "peers" ],
"type" : "object",
"properties" : {
"peers" : {
"type" : "array",
"description" : "List of peers object",
"items" : {
"$ref" : "#/components/schemas/PeerMinimum"
}
}
}
} ]
},
"RuleMinimum" : {
"required" : [ "description", "disabled", "flow", "name" ],
"type" : "object",
"properties" : {
"name" : {
"type" : "string",
"description" : "Rule name identifier",
"example" : "Default"
},
"description" : {
"type" : "string",
"description" : "Rule friendly description",
"example" : "This is a default rule that allows connections between all the resources"
},
"disabled" : {
"type" : "boolean",
"description" : "Rules status",
"example" : false
},
"flow" : {
"type" : "string",
"description" : "Rule flow, currently, only \"bidirect\" for bi-directional traffic is accepted",
"example" : "bidirect"
}
}
},
"RuleRequest" : {
"allOf" : [ {
"$ref" : "#/components/schemas/RuleMinimum"
}, {
"type" : "object",
"properties" : {
"sources" : {
"type" : "array",
"description" : "List of source groups",
"items" : {
"type" : "string",
"example" : "ch8i4ug6lnn4g9hqv7m1"
}
},
"destinations" : {
"type" : "array",
"description" : "List of destination groups",
"items" : {
"type" : "string",
"example" : "ch8i4ug6lnn4g9hqv7m0"
}
}
}
} ]
},
"Rule" : {
"allOf" : [ {
"required" : [ "id" ],
"type" : "object",
"properties" : {
"id" : {
"type" : "string",
"description" : "Rule ID",
"example" : "ch8i4ug6lnn4g9hqv7mg"
}
}
}, {
"$ref" : "#/components/schemas/RuleMinimum"
}, {
"required" : [ "destinations", "sources" ],
"type" : "object",
"properties" : {
"sources" : {
"type" : "array",
"description" : "Rule source groups",
"items" : {
"$ref" : "#/components/schemas/GroupMinimum"
}
},
"destinations" : {
"type" : "array",
"description" : "Rule destination groups",
"items" : {
"$ref" : "#/components/schemas/GroupMinimum"
}
}
}
} ]
},
"PolicyRule" : {
"required" : [ "action", "destinations", "enabled", "name", "sources" ],
"type" : "object",
"properties" : {
"id" : {
"type" : "string",
"description" : "Rule ID",
"example" : "ch8i4ug6lnn4g9hqv7mg"
},
"name" : {
"type" : "string",
"description" : "Rule name identifier",
"example" : "Default"
},
"description" : {
"type" : "string",
"description" : "Rule friendly description",
"example" : "This is a default rule that allows connections between all the resources"
},
"enabled" : {
"type" : "boolean",
"description" : "Rules status",
"example" : true
},
"sources" : {
"type" : "array",
"description" : "policy source groups",
"items" : {
"$ref" : "#/components/schemas/GroupMinimum"
}
},
"destinations" : {
"type" : "array",
"description" : "policy destination groups",
"items" : {
"$ref" : "#/components/schemas/GroupMinimum"
}
},
"action" : {
"type" : "string",
"description" : "policy accept or drops packets",
"example" : "accept",
"enum" : [ "accept", "drop" ]
}
}
},
"PolicyMinimum" : {
"required" : [ "description", "enabled", "name", "query", "rules" ],
"type" : "object",
"properties" : {
"name" : {
"type" : "string",
"description" : "Policy name identifier",
"example" : "ch8i4ug6lnn4g9hqv7mg"
},
"description" : {
"type" : "string",
"description" : "Policy friendly description",
"example" : "This is a default policy that allows connections between all the resources"
},
"enabled" : {
"type" : "boolean",
"description" : "Policy status",
"example" : true
},
"query" : {
"type" : "string",
"description" : "Policy Rego query",
"example" : "package netbird\\n\\nall[rule] {\\n is_peer_in_any_group([\\\"ch8i4ug6lnn4g9hqv7m0\\\",\\\"ch8i4ug6lnn4g9hqv7m0\\\"])\\n rule := {\\n rules_from_group(\\\"ch8i4ug6lnn4g9hqv7m0\\\", \\\"dst\\\", \\\"accept\\\", \\\"\\\"),\\n rules_from_group(\\\"ch8i4ug6lnn4g9hqv7m0\\\", \\\"src\\\", \\\"accept\\\", \\\"\\\"),\\n }[_][_]\\n}\\n"
},
"rules" : {
"type" : "array",
"description" : "Policy rule object for policy UI editor",
"items" : {
"$ref" : "#/components/schemas/PolicyRule"
}
}
}
},
"Policy" : {
"allOf" : [ {
"$ref" : "#/components/schemas/PolicyMinimum"
}, {
"required" : [ "id" ],
"type" : "object",
"properties" : {
"id" : {
"type" : "string",
"description" : "Policy ID",
"example" : "ch8i4ug6lnn4g9hqv7mg"
}
}
} ]
},
"RouteRequest" : {
"required" : [ "description", "enabled", "groups", "id", "masquerade", "metric", "network", "network_id", "peer" ],
"type" : "object",
"properties" : {
"description" : {
"type" : "string",
"description" : "Route description",
"example" : "My first route"
},
"network_id" : {
"maxLength" : 40,
"minLength" : 1,
"type" : "string",
"description" : "Route network identifier, to group HA routes",
"example" : "Route 1"
},
"enabled" : {
"type" : "boolean",
"description" : "Route status",
"example" : true
},
"peer" : {
"type" : "string",
"description" : "Peer Identifier associated with route",
"example" : "chacbco6lnnbn6cg5s91"
},
"network" : {
"type" : "string",
"description" : "Network range in CIDR format",
"example" : "10.64.0.0/24"
},
"metric" : {
"maximum" : 9999,
"minimum" : 1,
"type" : "integer",
"description" : "Route metric number. Lowest number has higher priority",
"example" : 9999
},
"masquerade" : {
"type" : "boolean",
"description" : "Indicate if peer should masquerade traffic to this route's prefix",
"example" : true
},
"groups" : {
"type" : "array",
"description" : "Route group tag groups",
"items" : {
"type" : "string",
"example" : "chacdk86lnnboviihd70"
}
}
}
},
"Route" : {
"allOf" : [ {
"required" : [ "id", "network_type" ],
"type" : "object",
"properties" : {
"id" : {
"type" : "string",
"description" : "Route Id",
"example" : "chacdk86lnnboviihd7g"
},
"network_type" : {
"type" : "string",
"description" : "Network type indicating if it is IPv4 or IPv6",
"example" : "IPv4"
}
}
}, {
"$ref" : "#/components/schemas/RouteRequest"
} ]
},
"Nameserver" : {
"required" : [ "ip", "ns_type", "port" ],
"type" : "object",
"properties" : {
"ip" : {
"type" : "string",
"description" : "Nameserver IP",
"example" : "8.8.8.8"
},
"ns_type" : {
"type" : "string",
"description" : "Nameserver Type",
"example" : "udp",
"enum" : [ "udp" ]
},
"port" : {
"type" : "integer",
"description" : "Nameserver Port",
"example" : 53
}
}
},
"NameserverGroupRequest" : {
"required" : [ "description", "domains", "enabled", "groups", "name", "nameservers", "primary" ],
"type" : "object",
"properties" : {
"name" : {
"maxLength" : 40,
"minLength" : 1,
"type" : "string",
"description" : "Nameserver group name",
"example" : "Google DNS"
},
"description" : {
"type" : "string",
"description" : "Nameserver group description",
"example" : "Google DNS servers"
},
"nameservers" : {
"maxLength" : 2,
"minLength" : 1,
"type" : "array",
"description" : "Nameserver group",
"items" : {
"$ref" : "#/components/schemas/Nameserver"
}
},
"enabled" : {
"type" : "boolean",
"description" : "Nameserver group status",
"example" : true
},
"groups" : {
"type" : "array",
"description" : "Nameserver group tag groups",
"items" : {
"type" : "string",
"example" : "ch8i4ug6lnn4g9hqv7m0"
}
},
"primary" : {
"type" : "boolean",
"description" : "Nameserver group primary status",
"example" : true
},
"domains" : {
"type" : "array",
"description" : "Nameserver group domain list",
"items" : {
"maxLength" : 255,
"minLength" : 1,
"type" : "string",
"example" : "example.com"
}
}
}
},
"NameserverGroup" : {
"allOf" : [ {
"required" : [ "id" ],
"type" : "object",
"properties" : {
"id" : {
"type" : "string",
"description" : "Nameserver group ID",
"example" : "ch8i4ug6lnn4g9hqv7m0"
}
}
}, {
"$ref" : "#/components/schemas/NameserverGroupRequest"
} ]
},
"DNSSettings" : {
"required" : [ "disabled_management_groups" ],
"type" : "object",
"properties" : {
"disabled_management_groups" : {
"type" : "array",
"description" : "Groups whose DNS management is disabled",
"items" : {
"type" : "string",
"example" : "ch8i4ug6lnn4g9hqv7m0"
}
}
}
},
"Event" : {
"required" : [ "activity", "activity_code", "id", "initiator_id", "meta", "target_id", "timestamp" ],
"type" : "object",
"properties" : {
"id" : {
"type" : "string",
"description" : "Event unique identifier",
"example" : "10"
},
"timestamp" : {
"type" : "string",
"description" : "The date and time when the event occurred",
"format" : "date-time",
"example" : "2023-05-05T10:04:37.473542Z"
},
"activity" : {
"type" : "string",
"description" : "The activity that occurred during the event",
"example" : "Route created"
},
"activity_code" : {
"type" : "string",
"description" : "The string code of the activity that occurred during the event",
"example" : "route.add",
"enum" : [ "user.peer.delete", "user.join", "user.invite", "user.peer.add", "user.group.add", "user.group.delete", "user.role.update", "setupkey.peer.add", "setupkey.add", "setupkey.update", "setupkey.revoke", "setupkey.overuse", "setupkey.group.delete", "setupkey.group.add", "rule.add", "rule.delete", "rule.update", "policy.add", "policy.delete", "policy.update", "group.add", "group.update", "dns.setting.disabled.management.group.add", "dns.setting.disabled.management.group.delete", "account.create", "account.setting.peer.login.expiration.update", "account.setting.peer.login.expiration.disable", "account.setting.peer.login.expiration.enable", "route.add", "route.delete", "route.update", "nameserver.group.add", "nameserver.group.delete", "nameserver.group.update", "peer.ssh.disable", "peer.ssh.enable", "peer.rename", "peer.login.expiration.disable", "peer.login.expiration.enable", "service.user.create", "personal.access.token.create", "service.user.delete", "personal.access.token.delete" ]
},
"initiator_id" : {
"type" : "string",
"description" : "The ID of the initiator of the event. E.g., an ID of a user that triggered the event.",
"example" : "google-oauth2|123456789012345678901"
},
"target_id" : {
"type" : "string",
"description" : "The ID of the target of the event. E.g., an ID of the peer that a user removed.",
"example" : "chad9d86lnnc59g18ou0"
},
"meta" : {
"type" : "object",
"additionalProperties" : {
"type" : "string"
},
"description" : "The metadata of the event",
"example" : {
"name" : "my route",
"network_range" : "10.64.0.0/24",
"peer_id" : "chacbco6lnnbn6cg5s91"
}
}
}
}
},
"responses" : {
"not_found" : {
"description" : "Resource not found",
"content" : { }
},
"validation_failed_simple" : {
"description" : "Validation failed",
"content" : { }
},
"bad_request" : {
"description" : "Bad Request",
"content" : { }
},
"internal_error" : {
"description" : "Internal Server Error",
"content" : { }
},
"validation_failed" : {
"description" : "Validation failed",
"content" : { }
},
"forbidden" : {
"description" : "Forbidden",
"content" : { }
},
"requires_authentication" : {
"description" : "Requires authentication",
"content" : { }
}
},
"securitySchemes" : {
"BearerAuth" : {
"type" : "http",
"scheme" : "bearer",
"bearerFormat" : "JWT"
},
"TokenAuth" : {
"type" : "apiKey",
"description" : "Enter the token with the `Token` prefix, e.g. \"Token nbp_F3f0d.....\".",
"name" : "Authorization",
"in" : "header"
}
}
}
}