mirror of
https://github.com/netbirdio/netbird.git
synced 2026-10-08 14:39:09 +02:00
* use libopenapi OpenAPI generator Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * added a handler for v1alpha1/peers Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * wire up request validator Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * wired up spec-based validation Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * use sync validation; set base url to v1alpha1 Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * moved stuff around, extracted runtime libopenapu deps into runtime_tooling Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * testing /peers path params Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * fixed tests Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * added user schemas and paths Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * use api validation in tests Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * post-merge fixes Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * deleted tmp command used to test validator integration Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * require request body in post/put requests in order to force validation Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * making linter happy Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * switch to api/v1alpha1 Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * go mod tidy Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * keep the original order of middleware: metrics, cors, then auth Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * return 422 on validation errors Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * cleanups Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * more cleanups Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * v1alpha1 spec cleanups Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * no need for a double-pointer Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * more linter fixes Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * removed more double pointers Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * use di to inject api_v0 and api_v1 http routers Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * do not re-add middleware on repeated call to ApiHandler Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * calling ApiRouter() now also calls ApiV1Router() Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> --------- Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io>
251 lines
7.9 KiB
YAML
251 lines
7.9 KiB
YAML
openapi: 3.1.0
|
|
servers:
|
|
- url: /api/v1alpha1
|
|
description: Default server
|
|
info:
|
|
title: NetBird REST API
|
|
description: API to manipulate groups, rules, policies and retrieve information about peers and users
|
|
version: 1.0.0-alpha1
|
|
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: Policies
|
|
description: Interact with and view information about policies.
|
|
- name: Posture Checks
|
|
description: Interact with and view information about posture checks.
|
|
- name: Routes
|
|
description: Interact with and view information about routes.
|
|
- name: DNS
|
|
description: Interact with and view information about DNS configuration.
|
|
- name: DNS Zones
|
|
description: Interact with and view information about custom DNS zones.
|
|
- name: Events
|
|
description: View information about the account and network events.
|
|
- name: Accounts
|
|
description: View information about the accounts.
|
|
- name: Ingress Ports
|
|
description: Interact with and view information about the ingress peers and ports.
|
|
x-cloud-only: true
|
|
- name: Identity Providers
|
|
description: Interact with and view information about identity providers.
|
|
- name: Services
|
|
description: Interact with and view information about reverse proxy services.
|
|
- name: Instance
|
|
description: Instance setup and status endpoints for initial configuration.
|
|
- name: Jobs
|
|
description: Interact with and view information about remote jobs.
|
|
x-experimental: true
|
|
|
|
- name: Usage
|
|
description: Retrieve current usage statistics for the account.
|
|
x-cloud-only: true
|
|
- name: Subscription
|
|
description: Manage and view information about account subscriptions.
|
|
x-cloud-only: true
|
|
- name: Plans
|
|
description: Retrieve available plans and products.
|
|
x-cloud-only: true
|
|
- name: Checkout
|
|
description: Manage checkout sessions for plan subscriptions.
|
|
x-cloud-only: true
|
|
- name: AWS Marketplace
|
|
description: Manage AWS Marketplace subscriptions.
|
|
x-cloud-only: true
|
|
- name: Portal
|
|
description: Access customer portal for subscription management.
|
|
x-cloud-only: true
|
|
- name: Invoice
|
|
description: Manage and retrieve account invoices.
|
|
x-cloud-only: true
|
|
- name: MSP
|
|
description: MSP portal for Tenant management.
|
|
x-cloud-only: true
|
|
- name: IDP SCIM Integrations
|
|
description: Manage generic SCIM identity provider integrations for user and group sync.
|
|
x-cloud-only: true
|
|
- name: IDP Google Integrations
|
|
description: Manage Google Workspace identity provider integrations for user and group sync.
|
|
x-cloud-only: true
|
|
- name: IDP Azure Integrations
|
|
description: Manage Azure AD identity provider integrations for user and group sync.
|
|
x-cloud-only: true
|
|
- name: IDP Okta SCIM Integrations
|
|
description: Manage Okta SCIM identity provider integrations for user and group sync.
|
|
x-cloud-only: true
|
|
- name: EDR Intune Integrations
|
|
description: Manage Microsoft Intune EDR integrations.
|
|
x-cloud-only: true
|
|
- name: EDR SentinelOne Integrations
|
|
description: Manage SentinelOne EDR integrations.
|
|
x-cloud-only: true
|
|
- name: EDR Falcon Integrations
|
|
description: Manage CrowdStrike Falcon EDR integrations.
|
|
x-cloud-only: true
|
|
- name: EDR Huntress Integrations
|
|
description: Manage Huntress EDR integrations.
|
|
x-cloud-only: true
|
|
- name: EDR FleetDM Integrations
|
|
description: Manage FleetDM EDR integrations.
|
|
x-cloud-only: true
|
|
- name: EDR Peers
|
|
description: Manage EDR compliance bypass for peers.
|
|
x-cloud-only: true
|
|
- name: Event Streaming Integrations
|
|
description: Manage event streaming integrations.
|
|
x-cloud-only: true
|
|
- name: Notifications
|
|
description: Manage notification channels for account event alerts.
|
|
x-cloud-only: true
|
|
|
|
components:
|
|
schemas:
|
|
CountryCode:
|
|
description: 2-letter ISO 3166-1 alpha-2 code that represents the country
|
|
type: string
|
|
example: "DE"
|
|
CityName:
|
|
description: Commonly used English name of the city
|
|
type: string
|
|
example: "Berlin"
|
|
Country:
|
|
description: Describe country geographical location information
|
|
type: object
|
|
properties:
|
|
country_name:
|
|
description: Commonly used English name of the country
|
|
type: string
|
|
example: "Germany"
|
|
country_code:
|
|
$ref: '#/components/schemas/CountryCode'
|
|
required:
|
|
- country_name
|
|
- country_code
|
|
City:
|
|
description: Describe city geographical location information
|
|
type: object
|
|
properties:
|
|
geoname_id:
|
|
description: Integer ID of the record in GeoNames database
|
|
type: integer
|
|
example: 2950158
|
|
city_name:
|
|
description: Commonly used English name of the city
|
|
type: string
|
|
example: "Berlin"
|
|
required:
|
|
- geoname_id
|
|
- city_name
|
|
ErrorResponse:
|
|
type: object
|
|
description: Standard error response
|
|
properties:
|
|
message:
|
|
type: string
|
|
description: A human-readable error message.
|
|
example: "couldn't parse JSON request"
|
|
responses:
|
|
not_found:
|
|
description: Resource not found
|
|
headers:
|
|
X-Request-Id:
|
|
$ref: '#/components/headers/X-Request-Id'
|
|
content: { }
|
|
validation_failed_simple:
|
|
description: Validation failed
|
|
headers:
|
|
X-Request-Id:
|
|
$ref: '#/components/headers/X-Request-Id'
|
|
content: { }
|
|
bad_request:
|
|
description: Bad Request
|
|
headers:
|
|
X-Request-Id:
|
|
$ref: '#/components/headers/X-Request-Id'
|
|
content: { }
|
|
unprocessable:
|
|
description: Unprocessable Entity
|
|
headers:
|
|
X-Request-Id:
|
|
$ref: '#/components/headers/X-Request-Id'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
code:
|
|
type: integer
|
|
required:
|
|
- message
|
|
- code
|
|
internal_error:
|
|
description: Internal Server Error
|
|
headers:
|
|
X-Request-Id:
|
|
$ref: '#/components/headers/X-Request-Id'
|
|
content: { }
|
|
validation_failed:
|
|
description: Validation failed
|
|
headers:
|
|
X-Request-Id:
|
|
$ref: '#/components/headers/X-Request-Id'
|
|
content: { }
|
|
forbidden:
|
|
description: Forbidden
|
|
headers:
|
|
X-Request-Id:
|
|
$ref: '#/components/headers/X-Request-Id'
|
|
content: { }
|
|
requires_authentication:
|
|
description: Requires authentication
|
|
headers:
|
|
X-Request-Id:
|
|
$ref: '#/components/headers/X-Request-Id'
|
|
content: { }
|
|
conflict:
|
|
description: Conflict
|
|
headers:
|
|
X-Request-Id:
|
|
$ref: '#/components/headers/X-Request-Id'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
headers:
|
|
X-Request-Id:
|
|
description: |
|
|
Unique identifier assigned to the request by the server and set on every
|
|
response. Useful for correlating client requests with server-side logs.
|
|
schema:
|
|
type: string
|
|
example: cot7r4n3l3vh3qj4qveg
|
|
securitySchemes:
|
|
BearerAuth:
|
|
type: http
|
|
scheme: bearer
|
|
bearerFormat: JWT
|
|
TokenAuth:
|
|
type: apiKey
|
|
in: header
|
|
name: Authorization
|
|
description: >-
|
|
Enter the token with the `Token` prefix, e.g. "Token nbp_F3f0d.....".
|
|
paths:
|
|
/peers:
|
|
$ref: './peer/peers.yaml'
|
|
/peers/{peerId}:
|
|
$ref: './peer/peer.yaml'
|
|
/users:
|
|
$ref: './user/user_paths.yaml#/UsersPath'
|
|
/users/{userId}:
|
|
$ref: './user/user_paths.yaml#/UserPath'
|