NetBird · Capability

NetBird REST API

API to manipulate groups, rules, policies and retrieve information about peers and users

Run with Naftiko NetbirdAPI

What You Can Do

GET
Get api instance — Get Instance Status
/api/instance
GET
Get api instance version — Get Version Info
/api/instance/version
POST
Post api setup — Setup Instance
/api/setup
GET
Get api peers peerid jobs — List Jobs
/api/peers/{peerId}/jobs
POST
Post api peers peerid jobs — Create Job
/api/peers/{peerId}/jobs
GET
Get api peers peerid jobs jobid — Get Job
/api/peers/{peerId}/jobs/{jobId}
GET
Get api accounts — List all Accounts
/api/accounts
DELETE
Delete api accounts accountid — Delete an Account
/api/accounts/{accountId}
PUT
Put api accounts accountid — Update an Account
/api/accounts/{accountId}
GET
Get api users — List all Users
/api/users
POST
Post api users — Create a User
/api/users
PUT
Put api users userid — Update a User
/api/users/{userId}
DELETE
Delete api users userid — Delete a User
/api/users/{userId}
GET
Get api users userid tokens — List all Tokens
/api/users/{userId}/tokens
POST
Post api users userid tokens — Create a Token
/api/users/{userId}/tokens
GET
Get api users userid tokens tokenid — Retrieve a Token
/api/users/{userId}/tokens/{tokenId}
DELETE
Delete api users userid tokens tokenid — Delete a Token
/api/users/{userId}/tokens/{tokenId}
POST
Post api users userid invite — Resend user invitation
/api/users/{userId}/invite
POST
Post api users userid approve — Approve user
/api/users/{userId}/approve
DELETE
Delete api users userid reject — Reject user
/api/users/{userId}/reject
PUT
Put api users userid password — Change user password
/api/users/{userId}/password
GET
Get api users current — Retrieve current user
/api/users/current
GET
Get api users invites — List user invites
/api/users/invites
POST
Post api users invites — Create a user invite
/api/users/invites
DELETE
Delete api users invites inviteid — Delete a user invite
/api/users/invites/{inviteId}
POST
Post api users invites inviteid regenerate — Regenerate a user invite
/api/users/invites/{inviteId}/regenerate
GET
Get api users invites token — Get invite information
/api/users/invites/{token}
POST
Post api users invites token accept — Accept an invite
/api/users/invites/{token}/accept
GET
Get api peers — List all Peers
/api/peers
GET
Get api peers peerid — Retrieve a Peer
/api/peers/{peerId}
PUT
Put api peers peerid — Update a Peer
/api/peers/{peerId}
DELETE
Delete api peers peerid — Delete a Peer
/api/peers/{peerId}
GET
Get api peers peerid accessible peers — List accessible Peers
/api/peers/{peerId}/accessible-peers
POST
Post api peers peerid temporary access — Create a Temporary Access Peer
/api/peers/{peerId}/temporary-access
GET
Get api peers peerid ingress ports — List all Port Allocations
/api/peers/{peerId}/ingress/ports
POST
Post api peers peerid ingress ports — Create a Port Allocation
/api/peers/{peerId}/ingress/ports
GET
Get api peers peerid ingress ports allocationid — Retrieve a Port Allocation
/api/peers/{peerId}/ingress/ports/{allocationId}
PUT
Put api peers peerid ingress ports allocationid — Update a Port Allocation
/api/peers/{peerId}/ingress/ports/{allocationId}
DELETE
Delete api peers peerid ingress ports allocation — Delete a Port Allocation
/api/peers/{peerId}/ingress/ports/{allocationId}
GET
Get api ingress peers — List all Ingress Peers
/api/ingress/peers
POST
Post api ingress peers — Create a Ingress Peer
/api/ingress/peers
GET
Get api ingress peers ingresspeerid — Retrieve a Ingress Peer
/api/ingress/peers/{ingressPeerId}
PUT
Put api ingress peers ingresspeerid — Update a Ingress Peer
/api/ingress/peers/{ingressPeerId}
DELETE
Delete api ingress peers ingresspeerid — Delete a Ingress Peer
/api/ingress/peers/{ingressPeerId}
GET
Get api setup keys — List all Setup Keys
/api/setup-keys
POST
Post api setup keys — Create a Setup Key
/api/setup-keys
GET
Get api setup keys keyid — Retrieve a Setup Key
/api/setup-keys/{keyId}
PUT
Put api setup keys keyid — Update a Setup Key
/api/setup-keys/{keyId}
DELETE
Delete api setup keys keyid — Delete a Setup Key
/api/setup-keys/{keyId}
GET
Get api groups — List all Groups
/api/groups
POST
Post api groups — Create a Group
/api/groups
GET
Get api groups groupid — Retrieve a Group
/api/groups/{groupId}
PUT
Put api groups groupid — Update a Group
/api/groups/{groupId}
DELETE
Delete api groups groupid — Delete a Group
/api/groups/{groupId}
GET
Get api policies — List all Policies
/api/policies
POST
Post api policies — Create a Policy
/api/policies
GET
Get api policies policyid — Retrieve a Policy
/api/policies/{policyId}
PUT
Put api policies policyid — Update a Policy
/api/policies/{policyId}
DELETE
Delete api policies policyid — Delete a Policy
/api/policies/{policyId}
GET
Get api routes — List all Routes
/api/routes

MCP Tools

get-api-instance

Get Instance Status

read-only idempotent
get-api-instance-version

Get Version Info

read-only idempotent
post-api-setup

Setup Instance

get-api-peers-peerid-jobs

List Jobs

read-only idempotent
post-api-peers-peerid-jobs

Create Job

get-api-peers-peerid-jobs-jobid

Get Job

read-only idempotent
get-api-accounts

List all Accounts

read-only idempotent
delete-api-accounts-accountid

Delete an Account

idempotent
put-api-accounts-accountid

Update an Account

idempotent
get-api-users

List all Users

read-only idempotent
post-api-users

Create a User

put-api-users-userid

Update a User

idempotent
delete-api-users-userid

Delete a User

idempotent
get-api-users-userid-tokens

List all Tokens

read-only idempotent
post-api-users-userid-tokens

Create a Token

get-api-users-userid-tokens-tokenid

Retrieve a Token

read-only idempotent
delete-api-users-userid-tokens-tokenid

Delete a Token

idempotent
post-api-users-userid-invite

Resend user invitation

post-api-users-userid-approve

Approve user

delete-api-users-userid-reject

Reject user

idempotent
put-api-users-userid-password

Change user password

idempotent
get-api-users-current

Retrieve current user

read-only idempotent
get-api-users-invites

List user invites

read-only idempotent
post-api-users-invites

Create a user invite

delete-api-users-invites-inviteid

Delete a user invite

idempotent
post-api-users-invites-inviteid-regenerate

Regenerate a user invite

get-api-users-invites-token

Get invite information

read-only idempotent
post-api-users-invites-token-accept

Accept an invite

get-api-peers

List all Peers

read-only idempotent
get-api-peers-peerid

Retrieve a Peer

read-only idempotent
put-api-peers-peerid

Update a Peer

idempotent
delete-api-peers-peerid

Delete a Peer

idempotent
get-api-peers-peerid-accessible-peers

List accessible Peers

read-only idempotent
post-api-peers-peerid-temporary-access

Create a Temporary Access Peer

get-api-peers-peerid-ingress-ports

List all Port Allocations

read-only idempotent
post-api-peers-peerid-ingress-ports

Create a Port Allocation

get-api-peers-peerid-ingress-ports-allocationid

Retrieve a Port Allocation

read-only idempotent
put-api-peers-peerid-ingress-ports-allocationid

Update a Port Allocation

idempotent
delete-api-peers-peerid-ingress-ports-allocation

Delete a Port Allocation

idempotent
get-api-ingress-peers

List all Ingress Peers

read-only idempotent
post-api-ingress-peers

Create a Ingress Peer

get-api-ingress-peers-ingresspeerid

Retrieve a Ingress Peer

read-only idempotent
put-api-ingress-peers-ingresspeerid

Update a Ingress Peer

idempotent
delete-api-ingress-peers-ingresspeerid

Delete a Ingress Peer

idempotent
get-api-setup-keys

List all Setup Keys

read-only idempotent
post-api-setup-keys

Create a Setup Key

get-api-setup-keys-keyid

Retrieve a Setup Key

read-only idempotent
put-api-setup-keys-keyid

Update a Setup Key

idempotent
delete-api-setup-keys-keyid

Delete a Setup Key

idempotent
get-api-groups

List all Groups

read-only idempotent
post-api-groups

Create a Group

get-api-groups-groupid

Retrieve a Group

read-only idempotent
put-api-groups-groupid

Update a Group

idempotent
delete-api-groups-groupid

Delete a Group

idempotent
get-api-policies

List all Policies

read-only idempotent
post-api-policies

Create a Policy

get-api-policies-policyid

Retrieve a Policy

read-only idempotent
put-api-policies-policyid

Update a Policy

idempotent
delete-api-policies-policyid

Delete a Policy

idempotent
get-api-routes

List all Routes

read-only idempotent

Capability Spec

netbird-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: NetBird REST API
  description: API to manipulate groups, rules, policies and retrieve information about peers and users
  tags:
  - Netbird
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: netbird
    baseUri: https://api.netbird.io
    description: NetBird REST API HTTP API.
    authentication:
      type: bearer
      token: '{{NETBIRD_TOKEN}}'
    resources:
    - name: api-instance
      path: /api/instance
      operations:
      - name: get-api-instance
        method: GET
        description: Get Instance Status
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-instance-version
      path: /api/instance/version
      operations:
      - name: get-api-instance-version
        method: GET
        description: Get Version Info
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-setup
      path: /api/setup
      operations:
      - name: post-api-setup
        method: POST
        description: Setup Instance
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-peers-peerid-jobs
      path: /api/peers/{peerId}/jobs
      operations:
      - name: get-api-peers-peerid-jobs
        method: GET
        description: List Jobs
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: post-api-peers-peerid-jobs
        method: POST
        description: Create Job
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-peers-peerid-jobs-jobid
      path: /api/peers/{peerId}/jobs/{jobId}
      operations:
      - name: get-api-peers-peerid-jobs-jobid
        method: GET
        description: Get Job
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        - name: jobId
          in: path
          type: string
          required: true
          description: The unique identifier of a job
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-accounts
      path: /api/accounts
      operations:
      - name: get-api-accounts
        method: GET
        description: List all Accounts
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-accounts-accountid
      path: /api/accounts/{accountId}
      operations:
      - name: delete-api-accounts-accountid
        method: DELETE
        description: Delete an Account
        inputParameters:
        - name: accountId
          in: path
          type: string
          required: true
          description: The unique identifier of an account
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: put-api-accounts-accountid
        method: PUT
        description: Update an Account
        inputParameters:
        - name: accountId
          in: path
          type: string
          required: true
          description: The unique identifier of an account
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users
      path: /api/users
      operations:
      - name: get-api-users
        method: GET
        description: List all Users
        inputParameters:
        - name: service_user
          in: query
          type: boolean
          description: Filters users and returns either regular users or service users
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: post-api-users
        method: POST
        description: Create a User
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-userid
      path: /api/users/{userId}
      operations:
      - name: put-api-users-userid
        method: PUT
        description: Update a User
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
          description: The unique identifier of a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: delete-api-users-userid
        method: DELETE
        description: Delete a User
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
          description: The unique identifier of a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-userid-tokens
      path: /api/users/{userId}/tokens
      operations:
      - name: get-api-users-userid-tokens
        method: GET
        description: List all Tokens
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
          description: The unique identifier of a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: post-api-users-userid-tokens
        method: POST
        description: Create a Token
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
          description: The unique identifier of a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-userid-tokens-tokenid
      path: /api/users/{userId}/tokens/{tokenId}
      operations:
      - name: get-api-users-userid-tokens-tokenid
        method: GET
        description: Retrieve a Token
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
          description: The unique identifier of a user
        - name: tokenId
          in: path
          type: string
          required: true
          description: The unique identifier of a token
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: delete-api-users-userid-tokens-tokenid
        method: DELETE
        description: Delete a Token
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
          description: The unique identifier of a user
        - name: tokenId
          in: path
          type: string
          required: true
          description: The unique identifier of a token
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-userid-invite
      path: /api/users/{userId}/invite
      operations:
      - name: post-api-users-userid-invite
        method: POST
        description: Resend user invitation
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
          description: The unique identifier of a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-userid-approve
      path: /api/users/{userId}/approve
      operations:
      - name: post-api-users-userid-approve
        method: POST
        description: Approve user
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
          description: The unique identifier of a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-userid-reject
      path: /api/users/{userId}/reject
      operations:
      - name: delete-api-users-userid-reject
        method: DELETE
        description: Reject user
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
          description: The unique identifier of a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-userid-password
      path: /api/users/{userId}/password
      operations:
      - name: put-api-users-userid-password
        method: PUT
        description: Change user password
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
          description: The unique identifier of a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-current
      path: /api/users/current
      operations:
      - name: get-api-users-current
        method: GET
        description: Retrieve current user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-invites
      path: /api/users/invites
      operations:
      - name: get-api-users-invites
        method: GET
        description: List user invites
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: post-api-users-invites
        method: POST
        description: Create a user invite
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-invites-inviteid
      path: /api/users/invites/{inviteId}
      operations:
      - name: delete-api-users-invites-inviteid
        method: DELETE
        description: Delete a user invite
        inputParameters:
        - name: inviteId
          in: path
          type: string
          required: true
          description: The ID of the invite to delete
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-invites-inviteid-regenerate
      path: /api/users/invites/{inviteId}/regenerate
      operations:
      - name: post-api-users-invites-inviteid-regenerate
        method: POST
        description: Regenerate a user invite
        inputParameters:
        - name: inviteId
          in: path
          type: string
          required: true
          description: The ID of the invite to regenerate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-invites-token
      path: /api/users/invites/{token}
      operations:
      - name: get-api-users-invites-token
        method: GET
        description: Get invite information
        inputParameters:
        - name: token
          in: path
          type: string
          required: true
          description: The invite token
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-users-invites-token-accept
      path: /api/users/invites/{token}/accept
      operations:
      - name: post-api-users-invites-token-accept
        method: POST
        description: Accept an invite
        inputParameters:
        - name: token
          in: path
          type: string
          required: true
          description: The invite token
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-peers
      path: /api/peers
      operations:
      - name: get-api-peers
        method: GET
        description: List all Peers
        inputParameters:
        - name: name
          in: query
          type: string
          description: Filter peers by name
        - name: ip
          in: query
          type: string
          description: Filter peers by IP address
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-peers-peerid
      path: /api/peers/{peerId}
      operations:
      - name: get-api-peers-peerid
        method: GET
        description: Retrieve a Peer
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: put-api-peers-peerid
        method: PUT
        description: Update a Peer
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: delete-api-peers-peerid
        method: DELETE
        description: Delete a Peer
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-peers-peerid-accessible-peers
      path: /api/peers/{peerId}/accessible-peers
      operations:
      - name: get-api-peers-peerid-accessible-peers
        method: GET
        description: List accessible Peers
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-peers-peerid-temporary-access
      path: /api/peers/{peerId}/temporary-access
      operations:
      - name: post-api-peers-peerid-temporary-access
        method: POST
        description: Create a Temporary Access Peer
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-peers-peerid-ingress-ports
      path: /api/peers/{peerId}/ingress/ports
      operations:
      - name: get-api-peers-peerid-ingress-ports
        method: GET
        description: List all Port Allocations
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        - name: name
          in: query
          type: string
          description: Filters ingress port allocations by name
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: post-api-peers-peerid-ingress-ports
        method: POST
        description: Create a Port Allocation
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-peers-peerid-ingress-ports-allocationid
      path: /api/peers/{peerId}/ingress/ports/{allocationId}
      operations:
      - name: get-api-peers-peerid-ingress-ports-allocationid
        method: GET
        description: Retrieve a Port Allocation
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        - name: allocationId
          in: path
          type: string
          required: true
          description: The unique identifier of an ingress port allocation
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: put-api-peers-peerid-ingress-ports-allocationid
        method: PUT
        description: Update a Port Allocation
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        - name: allocationId
          in: path
          type: string
          required: true
          description: The unique identifier of an ingress port allocation
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: delete-api-peers-peerid-ingress-ports-allocation
        method: DELETE
        description: Delete a Port Allocation
        inputParameters:
        - name: peerId
          in: path
          type: string
          required: true
          description: The unique identifier of a peer
        - name: allocationId
          in: path
          type: string
          required: true
          description: The unique identifier of an ingress port allocation
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-ingress-peers
      path: /api/ingress/peers
      operations:
      - name: get-api-ingress-peers
        method: GET
        description: List all Ingress Peers
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: post-api-ingress-peers
        method: POST
        description: Create a Ingress Peer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-ingress-peers-ingresspeerid
      path: /api/ingress/peers/{ingressPeerId}
      operations:
      - name: get-api-ingress-peers-ingresspeerid
        method: GET
        description: Retrieve a Ingress Peer
        inputParameters:
        - name: ingressPeerId
          in: path
          type: string
          required: true
          description: The unique identifier of an ingress peer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: put-api-ingress-peers-ingresspeerid
        method: PUT
        description: Update a Ingress Peer
        inputParameters:
        - name: ingressPeerId
          in: path
          type: string
          required: true
          description: The unique identifier of an ingress peer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: delete-api-ingress-peers-ingresspeerid
        method: DELETE
        description: Delete a Ingress Peer
        inputParameters:
        - name: ingressPeerId
          in: path
          type: string
          required: true
          description: The unique identifier of an ingress peer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-setup-keys
      path: /api/setup-keys
      operations:
      - name: get-api-setup-keys
        method: GET
        description: List all Setup Keys
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: post-api-setup-keys
        method: POST
        description: Create a Setup Key
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-setup-keys-keyid
      path: /api/setup-keys/{keyId}
      operations:
      - name: get-api-setup-keys-keyid
        method: GET
        description: Retrieve a Setup Key
        inputParameters:
        - name: keyId
          in: path
          type: string
          required: true
          description: The unique identifier of a setup key
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: put-api-setup-keys-keyid
        method: PUT
        description: Update a Setup Key
        inputParameters:
        - name: keyId
          in: path
          type: string
          required: true
          description: The unique identifier of a setup key
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: delete-api-setup-keys-keyid
        method: DELETE
        description: Delete a Setup Key
        inputParameters:
        - name: keyId
          in: path
          type: string
          required: true
          description: The unique identifier of a setup key
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-groups
      path: /api/groups
      operations:
      - name: get-api-groups
        method: GET
        description: List all Groups
        inputParameters:
        - name: name
          in: query
          type: string
          description: Filter groups by name (exact match)
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: post-api-groups
        method: POST
        description: Create a Group
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-groups-groupid
      path: /api/groups/{groupId}
      operations:
      - name: get-api-groups-groupid
        method: GET
        description: Retrieve a Group
        inputParameters:
        - name: groupId
          in: path
          type: string
          required: true
          description: The unique identifier of a group
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: put-api-groups-groupid
        method: PUT
        description: Update a Group
        inputParameters:
        - name: groupId
          in: path
          type: string
          required: true
          description: The unique identifier of a group
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: delete-api-groups-groupid
        method: DELETE
        description: Delete a Group
        inputParameters:
        - name: groupId
          in: path
          type: string
          required: true
          description: The unique identifier of a group
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-policies
      path: /api/policies
      operations:
      - name: get-api-policies
        method: GET
        description: List all Policies
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: post-api-policies
        method: POST
        description: Create a Policy
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-policies-policyid
      path: /api/policies/{policyId}
      operations:
      - name: get-api-policies-policyid
        method: GET
        description: Retrieve a Policy
        inputParameters:
        - name: policyId
          in: path
          type: string
          required: true
          description: The unique identifier of a policy
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: put-api-policies-policyid
        method: PUT
        description: Update a Policy
        inputParameters:
        - name: policyId
          in: path
          type: string
          required: true
          description: The unique identifier of a policy
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: delete-api-policies-policyid
        method: DELETE
        description: Delete a Policy
        inputParameters:
        - name: policyId
          in: path
          type: string
          required: true
          description: The unique identifier of a policy
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-routes
      path: /api/routes
      operations:
      - name: get-api-routes
        method: GET
        description: List all Routes
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: netbird-rest
    description: REST adapter for NetBird REST API.
    resources:
    - path: /api/instance
      name: get-api-instance
      operations:
      - method: GET
        name: get-api-instance
        description: Get Instance Status
        call: netbird.get-api-instance
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/instance/version
      name: get-api-instance-version
      operations:
      - method: GET
        name: get-api-instance-version
        description: Get Version Info
        call: netbird.get-api-instance-version
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/setup
      name: post-api-setup
      operations:
      - method: POST
        name: post-api-setup
        description: Setup Instance
        call: netbird.post-api-setup
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/peers/{peerId}/jobs
      name: get-api-peers-peerid-jobs
      operations:
      - method: GET
        name: get-api-peers-peerid-jobs
        description: List Jobs
        call: netbird.get-api-peers-peerid-jobs
        with:
          peerId: rest.peerId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/peers/{peerId}/jobs
      name: post-api-peers-peerid-jobs
      operations:
      - method: POST
        name: post-api-peers-peerid-jobs
        description: Create Job
        call: netbird.post-api-peers-peerid-jobs
        with:
          peerId: rest.peerId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/peers/{peerId}/jobs/{jobId}
      name: get-api-peers-peerid-jobs-jobid
      operations:
      - method: GET
        name: get-api-peers-peerid-jobs-jobid
        description: Get Job
        call: netbird.get-api-peers-peerid-jobs-jobid
        with:
          peerId: rest.peerId
          jobId: rest.jobId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/accounts
      name: get-api-accounts
      operations:
      - method: GET
        name: get-api-accounts
        description: List all Accounts
        call: netbird.get-api-accounts
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/accounts/{accountId}
      name: delete-api-accounts-accountid
      operations:
      - method: DELETE
        name: delete-api-accounts-accountid
        description: Delete an Account
        call: netbird.delete-api-accounts-accountid
        with:
          accountId: rest.accountId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/accounts/{accountId}
      name: put-api-accounts-accountid
      operations:
      - method: PUT
        name: put-api-accounts-accountid
        description: Update an Account
        call: netbird.put-api-accounts-accountid
        with:
          accountId: rest.accountId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/users
      name: get-api-users
      operations:
      - method: GET
        name: get-api-users
        description: List all Users
        call: netbird.get-api-users
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/users
      name: post-api-users
      operations:
      - method: POST
        name: post-api-users
        description: Create a User
        call: netbird.post-api-users
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/users/{userId}
      name: put-api-users-userid
      operations:
      - method: PUT
        name: put-api-users-userid
        description: Update a User
        call: netbird.put-api-users-userid
        with:
          userId: rest.userId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/users/{userId}
      name: delete-api-users-userid
      operations:
      - method: DELETE
        name: delete-api-users-userid
        description: Delete a User
        call: netbird.delete-api-users-userid
        with:
          userId: rest.userId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/users/{userId}/tokens
      name: get-api-users-userid-tokens
      operations:
      - method: GET
        name: get-api-users-userid-tokens
        description: List all Tokens
        call: netbird.get-api-users-userid-tokens
        with:
          userId: rest.userId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/users/{userId}/tokens
      name: post-api-users-userid-tokens
      operations:
      - method: POST
        name: post-api-users-userid-tokens
        description: Create a Token
        call: netbird.post-api-users-userid-tokens
        with:
          userId: rest.userId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/users/{userId}/tokens/{tokenId}
      name: get-api-users-userid-tokens-tokenid
      operations:
      - method: GET
        name: get-api-users-userid-tokens-tokenid
        description: Retrieve a Token
        call: netbird.get-api-users-userid-tokens-tokenid
        with:
          userId: rest.userId
          tokenId: rest.tokenId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/users/{userId}/tokens/{tokenId}
      name: delete-api-users-userid-tokens-tokenid
      operations:
      - method: DELETE
        name: delete-api-users-userid-tokens-tokenid
        description: Delete a Token
        call: netbird.delete-api-users-userid-tokens-tokenid
        with:
          userId: rest.userId
          tokenId: rest.tokenId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/users/{userId}/invite
      name: post-api-users-userid-invite
      operations:
      - method: POST
        name: post-api-users-userid-invite
        description: Resend user invitation
        call: netbird.post-api-users-userid-invite
        with:
          userId: rest.userId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/users/{userId}/approve
      name: post-api-users-userid-approve
      operations:
      - method: POST
        name: post-api-users-userid-approve
        description: Approve user
        call: netbird.post-api-users-userid-approve
        with:
          userId: rest.userId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/users/{userId}/reject
      name: delete-api-users-userid-reject
      operations:
      - method: DELETE
        name: delete-api-users-userid-reject
        description: Reject user
        call: netbird.delete-api-users-userid-reject
        with:
          userId: rest.userId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/users/{userId}/p

# --- truncated at 32 KB (71 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/netbird/refs/heads/main/capabilities/netbird-capability.yaml