Files

19511 lines
513 KiB
JSON

{
"openapi": "3.0.0",
"paths": {
"/api/remnawave-settings": {
"get": {
"operationId": "RemnawaveSettings_getSettings",
"parameters": [],
"responses": {
"200": {
"description": "Remnawave settings retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SettingsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Remnawave settings",
"tags": [
"Remnawave Settings Controller"
]
},
"patch": {
"operationId": "RemnawaveSettings_updateSettings",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateRemnawaveSettingsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Subscription settings updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SettingsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update Remnawave settings",
"tags": [
"Remnawave Settings Controller"
]
}
},
"/api/passkeys/registration/options": {
"get": {
"operationId": "Passkey_passkeyRegistrationOptions",
"parameters": [],
"responses": {
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
},
"default": {
"description": "Get passkey registration options",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PasskeyOptions"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get registration options for passkey",
"tags": [
"Passkeys Controller"
]
}
},
"/api/passkeys/registration/verify": {
"post": {
"operationId": "Passkey_passkeyRegistrationVerify",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PasskeyOptions"
}
}
}
},
"responses": {
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
},
"default": {
"description": "Verify passkey registration result",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VerifyPasskeyRegistrationResponse"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Verify registration for passkey",
"tags": [
"Passkeys Controller"
]
}
},
"/api/passkeys": {
"get": {
"operationId": "Passkey_getActivePasskeys",
"parameters": [],
"responses": {
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
},
"default": {
"description": "Get all passkeys",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PasskeysResponse"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all passkeys",
"tags": [
"Passkeys Controller"
]
},
"delete": {
"operationId": "Passkey_deletePasskey",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletePasskeyRequest"
}
}
}
},
"responses": {
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
},
"default": {
"description": "Delete passkey result",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PasskeysResponse"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete a passkey by ID",
"tags": [
"Passkeys Controller"
]
},
"patch": {
"operationId": "Passkey_updatePasskey",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdatePasskeyRequest"
}
}
}
},
"responses": {
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
},
"default": {
"description": "Update passkey",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PasskeysResponse"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update passkey",
"tags": [
"Passkeys Controller"
]
}
},
"/api/auth/login": {
"post": {
"operationId": "Auth_login",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LoginRequest"
}
}
}
},
"responses": {
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"401": {
"description": "Unauthorized - Invalid credentials",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UnauthorizedError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
},
"default": {
"description": "Access token for further requests",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TokenResponse"
}
}
}
}
},
"summary": "Login as superadmin",
"tags": [
"Auth Controller"
]
}
},
"/api/auth/register": {
"post": {
"operationId": "Auth_register",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RegisterRequest"
}
}
}
},
"responses": {
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"403": {
"description": "Forbidden - Registration is not allowed",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ForbiddenError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
},
"default": {
"description": "Access token for further requests",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TokenResponse"
}
}
}
}
},
"summary": "Register as superadmin",
"tags": [
"Auth Controller"
]
}
},
"/api/auth/status": {
"get": {
"operationId": "Auth_getStatus",
"parameters": [],
"responses": {
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
},
"default": {
"description": "Status of the system",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetStatusResponse"
}
}
}
}
},
"summary": "Get the status of the authentication",
"tags": [
"Auth Controller"
]
}
},
"/api/auth/oauth2/authorize": {
"post": {
"operationId": "Auth_oauth2Authorize",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuth2AuthorizeRequest"
}
}
}
},
"responses": {
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
},
"default": {
"description": "OAuth2 authorization URL",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuth2AuthorizeResponse"
}
}
}
}
},
"summary": "Initiate OAuth2 authorization",
"tags": [
"Auth Controller"
]
}
},
"/api/auth/oauth2/callback": {
"post": {
"operationId": "Auth_oauth2Callback",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuth2CallbackRequest"
}
}
}
},
"responses": {
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
},
"default": {
"description": "Access token for further requests",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TokenResponse"
}
}
}
}
},
"summary": "Callback from OAuth2",
"tags": [
"Auth Controller"
]
}
},
"/api/auth/passkey/authentication/options": {
"get": {
"operationId": "Auth_passkeyAuthenticationOptions",
"parameters": [],
"responses": {
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
},
"default": {
"description": "Passkey authentication options",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PasskeyOptions"
}
}
}
}
},
"summary": "Get the authentication options for passkey",
"tags": [
"Auth Controller"
]
}
},
"/api/auth/passkey/authentication/verify": {
"post": {
"operationId": "Auth_passkeyAuthenticationVerify",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PasskeyOptions"
}
}
}
},
"responses": {
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
},
"default": {
"description": "JWT access token after successful passkey authentication",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TokenResponse"
}
}
}
}
},
"summary": "Verify the authentication for passkey",
"tags": [
"Auth Controller"
]
}
},
"/api/subscription-page-configs": {
"get": {
"operationId": "SubscriptionPageConfig_getAllConfigs",
"parameters": [],
"responses": {
"200": {
"description": "Subscription page configs retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionPageConfigsResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all subscription page configs",
"tags": [
"Subscription Page Configs Controller"
]
},
"patch": {
"operationId": "SubscriptionPageConfig_updateConfig",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateSubscriptionPageConfigRequest"
}
}
}
},
"responses": {
"200": {
"description": "Subscription page config updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionPageConfigResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update subscription page config",
"tags": [
"Subscription Page Configs Controller"
]
},
"post": {
"operationId": "SubscriptionPageConfig_createConfig",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateSubscriptionPageConfigRequest"
}
}
}
},
"responses": {
"200": {
"description": "Subscription page config created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateSubscriptionPageConfigResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create subscription page config",
"tags": [
"Subscription Page Configs Controller"
]
}
},
"/api/subscription-page-configs/{uuid}": {
"get": {
"operationId": "SubscriptionPageConfig_getConfigByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Subscription page config UUID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Subscription page config retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionPageConfigResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get subscription page config by uuid",
"tags": [
"Subscription Page Configs Controller"
]
},
"delete": {
"operationId": "SubscriptionPageConfig_deleteConfig",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Subscription page config UUID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Subscription page config deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete subscription page config",
"tags": [
"Subscription Page Configs Controller"
]
}
},
"/api/subscription-page-configs/actions/reorder": {
"post": {
"operationId": "SubscriptionPageConfig_reorderSubscriptionPageConfigs",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReorderRequest"
}
}
}
},
"responses": {
"200": {
"description": "Subscription page configs reordered successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionPageConfigsResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Reorder subscription page configs",
"tags": [
"Subscription Page Configs Controller"
]
}
},
"/api/subscription-page-configs/actions/clone": {
"post": {
"operationId": "SubscriptionPageConfig_cloneSubscriptionPageConfig",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CloneNodePluginRequestRequest"
}
}
}
},
"responses": {
"200": {
"description": "Subscription page config cloned successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionPageConfigResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Clone subscription page config",
"tags": [
"Subscription Page Configs Controller"
]
}
},
"/api/users": {
"post": {
"operationId": "Users_createUser",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateUserRequest"
}
}
}
},
"responses": {
"201": {
"description": "User created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create a new user",
"tags": [
"Users Controller"
]
},
"patch": {
"operationId": "Users_updateUser",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateUserRequest"
}
}
}
},
"responses": {
"200": {
"description": "User updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update a user by UUID or username",
"tags": [
"Users Controller"
]
},
"get": {
"operationId": "Users_getAllUsers",
"parameters": [
{
"name": "size",
"required": false,
"in": "query",
"description": "Page size for pagination",
"schema": {
"type": "integer"
}
},
{
"name": "start",
"required": false,
"in": "query",
"description": "Offset for pagination",
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Users fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAllUsersResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all users",
"tags": [
"Users Controller"
]
}
},
"/api/users/{uuid}": {
"delete": {
"operationId": "Users_deleteUser",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete user",
"tags": [
"Users Controller"
]
},
"get": {
"operationId": "Users_getUserByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get user by UUID",
"tags": [
"Users Controller"
]
}
},
"/api/users/tags": {
"get": {
"operationId": "Users_getAllTags",
"parameters": [],
"responses": {
"200": {
"description": "Tags fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TagsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all existing user tags",
"tags": [
"Users Controller"
]
}
},
"/api/users/{uuid}/accessible-nodes": {
"get": {
"operationId": "Users_getUserAccessibleNodes",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User accessible nodes fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetUserAccessibleNodesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get user accessible nodes",
"tags": [
"Users Controller"
]
}
},
"/api/users/{uuid}/subscription-request-history": {
"get": {
"operationId": "Users_getUserSubscriptionRequestHistory",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User subscription request history fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetUserSubscriptionRequestHistoryResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get user subscription request history, recent 24 records",
"tags": [
"Users Controller"
]
}
},
"/api/users/by-short-uuid/{shortUuid}": {
"get": {
"operationId": "Users_getUserByShortUuid",
"parameters": [
{
"name": "shortUuid",
"required": true,
"in": "path",
"description": "Short UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get user by Short UUID",
"tags": [
"Users Controller"
]
}
},
"/api/users/by-username/{username}": {
"get": {
"operationId": "Users_getUserByUsername",
"parameters": [
{
"name": "username",
"required": true,
"in": "path",
"description": "Username of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get user by username",
"tags": [
"Users Controller"
]
}
},
"/api/users/by-id/{id}": {
"get": {
"operationId": "Users_getUserById",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"description": "ID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get user by ID",
"tags": [
"Users Controller"
]
}
},
"/api/users/by-telegram-id/{telegramId}": {
"get": {
"operationId": "Users_getUserByTelegramId",
"parameters": [
{
"name": "telegramId",
"required": true,
"in": "path",
"description": "Telegram ID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Users fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UsersResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get users by telegram ID",
"tags": [
"Users Controller"
]
}
},
"/api/users/by-email/{email}": {
"get": {
"operationId": "Users_getUsersByEmail",
"parameters": [
{
"name": "email",
"required": true,
"in": "path",
"description": "Email of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Users fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UsersResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get users by email",
"tags": [
"Users Controller"
]
}
},
"/api/users/by-tag/{tag}": {
"get": {
"operationId": "Users_getUsersByTag",
"parameters": [
{
"name": "tag",
"required": true,
"in": "path",
"description": "Tag of the user",
"schema": {
"example": "PROMO_1",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Users fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UsersResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get users by tag",
"tags": [
"Users Controller"
]
}
},
"/api/users/{uuid}/actions/revoke": {
"post": {
"operationId": "Users_revokeUserSubscription",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RevokeUserSubscriptionBody"
}
}
}
},
"responses": {
"200": {
"description": "User subscription revoked successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Revoke user subscription",
"tags": [
"Users Controller"
]
}
},
"/api/users/{uuid}/actions/disable": {
"post": {
"operationId": "Users_disableUser",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User disabled successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Disable user",
"tags": [
"Users Controller"
]
}
},
"/api/users/{uuid}/actions/enable": {
"post": {
"operationId": "Users_enableUser",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User enabled successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Enable user",
"tags": [
"Users Controller"
]
}
},
"/api/users/{uuid}/actions/reset-traffic": {
"post": {
"operationId": "Users_resetUserTraffic",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User traffic reset successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Reset user traffic",
"tags": [
"Users Controller"
]
}
},
"/api/users/resolve": {
"post": {
"operationId": "Users_resolveUser",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResolveUserRequestBody"
}
}
}
},
"responses": {
"200": {
"description": "User resolved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResolveUserResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Resolve a user",
"tags": [
"Users Controller"
]
}
},
"/api/users/bulk/delete-by-status": {
"post": {
"operationId": "UsersBulkActions_bulkDeleteUsersByStatus",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkDeleteUsersByStatusRequest"
}
}
}
},
"responses": {
"200": {
"description": "Users deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkActionResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Bulk delete users by status",
"tags": [
"Users Bulk Actions Controller"
]
}
},
"/api/users/bulk/delete": {
"post": {
"operationId": "UsersBulkActions_bulkDeleteUsers",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkUuidsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Users deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkActionResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Bulk delete users by UUIDs",
"tags": [
"Users Bulk Actions Controller"
]
}
},
"/api/users/bulk/revoke-subscription": {
"post": {
"operationId": "UsersBulkActions_bulkRevokeUsersSubscription",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkUuidsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Users subscription revoked successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkActionResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Revoke users subscription by User UUIDs",
"tags": [
"Users Bulk Actions Controller"
]
}
},
"/api/users/bulk/reset-traffic": {
"post": {
"operationId": "UsersBulkActions_bulkResetUserTraffic",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkUuidsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Users traffic reset successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkActionResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Bulk reset traffic users by UUIDs",
"tags": [
"Users Bulk Actions Controller"
]
}
},
"/api/users/bulk/update": {
"post": {
"operationId": "UsersBulkActions_bulkUpdateUsers",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkUpdateUsersRequest"
}
}
}
},
"responses": {
"200": {
"description": "Users updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkActionResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Bulk update users by UUIDs",
"tags": [
"Users Bulk Actions Controller"
]
}
},
"/api/users/bulk/update-squads": {
"post": {
"operationId": "UsersBulkActions_bulkUpdateUsersInternalSquads",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkUpdateUsersSquadsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Internal squads updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkActionResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Bulk update users internal squads by UUIDs",
"tags": [
"Users Bulk Actions Controller"
]
}
},
"/api/users/bulk/extend-expiration-date": {
"post": {
"description": "Bulk extend all users expiration date",
"operationId": "UsersBulkActions_bulkExtendExpirationDate",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkExtendExpirationDateRequest"
}
}
}
},
"responses": {
"200": {
"description": "Users expiration date extended successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkActionResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Bulk Extend Users Expiration Date",
"tags": [
"Users Bulk Actions Controller"
]
}
},
"/api/users/bulk/all/update": {
"post": {
"operationId": "UsersBulkActions_bulkUpdateAllUsers",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkAllUpdateUsersRequest"
}
}
}
},
"responses": {
"200": {
"description": "All users updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Bulk update all users",
"tags": [
"Users Bulk Actions Controller"
]
}
},
"/api/users/bulk/all/reset-traffic": {
"post": {
"description": "Bulk reset all users traffic",
"operationId": "UsersBulkActions_bulkAllResetUserTraffic",
"parameters": [],
"responses": {
"200": {
"description": "All users traffic reset successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Bulk Reset All Users Traffic",
"tags": [
"Users Bulk Actions Controller"
]
}
},
"/api/users/bulk/all/extend-expiration-date": {
"post": {
"description": "Bulk extend all users expiration date",
"operationId": "UsersBulkActions_bulkAllExtendExpirationDate",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkAllExtendExpirationDateRequest"
}
}
}
},
"responses": {
"200": {
"description": "All users expiration date extended successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Bulk Extend All Users Expiration Date",
"tags": [
"Users Bulk Actions Controller"
]
}
},
"/api/sub/{shortUuid}/info": {
"get": {
"operationId": "Subscription_getSubscriptionInfoByShortUuid",
"parameters": [
{
"name": "shortUuid",
"required": true,
"in": "path",
"description": "Short UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Subscription info fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"summary": "Get Subscription Info by Short UUID",
"tags": [
"[Public] Subscription Controller"
]
}
},
"/api/sub/{shortUuid}": {
"get": {
"operationId": "Subscription_getSubscription",
"parameters": [
{
"name": "shortUuid",
"required": true,
"in": "path",
"description": "Short UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"text/plain": {
"schema": {
"type": "string"
}
}
}
}
},
"tags": [
"[Public] Subscription Controller"
]
}
},
"/api/sub/{shortUuid}/{clientType}": {
"get": {
"operationId": "Subscription_getSubscriptionByClientType",
"parameters": [
{
"name": "clientType",
"required": true,
"in": "path",
"description": "Client type",
"schema": {
"enum": [
"stash",
"singbox",
"mihomo",
"json",
"v2ray-json",
"clash"
],
"type": "string"
}
},
{
"name": "shortUuid",
"required": true,
"in": "path",
"description": "Short UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"text/plain": {
"schema": {
"type": "string"
}
}
}
}
},
"tags": [
"[Public] Subscription Controller"
]
}
},
"/api/subscriptions": {
"get": {
"operationId": "Subscriptions_getAllSubscriptions",
"parameters": [
{
"name": "size",
"required": false,
"in": "query",
"description": "Number of subscriptions to return, no more than 500",
"schema": {
"example": 25,
"type": "integer"
}
},
{
"name": "start",
"required": false,
"in": "query",
"description": "Start index (offset) of the users to return, default is 0",
"schema": {
"example": 0,
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Users fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAllSubscriptionsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all subscriptions",
"tags": [
"[Protected] Subscriptions Controller"
]
}
},
"/api/subscriptions/by-username/{username}": {
"get": {
"operationId": "Subscriptions_getSubscriptionByUsername",
"parameters": [
{
"name": "username",
"required": true,
"in": "path",
"description": "Username of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Subscription fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get subscription by username",
"tags": [
"[Protected] Subscriptions Controller"
]
}
},
"/api/subscriptions/by-short-uuid/{shortUuid}": {
"get": {
"operationId": "Subscriptions_getSubscriptionByShortUuidProtected",
"parameters": [
{
"name": "shortUuid",
"required": true,
"in": "path",
"description": "Short uuid of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Subscription fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get subscription by short uuid (protected route)",
"tags": [
"[Protected] Subscriptions Controller"
]
}
},
"/api/subscriptions/by-uuid/{uuid}": {
"get": {
"operationId": "Subscriptions_getSubscriptionByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Uuid of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Subscription fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get subscription by uuid",
"tags": [
"[Protected] Subscriptions Controller"
]
}
},
"/api/subscriptions/by-short-uuid/{shortUuid}/raw": {
"get": {
"operationId": "Subscriptions_getRawSubscriptionByShortUuid",
"parameters": [
{
"name": "withDisabledHosts",
"required": false,
"in": "query",
"description": "Include disabled hosts in the subscription. Default is false.",
"schema": {
"type": "boolean"
}
},
{
"name": "shortUuid",
"required": true,
"in": "path",
"description": "Short UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Raw subscription fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetRawSubscriptionByShortUuidResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Raw Subscription by Short UUID",
"tags": [
"[Protected] Subscriptions Controller"
]
}
},
"/api/subscriptions/subpage-config/{shortUuid}": {
"get": {
"operationId": "Subscriptions_getSubpageConfigByShortUuid",
"parameters": [
{
"name": "shortUuid",
"required": true,
"in": "path",
"description": "Short UUID of the user",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetSubpageConfigByShortUuidRequestBody"
}
}
}
},
"responses": {
"200": {
"description": "Subpage config fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetSubpageConfigByShortUuidResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Subpage Config by Short UUID",
"tags": [
"[Protected] Subscriptions Controller"
]
}
},
"/api/subscriptions/connection-keys/{uuid}": {
"get": {
"operationId": "Subscriptions_getConnectionKeysByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Connection keys fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetConnectionKeysByUuidResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get connection keys (base64 format) by uuid",
"tags": [
"[Protected] Subscriptions Controller"
]
}
},
"/api/subscription-templates": {
"get": {
"operationId": "SubscriptionTemplate_getAllTemplates",
"parameters": [],
"responses": {
"200": {
"description": "Templates retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TemplatesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all subscription templates (wihout content)",
"tags": [
"Subscription Template Controller"
]
},
"patch": {
"operationId": "SubscriptionTemplate_updateTemplate",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTemplateRequest"
}
}
}
},
"responses": {
"200": {
"description": "Template updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TemplateResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update subscription template",
"tags": [
"Subscription Template Controller"
]
},
"post": {
"operationId": "SubscriptionTemplate_createTemplate",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateSubscriptionTemplateRequest"
}
}
}
},
"responses": {
"200": {
"description": "Template created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TemplateResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create subscription template",
"tags": [
"Subscription Template Controller"
]
}
},
"/api/subscription-templates/{uuid}": {
"get": {
"operationId": "SubscriptionTemplate_getTemplateByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Template UUID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Template retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TemplateResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get subscription template by uuid",
"tags": [
"Subscription Template Controller"
]
},
"delete": {
"operationId": "SubscriptionTemplate_deleteTemplate",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Template UUID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Template deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete subscription template",
"tags": [
"Subscription Template Controller"
]
}
},
"/api/subscription-templates/actions/reorder": {
"post": {
"operationId": "SubscriptionTemplate_reorderSubscriptionTemplates",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReorderRequest"
}
}
}
},
"responses": {
"200": {
"description": "Subscription templates reordered successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TemplatesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Reorder subscription templates",
"tags": [
"Subscription Template Controller"
]
}
},
"/api/tokens": {
"post": {
"description": "This endpoint is forbidden to use via \"API-key\". It can only be used with an admin JWT-token.",
"operationId": "ApiTokens_create",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateApiTokenRequest"
}
}
}
},
"responses": {
"201": {
"description": "Token created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateApiTokenResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create a new API token",
"tags": [
"API Tokens Controller"
]
},
"get": {
"description": "This endpoint is forbidden to use via \"API-key\". It can only be used with admin JWT-token.",
"operationId": "ApiTokens_findAll",
"parameters": [],
"responses": {
"200": {
"description": "Tokens fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FindAllApiTokensResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all API tokens",
"tags": [
"API Tokens Controller"
]
}
},
"/api/tokens/{uuid}": {
"delete": {
"description": "This endpoint is forbidden to use via \"API-key\". It can be used only with an admin JWT-token.",
"operationId": "ApiTokens_delete",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the API token",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Token deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteApiTokenResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete an API token by UUID",
"tags": [
"API Tokens Controller"
]
}
},
"/api/config-profiles": {
"get": {
"operationId": "ConfigProfile_getConfigProfiles",
"parameters": [],
"responses": {
"200": {
"description": "Config profiles retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConfigProfilesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get config profiles",
"tags": [
"Config Profiles Controller"
]
},
"post": {
"operationId": "ConfigProfile_createConfigProfile",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateConfigProfileRequest"
}
}
}
},
"responses": {
"201": {
"description": "Config profile created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConfigProfileResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"409": {
"description": "Config profile name already exists or inbound tags are not unique. Inbound tags must be unique in global scope."
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create config profile",
"tags": [
"Config Profiles Controller"
]
},
"patch": {
"operationId": "ConfigProfile_updateConfigProfile",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateConfigProfileRequest"
}
}
}
},
"responses": {
"200": {
"description": "Config profile updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConfigProfileResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Config profile not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"409": {
"description": "Config profile name already exists or inbound tags are not unique. Inbound tags must be unique in global scope."
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update Core Config in specific config profile",
"tags": [
"Config Profiles Controller"
]
}
},
"/api/config-profiles/inbounds": {
"get": {
"operationId": "ConfigProfile_getAllInbounds",
"parameters": [],
"responses": {
"200": {
"description": "Inbounds retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InboundsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all inbounds from all config profiles",
"tags": [
"Config Profiles Controller"
]
}
},
"/api/config-profiles/{uuid}/inbounds": {
"get": {
"operationId": "ConfigProfile_getInboundsByProfileUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Inbounds retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InboundsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Config profile not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get inbounds by profile uuid",
"tags": [
"Config Profiles Controller"
]
}
},
"/api/config-profiles/{uuid}": {
"get": {
"operationId": "ConfigProfile_getConfigProfileByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Config profile retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConfigProfileResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Config profile not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get config profile by uuid",
"tags": [
"Config Profiles Controller"
]
},
"delete": {
"operationId": "ConfigProfile_deleteConfigProfileByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Config profile deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Config profile not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete config profile",
"tags": [
"Config Profiles Controller"
]
}
},
"/api/config-profiles/{uuid}/computed-config": {
"get": {
"operationId": "ConfigProfile_getComputedConfigProfileByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Computed config profile retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConfigProfileResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Config profile not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get computed config profile by uuid",
"tags": [
"Config Profiles Controller"
]
}
},
"/api/config-profiles/actions/reorder": {
"post": {
"operationId": "ConfigProfile_reorderConfigProfiles",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReorderRequest"
}
}
}
},
"responses": {
"200": {
"description": "Config profiles reordered successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConfigProfilesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Reorder config profiles",
"tags": [
"Config Profiles Controller"
]
}
},
"/api/snippets": {
"get": {
"operationId": "Snippets_getSnippets",
"parameters": [],
"responses": {
"200": {
"description": "Snippets retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SnippetsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get snippets",
"tags": [
"Snippets Controller"
]
},
"delete": {
"operationId": "Snippets_deleteSnippetByName",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteSnippetRequest"
}
}
}
},
"responses": {
"200": {
"description": "Snippet deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SnippetsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Snippet not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete snippet",
"tags": [
"Snippets Controller"
]
},
"post": {
"operationId": "Snippets_createSnippet",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SnippetRequest"
}
}
}
},
"responses": {
"201": {
"description": "Snippet created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SnippetsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"409": {
"description": "Snippet name already exists."
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create snippet",
"tags": [
"Snippets Controller"
]
},
"patch": {
"operationId": "Snippets_updateSnippet",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SnippetRequest"
}
}
}
},
"responses": {
"200": {
"description": "Snippet updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SnippetsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Snippet not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"409": {
"description": "Snippet name already exists."
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update snippet",
"tags": [
"Snippets Controller"
]
}
},
"/api/internal-squads": {
"get": {
"operationId": "InternalSquad_getInternalSquads",
"parameters": [],
"responses": {
"200": {
"description": "Internal squads retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalSquadsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all internal squads",
"tags": [
"Internal Squads Controller"
]
},
"post": {
"operationId": "InternalSquad_createInternalSquad",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateInternalSquadRequest"
}
}
}
},
"responses": {
"201": {
"description": "Internal squad created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalSquadResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"409": {
"description": "Internal squad already exists"
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create internal squad",
"tags": [
"Internal Squads Controller"
]
},
"patch": {
"operationId": "InternalSquad_updateInternalSquad",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateInternalSquadRequest"
}
}
}
},
"responses": {
"200": {
"description": "Internal squad updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalSquadResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Internal squad not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"409": {
"description": "Internal squad already exists"
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update internal squad",
"tags": [
"Internal Squads Controller"
]
}
},
"/api/internal-squads/{uuid}": {
"get": {
"operationId": "InternalSquad_getInternalSquadByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Internal squad retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalSquadResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get internal squad by uuid",
"tags": [
"Internal Squads Controller"
]
},
"delete": {
"operationId": "InternalSquad_deleteInternalSquad",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Internal squad deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Internal squad not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete internal squad",
"tags": [
"Internal Squads Controller"
]
}
},
"/api/internal-squads/{uuid}/accessible-nodes": {
"get": {
"operationId": "InternalSquad_getInternalSquadAccessibleNodes",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the internal squad",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Internal squad accessible nodes fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetInternalSquadAccessibleNodesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Internal squad not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get internal squad accessible nodes",
"tags": [
"Internal Squads Controller"
]
}
},
"/api/internal-squads/{uuid}/bulk-actions/add-users": {
"post": {
"operationId": "InternalSquad_addUsersToInternalSquad",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Task added to internal job queue",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Internal squad not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Add all users to internal squad",
"tags": [
"Internal Squads Controller"
]
}
},
"/api/internal-squads/{uuid}/bulk-actions/remove-users": {
"delete": {
"operationId": "InternalSquad_removeUsersFromInternalSquad",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Task added to internal job queue",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Internal squad not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete users from internal squad",
"tags": [
"Internal Squads Controller"
]
}
},
"/api/internal-squads/actions/reorder": {
"post": {
"operationId": "InternalSquad_reorderInternalSquads",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReorderRequest"
}
}
}
},
"responses": {
"200": {
"description": "Internal squads reordered successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalSquadsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Reorder internal squads",
"tags": [
"Internal Squads Controller"
]
}
},
"/api/external-squads": {
"get": {
"operationId": "ExternalSquad_getExternalSquads",
"parameters": [],
"responses": {
"200": {
"description": "External squads retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExternalSquadsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all external squads",
"tags": [
"External Squads Controller"
]
},
"post": {
"operationId": "ExternalSquad_createExternalSquad",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateExternalSquadRequest"
}
}
}
},
"responses": {
"201": {
"description": "External squad created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExternalSquadResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"409": {
"description": "External squad already exists"
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create external squad",
"tags": [
"External Squads Controller"
]
},
"patch": {
"operationId": "ExternalSquad_updateExternalSquad",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateExternalSquadRequest"
}
}
}
},
"responses": {
"200": {
"description": "External squad updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExternalSquadResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "External squad not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"409": {
"description": "External squad already exists"
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update external squad",
"tags": [
"External Squads Controller"
]
}
},
"/api/external-squads/{uuid}": {
"get": {
"operationId": "ExternalSquad_getExternalSquadByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "External squad retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExternalSquadResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get external squad by uuid",
"tags": [
"External Squads Controller"
]
},
"delete": {
"operationId": "ExternalSquad_deleteExternalSquad",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "External squad deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "External squad not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete external squad",
"tags": [
"External Squads Controller"
]
}
},
"/api/external-squads/{uuid}/bulk-actions/add-users": {
"post": {
"operationId": "ExternalSquad_addUsersToExternalSquad",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Task added to external job queue",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "External squad not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Add all users to external squad",
"tags": [
"External Squads Controller"
]
}
},
"/api/external-squads/{uuid}/bulk-actions/remove-users": {
"delete": {
"operationId": "ExternalSquad_removeUsersFromExternalSquad",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Task added to external job queue",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "External squad not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete users from external squad",
"tags": [
"External Squads Controller"
]
}
},
"/api/external-squads/actions/reorder": {
"post": {
"operationId": "ExternalSquad_reorderExternalSquads",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReorderRequest"
}
}
}
},
"responses": {
"200": {
"description": "External squads reordered successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExternalSquadsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Reorder external squads",
"tags": [
"External Squads Controller"
]
}
},
"/api/keygen": {
"get": {
"operationId": "Keygen_generateKey",
"parameters": [],
"responses": {
"200": {
"description": "Get SECRET_KEY for Remnawave Node",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetPubKeyResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get SECRET_KEY for Remnawave Node",
"tags": [
"Keygen Controller"
]
}
},
"/api/nodes/tags": {
"get": {
"operationId": "Nodes_getAllNodesTags",
"parameters": [],
"responses": {
"200": {
"description": "Nodes tags fetched",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TagsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all existing nodes tags",
"tags": [
"Nodes Controller"
]
}
},
"/api/nodes": {
"post": {
"operationId": "Nodes_createNode",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateNodeRequest"
}
}
}
},
"responses": {
"201": {
"description": "Node created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodeResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create a new node",
"tags": [
"Nodes Controller"
]
},
"get": {
"operationId": "Nodes_getAllNodes",
"parameters": [],
"responses": {
"200": {
"description": "Nodes fetched",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all nodes",
"tags": [
"Nodes Controller"
]
},
"patch": {
"operationId": "Nodes_updateNode",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateNodeRequest"
}
}
}
},
"responses": {
"200": {
"description": "Node updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodeResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update node",
"tags": [
"Nodes Controller"
]
}
},
"/api/nodes/{uuid}": {
"get": {
"operationId": "Nodes_getOneNode",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Node UUID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Node fetched",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodeResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get node by UUID",
"tags": [
"Nodes Controller"
]
},
"delete": {
"operationId": "Nodes_deleteNode",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Node UUID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Node deleted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete a node",
"tags": [
"Nodes Controller"
]
}
},
"/api/nodes/{uuid}/actions/enable": {
"post": {
"operationId": "Nodes_enableNode",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Node UUID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Node enabled",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodeResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Enable a node",
"tags": [
"Nodes Controller"
]
}
},
"/api/nodes/{uuid}/actions/disable": {
"post": {
"operationId": "Nodes_disableNode",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Node UUID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Node disabled",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodeResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Disable a node",
"tags": [
"Nodes Controller"
]
}
},
"/api/nodes/{uuid}/actions/restart": {
"post": {
"operationId": "Nodes_restartNode",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Node UUID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Node restarted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Restart node",
"tags": [
"Nodes Controller"
]
}
},
"/api/nodes/{uuid}/actions/reset-traffic": {
"post": {
"operationId": "Nodes_resetNodeTraffic",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Node UUID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Event sent",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Reset Node Traffic",
"tags": [
"Nodes Controller"
]
}
},
"/api/nodes/actions/restart-all": {
"post": {
"operationId": "Nodes_restartAllNodes",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RestartAllNodesRequestBody"
}
}
}
},
"responses": {
"200": {
"description": "All nodes restarted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Restart all nodes",
"tags": [
"Nodes Controller"
]
}
},
"/api/nodes/actions/reorder": {
"post": {
"operationId": "Nodes_reorderNodes",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReorderNodeRequest"
}
}
}
},
"responses": {
"200": {
"description": "Nodes reordered successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Reorder nodes",
"tags": [
"Nodes Controller"
]
}
},
"/api/nodes/bulk-actions/profile-modification": {
"post": {
"operationId": "Nodes_profileModification",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProfileModificationRequest"
}
}
}
},
"responses": {
"200": {
"description": "Event sent successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Modify Inbounds & Profile for many nodes",
"tags": [
"Nodes Controller"
]
}
},
"/api/nodes/bulk-actions": {
"post": {
"operationId": "Nodes_bulkNodesActions",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkNodesActionsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Event sent successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Perform actions for many nodes",
"tags": [
"Nodes Controller"
]
}
},
"/api/nodes/bulk-actions/update": {
"post": {
"operationId": "Nodes_bulkNodesUpdate",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkNodesUpdateRequest"
}
}
}
},
"responses": {
"200": {
"description": "Event sent successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update many nodes",
"tags": [
"Nodes Controller"
]
}
},
"/api/node-plugins/torrent-blocker": {
"get": {
"operationId": "TorrentBlockerReports_getTorrentBlockerReports",
"parameters": [
{
"name": "size",
"required": false,
"in": "query",
"description": "Page size for pagination",
"schema": {
"type": "integer"
}
},
{
"name": "start",
"required": false,
"in": "query",
"description": "Offset for pagination",
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Torrent blocker reports fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TorrentBlockerReportsResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Torrent Blocker Reports",
"tags": [
"Node Plugins Controller"
]
}
},
"/api/node-plugins/torrent-blocker/stats": {
"get": {
"operationId": "TorrentBlockerReports_getTorrentBlockerReportsStats",
"parameters": [],
"responses": {
"200": {
"description": "Torrent blocker reports stats fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTorrentBlockerReportsStatsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Torrent Blocker Reports Stats",
"tags": [
"Node Plugins Controller"
]
}
},
"/api/node-plugins/torrent-blocker/truncate": {
"delete": {
"operationId": "TorrentBlockerReports_truncateTorrentBlockerReports",
"parameters": [],
"responses": {
"200": {
"description": "Torrent blocker reports truncated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TorrentBlockerReportsResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Truncate Torrent Blocker Reports",
"tags": [
"Node Plugins Controller"
]
}
},
"/api/node-plugins": {
"get": {
"operationId": "NodePlugin_getAllConfigs",
"parameters": [],
"responses": {
"200": {
"description": "Node plugins retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodePluginsResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all Node Plugins",
"tags": [
"Node Plugins Controller"
]
},
"patch": {
"operationId": "NodePlugin_updateConfig",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateNodePluginRequest"
}
}
}
},
"responses": {
"200": {
"description": "Node plugin updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodePluginResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update Node Plugin",
"tags": [
"Node Plugins Controller"
]
},
"post": {
"operationId": "NodePlugin_createConfig",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateNodePluginRequest"
}
}
}
},
"responses": {
"200": {
"description": "Node plugin created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateNodePluginResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create Node Plugin",
"tags": [
"Node Plugins Controller"
]
}
},
"/api/node-plugins/{uuid}": {
"get": {
"operationId": "NodePlugin_getConfigByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Node plugin UUID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Node plugin retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodePluginResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Node Plugin by uuid",
"tags": [
"Node Plugins Controller"
]
},
"delete": {
"operationId": "NodePlugin_deleteConfig",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "Node plugin UUID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Node plugin deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete Node Plugin",
"tags": [
"Node Plugins Controller"
]
}
},
"/api/node-plugins/actions/reorder": {
"post": {
"operationId": "NodePlugin_reorderNodePlugins",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReorderRequest"
}
}
}
},
"responses": {
"200": {
"description": "Node plugins reordered successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodePluginsResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Reorder Node Plugins",
"tags": [
"Node Plugins Controller"
]
}
},
"/api/node-plugins/actions/clone": {
"post": {
"operationId": "NodePlugin_cloneNodePlugin",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CloneNodePluginRequestRequest"
}
}
}
},
"responses": {
"200": {
"description": "Node plugin cloned successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodePluginResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Clone Node Plugin",
"tags": [
"Node Plugins Controller"
]
}
},
"/api/node-plugins/executor": {
"post": {
"operationId": "NodePlugin_pluginExecutor",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PluginExecutorRequest"
}
}
}
},
"responses": {
"200": {
"description": "Node plugin cloned successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Execute command on node plugins",
"tags": [
"Node Plugins Controller"
]
}
},
"/api/hosts/tags": {
"get": {
"operationId": "Hosts_getAllHostTags",
"parameters": [],
"responses": {
"200": {
"description": "Host tags fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TagsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all existing host tags",
"tags": [
"Hosts Controller"
]
}
},
"/api/hosts": {
"post": {
"operationId": "Hosts_createHost",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateHostRequest"
}
}
}
},
"responses": {
"201": {
"description": "Host created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HostResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create a new host",
"tags": [
"Hosts Controller"
]
},
"patch": {
"operationId": "Hosts_updateHost",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateHostRequest"
}
}
}
},
"responses": {
"200": {
"description": "Host updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HostResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update a host",
"tags": [
"Hosts Controller"
]
},
"get": {
"operationId": "Hosts_getAllHosts",
"parameters": [],
"responses": {
"200": {
"description": "Hosts fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HostListResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all hosts",
"tags": [
"Hosts Controller"
]
}
},
"/api/hosts/{uuid}": {
"get": {
"operationId": "Hosts_getOneHost",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the host",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Host fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HostResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get a host by UUID",
"tags": [
"Hosts Controller"
]
},
"delete": {
"operationId": "Hosts_deleteHost",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the host",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Host deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Host not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete a host by UUID",
"tags": [
"Hosts Controller"
]
}
},
"/api/hosts/actions/reorder": {
"post": {
"operationId": "Hosts_reorderHosts",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReorderHostRequest"
}
}
}
},
"responses": {
"200": {
"description": "Hosts reordered successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReorderHostResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Reorder hosts",
"tags": [
"Hosts Controller"
]
}
},
"/api/hosts/bulk/delete": {
"post": {
"operationId": "HostsBulkActions_deleteHosts",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkUuidsRequest2"
}
}
}
},
"responses": {
"200": {
"description": "Hosts deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HostListResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete hosts by UUIDs",
"tags": [
"Hosts Bulk Actions Controller"
]
}
},
"/api/hosts/bulk/disable": {
"post": {
"operationId": "HostsBulkActions_disableHosts",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkUuidsRequest2"
}
}
}
},
"responses": {
"200": {
"description": "Hosts disabled successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HostListResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Disable hosts by UUIDs",
"tags": [
"Hosts Bulk Actions Controller"
]
}
},
"/api/hosts/bulk/enable": {
"post": {
"operationId": "HostsBulkActions_enableHosts",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkUuidsRequest2"
}
}
}
},
"responses": {
"200": {
"description": "Hosts enabled successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HostListResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Enable hosts by UUIDs",
"tags": [
"Hosts Bulk Actions Controller"
]
}
},
"/api/hosts/bulk/set-inbound": {
"post": {
"operationId": "HostsBulkActions_setInboundToHosts",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SetInboundToManyHostsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Hosts inbound set successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HostListResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Set inbound to hosts by UUIDs",
"tags": [
"Hosts Bulk Actions Controller"
]
}
},
"/api/hosts/bulk/set-port": {
"post": {
"operationId": "HostsBulkActions_setPortToHosts",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SetPortToManyHostsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Hosts port set successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HostListResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Set port to hosts by UUIDs",
"tags": [
"Hosts Bulk Actions Controller"
]
}
},
"/api/bandwidth-stats/nodes/{uuid}/users/legacy": {
"get": {
"operationId": "BandwidthStatsNodes_getNodeUserUsage",
"parameters": [
{
"name": "start",
"required": true,
"in": "query",
"description": "Start date",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "end",
"required": true,
"in": "query",
"description": "End date",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the node",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Nodes users usage by range (legacy) fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetLegacyStatsNodesUsersUsageResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Node User Usage by Range and Node UUID (Legacy)",
"tags": [
"Bandwidth Stats Controller"
]
}
},
"/api/bandwidth-stats/nodes/{uuid}/users": {
"get": {
"operationId": "BandwidthStatsNodes_getStatsNodeUsersUsage",
"parameters": [
{
"name": "topUsersLimit",
"required": true,
"in": "query",
"description": "Limit of top users to return",
"schema": {
"type": "integer"
}
},
{
"name": "start",
"required": true,
"in": "query",
"description": "Start date (YYYY-MM-DD)",
"schema": {
"format": "date",
"example": "2026-01-31",
"type": "string"
}
},
{
"name": "end",
"required": true,
"in": "query",
"description": "End date (YYYY-MM-DD)",
"schema": {
"format": "date",
"example": "2026-01-01",
"type": "string"
}
},
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the node",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Stats node users usage fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetStatsNodeUsersUsageResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Node Users Usage by Node UUID",
"tags": [
"Bandwidth Stats Controller"
]
}
},
"/api/bandwidth-stats/users/{uuid}/legacy": {
"get": {
"operationId": "BandwidthStatsUsers_getUserUsageByRange",
"parameters": [
{
"name": "start",
"required": true,
"in": "query",
"description": "Start date",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "end",
"required": true,
"in": "query",
"description": "End date",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User usage by range (legacy) fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetLegacyStatsUserUsageResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get User Usage by Range (Legacy)",
"tags": [
"Bandwidth Stats Controller"
]
}
},
"/api/bandwidth-stats/users/{uuid}": {
"get": {
"operationId": "BandwidthStatsUsers_getStatsNodesUsage",
"parameters": [
{
"name": "topNodesLimit",
"required": true,
"in": "query",
"description": "Limit of top nodes to return",
"schema": {
"type": "integer"
}
},
{
"name": "start",
"required": true,
"in": "query",
"description": "Start date (YYYY-MM-DD)",
"schema": {
"format": "date",
"example": "2026-01-31",
"type": "string"
}
},
{
"name": "end",
"required": true,
"in": "query",
"description": "End date (YYYY-MM-DD)",
"schema": {
"format": "date",
"example": "2026-01-01",
"type": "string"
}
},
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Stats user usage fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatsUserUsageResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get User Usage by Range",
"tags": [
"Bandwidth Stats Controller"
]
}
},
"/api/hwid/devices": {
"get": {
"operationId": "HwidUserDevices_getAllUsers",
"parameters": [
{
"name": "size",
"required": false,
"in": "query",
"description": "Page size for pagination",
"schema": {
"type": "integer"
}
},
{
"name": "start",
"required": false,
"in": "query",
"description": "Offset for pagination",
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Hwid devices fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAllHwidDevicesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all HWID devices",
"tags": [
"HWID User Devices Controller"
]
},
"post": {
"operationId": "HwidUserDevices_createUserHwidDevice",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateUserHwidDeviceRequest"
}
}
}
},
"responses": {
"200": {
"description": "User HWID device created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HwidDevicesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "One of requested resources not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create a user HWID device",
"tags": [
"HWID User Devices Controller"
]
}
},
"/api/hwid/devices/delete": {
"post": {
"operationId": "HwidUserDevices_deleteUserHwidDevice",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteUserHwidDeviceRequest"
}
}
}
},
"responses": {
"200": {
"description": "User HWID device deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HwidDevicesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "One of requested resources not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete a user HWID device",
"tags": [
"HWID User Devices Controller"
]
}
},
"/api/hwid/devices/delete-all": {
"post": {
"operationId": "HwidUserDevices_deleteAllUserHwidDevices",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteAllUserHwidDevicesRequest"
}
}
}
},
"responses": {
"200": {
"description": "User HWID devices deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HwidDevicesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "One of requested resources not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete all user HWID devices",
"tags": [
"HWID User Devices Controller"
]
}
},
"/api/hwid/devices/stats": {
"get": {
"operationId": "HwidUserDevices_getHwidDevicesStats",
"parameters": [],
"responses": {
"200": {
"description": "Hwid devices stats fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetHwidDevicesStatsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get HWID devices stats",
"tags": [
"HWID User Devices Controller"
]
}
},
"/api/hwid/devices/top-users": {
"get": {
"operationId": "HwidUserDevices_getTopUsersByHwidDevices",
"parameters": [
{
"name": "size",
"required": false,
"in": "query",
"description": "Page size for pagination",
"schema": {
"type": "integer"
}
},
{
"name": "start",
"required": false,
"in": "query",
"description": "Offset for pagination",
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Top users by HWID devices fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTopUsersByHwidDevicesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get top users by HWID devices",
"tags": [
"HWID User Devices Controller"
]
}
},
"/api/hwid/devices/{userUuid}": {
"get": {
"operationId": "HwidUserDevices_getUserHwidDevices",
"parameters": [
{
"name": "userUuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User HWID devices fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HwidDevicesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "One of requested resources not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get user HWID devices",
"tags": [
"HWID User Devices Controller"
]
}
},
"/api/bandwidth-stats/nodes": {
"get": {
"operationId": "NodesUsageHistory_getStatsNodesUsage",
"parameters": [
{
"name": "topNodesLimit",
"required": true,
"in": "query",
"description": "Limit of top nodes to return",
"schema": {
"type": "integer"
}
},
{
"name": "start",
"required": true,
"in": "query",
"description": "Start date (YYYY-MM-DD)",
"schema": {
"format": "date",
"example": "2026-01-31",
"type": "string"
}
},
{
"name": "end",
"required": true,
"in": "query",
"description": "End date (YYYY-MM-DD)",
"schema": {
"format": "date",
"example": "2026-01-01",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Stats nodes usage fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatsUserUsageResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Nodes Usage by Range",
"tags": [
"Bandwidth Stats Controller"
]
}
},
"/api/infra-billing/providers": {
"get": {
"operationId": "InfraBilling_getInfraProviders",
"parameters": [],
"responses": {
"200": {
"description": "Infra providers retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetInfraProvidersResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all infra providers",
"tags": [
"Infra Billing Controller"
]
},
"post": {
"operationId": "InfraBilling_createInfraProvider",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateInfraProviderRequest"
}
}
}
},
"responses": {
"201": {
"description": "Infra provider created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InfraProviderResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create infra provider",
"tags": [
"Infra Billing Controller"
]
},
"patch": {
"operationId": "InfraBilling_updateInfraProvider",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateInfraProviderRequest"
}
}
}
},
"responses": {
"200": {
"description": "Infra provider updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InfraProviderResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update infra provider",
"tags": [
"Infra Billing Controller"
]
}
},
"/api/infra-billing/providers/{uuid}": {
"get": {
"operationId": "InfraBilling_getInfraProviderByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Infra provider retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InfraProviderResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Infra provider not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get infra provider by uuid",
"tags": [
"Infra Billing Controller"
]
},
"delete": {
"operationId": "InfraBilling_deleteInfraProviderByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Infra provider deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete infra provider by uuid",
"tags": [
"Infra Billing Controller"
]
}
},
"/api/infra-billing/history": {
"post": {
"operationId": "InfraBilling_createInfraBillingHistoryRecord",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateInfraBillingHistoryRecordRequest"
}
}
}
},
"responses": {
"201": {
"description": "Infra billing history record created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BillingHistoryResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create infra billing history",
"tags": [
"Infra Billing Controller"
]
},
"get": {
"operationId": "InfraBilling_getInfraBillingHistoryRecords",
"parameters": [],
"responses": {
"200": {
"description": "Infra billing history records retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BillingHistoryResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get infra billing history",
"tags": [
"Infra Billing Controller"
]
}
},
"/api/infra-billing/history/{uuid}": {
"delete": {
"operationId": "InfraBilling_deleteInfraBillingHistoryRecordByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Infra billing history record deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BillingHistoryResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete infra billing history",
"tags": [
"Infra Billing Controller"
]
}
},
"/api/infra-billing/nodes": {
"get": {
"operationId": "InfraBilling_getBillingNodes",
"parameters": [],
"responses": {
"200": {
"description": "Infra billing nodes retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BillingNodesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get infra billing nodes",
"tags": [
"Infra Billing Controller"
]
},
"patch": {
"operationId": "InfraBilling_updateInfraBillingNode",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateInfraBillingNodeRequest"
}
}
}
},
"responses": {
"200": {
"description": "Infra billing node updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BillingNodesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update infra billing nodes",
"tags": [
"Infra Billing Controller"
]
},
"post": {
"operationId": "InfraBilling_createInfraBillingNode",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateInfraBillingNodeRequest"
}
}
}
},
"responses": {
"201": {
"description": "Infra billing node created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BillingNodesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Create infra billing node",
"tags": [
"Infra Billing Controller"
]
}
},
"/api/infra-billing/nodes/{uuid}": {
"delete": {
"operationId": "InfraBilling_deleteInfraBillingNodeByUuid",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Infra billing node deleted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BillingNodesResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Delete infra billing node",
"tags": [
"Infra Billing Controller"
]
}
},
"/api/subscription-request-history": {
"get": {
"operationId": "UserSubscriptionRequestHistory_getSubscriptionRequestHistory",
"parameters": [
{
"name": "size",
"required": false,
"in": "query",
"description": "Page size for pagination",
"schema": {
"type": "integer"
}
},
{
"name": "start",
"required": false,
"in": "query",
"description": "Offset for pagination",
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Subscription request history fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetSubscriptionRequestHistoryResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get all subscription request history",
"tags": [
"Subscription Request History Controller"
]
}
},
"/api/subscription-request-history/stats": {
"get": {
"operationId": "UserSubscriptionRequestHistory_getSubscriptionRequestHistoryStats",
"parameters": [],
"responses": {
"200": {
"description": "User subscription request history stats fetched successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetSubscriptionRequestHistoryStatsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get subscription request history stats",
"tags": [
"Subscription Request History Controller"
]
}
},
"/api/system/metadata": {
"get": {
"operationId": "System_getMetadata",
"parameters": [],
"responses": {
"200": {
"description": "Returns system metadata",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetMetadataResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Remnawave Information",
"tags": [
"System Controller"
]
}
},
"/api/system/stats": {
"get": {
"operationId": "System_getStats",
"parameters": [],
"responses": {
"200": {
"description": "Returns system statistics",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetStatsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Stats",
"tags": [
"System Controller"
]
}
},
"/api/system/stats/bandwidth": {
"get": {
"operationId": "System_getBandwidthStats",
"parameters": [],
"responses": {
"200": {
"description": "Returns bandwidth statistics",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetBandwidthStatsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Bandwidth Stats",
"tags": [
"System Controller"
]
}
},
"/api/system/stats/nodes": {
"get": {
"operationId": "System_getNodesStatistics",
"parameters": [],
"responses": {
"200": {
"description": "Returns nodes statistics",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetNodesStatisticsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Nodes Statistics",
"tags": [
"System Controller"
]
}
},
"/api/system/health": {
"get": {
"operationId": "System_getRemnawaveHealth",
"parameters": [],
"responses": {
"200": {
"description": "Returns Remnawave health",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetRemnawaveHealthResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Remnawave Health",
"tags": [
"System Controller"
]
}
},
"/api/system/nodes/metrics": {
"get": {
"operationId": "System_getNodesMetrics",
"parameters": [],
"responses": {
"200": {
"description": "Returns nodes metrics from Prometheus metrics endpoint",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetNodesMetricsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Nodes Metrics",
"tags": [
"System Controller"
]
}
},
"/api/system/tools/x25519/generate": {
"get": {
"operationId": "System_getX25519Keypairs",
"parameters": [],
"responses": {
"200": {
"description": "Returns x25519 keypairs",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GenerateX25519Response"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Generate 30 X25519 keypairs",
"tags": [
"System Controller"
]
}
},
"/api/system/tools/happ/encrypt": {
"post": {
"operationId": "System_encryptHappCryptoLink",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EncryptHappCryptoLinkRequest"
}
}
}
},
"responses": {
"200": {
"description": "Returns encrypted Happ crypto link",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EncryptHappCryptoLinkResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Encrypt Happ Crypto Link",
"tags": [
"System Controller"
]
}
},
"/api/system/testers/srr-matcher": {
"post": {
"operationId": "System_debugSrrMatcher",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DebugSrrMatcherRequest"
}
}
}
},
"responses": {
"201": {
"description": "Debug SRR matcher information",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DebugSrrMatcherResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Test SRR Matcher",
"tags": [
"System Controller"
]
}
},
"/api/system/stats/recap": {
"get": {
"operationId": "System_getRecap",
"parameters": [],
"responses": {
"200": {
"description": "Returns system recap",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetRecapResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Recap",
"tags": [
"System Controller"
]
}
},
"/api/subscription-settings": {
"get": {
"operationId": "SubscriptionSettings_getSettings",
"parameters": [],
"responses": {
"200": {
"description": "Subscription settings retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionSettingsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get subscription settings",
"tags": [
"Subscription Settings Controller"
]
},
"patch": {
"operationId": "SubscriptionSettings_updateSettings",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateSubscriptionSettingsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Subscription settings updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionSettingsResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update subscription settings",
"tags": [
"Subscription Settings Controller"
]
}
},
"/api/ip-control/fetch-ips/{uuid}": {
"post": {
"operationId": "IpControl_fetchUserIps",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Return jobId for further processing",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IpsResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Request IP List for User",
"tags": [
"IP Management Controller"
]
}
},
"/api/ip-control/fetch-ips/result/{jobId}": {
"get": {
"operationId": "IpControl_getFetchIpsResult",
"parameters": [
{
"name": "jobId",
"required": true,
"in": "path",
"description": "Job ID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Return result or status of the job",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FetchIpsResultResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Job not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get IP List Result by Job ID",
"tags": [
"IP Management Controller"
]
}
},
"/api/ip-control/drop-connections": {
"post": {
"operationId": "IpControl_dropConnections",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DropConnectionsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Event sent to background executor",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found // Connected nodes not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Drop Connections for Users or IPs",
"tags": [
"IP Management Controller"
]
}
},
"/api/ip-control/fetch-users-ips/{nodeUuid}": {
"post": {
"operationId": "IpControl_fetchUsersIps",
"parameters": [
{
"name": "nodeUuid",
"required": true,
"in": "path",
"description": "UUID of the node",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Return jobId for further processing",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IpsResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Node not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Request Users IPs List for Node",
"tags": [
"IP Management Controller"
]
}
},
"/api/ip-control/fetch-users-ips/result/{jobId}": {
"get": {
"operationId": "IpControl_getFetchUsersIpsResult",
"parameters": [
{
"name": "jobId",
"required": true,
"in": "path",
"description": "Job ID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Return result or status of the job",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FetchUsersIpsResultResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Job not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get Users IPs List Result by Job ID",
"tags": [
"IP Management Controller"
]
}
},
"/api/metadata/user/{uuid}": {
"get": {
"operationId": "Metadata_getUserMetadata",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User Metadata retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserMetadataResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User or Metadata not found (see errorCode for more details)",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get user metadata",
"tags": [
"Metadata Controller"
]
},
"put": {
"operationId": "Metadata_upsertUserMetadata",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the user",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpsertUserMetadataRequestBodyRequest"
}
}
}
},
"responses": {
"200": {
"description": "User Metadata upserted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserMetadataResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "User not found (see errorCode for more details)",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update or create User Metadata",
"tags": [
"Metadata Controller"
]
}
},
"/api/metadata/node/{uuid}": {
"get": {
"operationId": "Metadata_getNodeMetadata",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the node",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Node Metadata retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserMetadataResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Node or Metadata not found (see errorCode for more details)",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Get node metadata",
"tags": [
"Metadata Controller"
]
},
"put": {
"operationId": "Metadata_upsertNodeMetadata",
"parameters": [
{
"name": "uuid",
"required": true,
"in": "path",
"description": "UUID of the node",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpsertUserMetadataRequestBodyRequest"
}
}
}
},
"responses": {
"200": {
"description": "Node Metadata upserted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserMetadataResponseResponse"
}
}
}
},
"400": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
},
"404": {
"description": "Node not found (see errorCode for more details)",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NotFoundError"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InternalServerError"
}
}
}
}
},
"security": [
{
"Authorization": []
}
],
"summary": "Update or create Node Metadata",
"tags": [
"Metadata Controller"
]
}
}
},
"info": {
"title": "Remnawave API v2.7.4",
"description": "\nRemnawave is a powerful proxy managment tool, built on top of Xray-core, with a focus on simplicity and ease of use.\n\n## Resources\n* https://t.me/remnawave\n* https://github.com/remnawave\n* https://docs.rw\n",
"version": "2.7.4",
"contact": {},
"license": {
"name": "AGPL-3.0",
"url": "https://github.com/remnawave/panel?tab=AGPL-3.0-1-ov-file"
}
},
"tags": [
{
"name": "Auth Controller",
"description": "Used to authenticate admin users."
},
{
"name": "Passkeys Controller",
"description": "Management of Passkeys."
},
{
"name": "API Tokens Controller",
"description": "Manage API tokens to use in your code. This controller can't be used with API token, only with Admin JWT token"
},
{
"name": "Users Controller",
"description": "Manage users, change their status, reset traffic, etc."
},
{
"name": "Users Bulk Actions Controller",
"description": "Bulk actions with users."
},
{
"name": "HWID User Devices Controller",
"description": ""
},
{
"name": "[Public] Subscription Controller",
"description": "Public Subscription Controller. Methods of this controller are not protected with auth. Use it only for public requests."
},
{
"name": "[Protected] Subscriptions Controller",
"description": "Methods of this controller are protected with auth, most of them is returning the same informations as public Subscription Controller."
},
{
"name": "Nodes Controller",
"description": ""
},
{
"name": "Node Plugins Controller",
"description": ""
},
{
"name": "Bandwidth Stats Controller",
"description": ""
},
{
"name": "IP Management Controller",
"description": "Management of IP addresses and connections."
},
{
"name": "Config Profiles Controller",
"description": "Management of Config Profiles."
},
{
"name": "Internal Squads Controller",
"description": "Management of Internal Squads."
},
{
"name": "External Squads Controller",
"description": "Management of External Squads."
},
{
"name": "Hosts Controller",
"description": ""
},
{
"name": "Hosts Bulk Actions Controller",
"description": ""
},
{
"name": "Subscription Template Controller",
"description": ""
},
{
"name": "Subscription Settings Controller",
"description": ""
},
{
"name": "Infra Billing Controller",
"description": ""
},
{
"name": "System Controller",
"description": ""
},
{
"name": "Keygen Controller",
"description": "Generation of SECRET_KEY for Remnawave Node."
},
{
"name": "Subscription Request History Controller",
"description": ""
},
{
"name": "Snippets Controller",
"description": ""
},
{
"name": "Remnawave Settings Controller",
"description": ""
},
{
"name": "Subscription Page Configs Controller",
"description": ""
},
{
"name": "Metadata Controller",
"description": "Manage arbitrary metadata for Users and Nodes."
}
],
"servers": [],
"components": {
"securitySchemes": {
"Authorization": {
"scheme": "bearer",
"bearerFormat": "JWT",
"type": "http",
"name": "Authorization",
"description": "JWT obtained login."
},
"Prometheus": {
"type": "http",
"scheme": "basic",
"name": "Prometheus",
"description": "Prometheus Basic Auth"
}
},
"schemas": {
"SettingsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"passkeySettings": {
"$ref": "#/components/schemas/PasskeySettings"
},
"oauth2Settings": {
"$ref": "#/components/schemas/Oauth2Settings"
},
"passwordSettings": {
"$ref": "#/components/schemas/PasswordSettings"
},
"brandingSettings": {
"$ref": "#/components/schemas/BrandingSettings"
}
},
"required": [
"passkeySettings",
"oauth2Settings",
"passwordSettings",
"brandingSettings"
]
}
},
"required": [
"response"
]
},
"UpdateRemnawaveSettingsRequest": {
"type": "object",
"properties": {
"passkeySettings": {
"$ref": "#/components/schemas/PasskeySettings"
},
"oauth2Settings": {
"$ref": "#/components/schemas/Oauth2Settings"
},
"passwordSettings": {
"$ref": "#/components/schemas/PasswordSettings"
},
"brandingSettings": {
"$ref": "#/components/schemas/BrandingSettings"
}
}
},
"PasskeyOptions": {
"type": "object",
"properties": {
"response": {}
},
"required": [
"response"
]
},
"VerifyPasskeyRegistrationResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"verified": {
"type": "boolean"
}
},
"required": [
"verified"
]
}
},
"required": [
"response"
]
},
"PasskeysResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"passkeys": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"createdAt": {
"description": "Created date. Format: 2025-01-17T15:38:45.065Z",
"type": "string",
"format": "date-time"
},
"lastUsedAt": {
"description": "Last used date. Format: 2025-01-17T15:38:45.065Z",
"type": "string",
"format": "date-time"
}
},
"required": [
"id",
"name",
"createdAt",
"lastUsedAt"
]
}
}
},
"required": [
"passkeys"
]
}
},
"required": [
"response"
]
},
"DeletePasskeyRequest": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
]
},
"UpdatePasskeyRequest": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30,
"pattern": "^[A-Za-z0-9_\\s-]+$"
}
},
"required": [
"id",
"name"
]
},
"LoginRequest": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string"
}
},
"required": [
"username",
"password"
]
},
"TokenResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"accessToken": {
"type": "string"
}
},
"required": [
"accessToken"
]
}
},
"required": [
"response"
]
},
"RegisterRequest": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string",
"minLength": 24,
"pattern": "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{24,}$"
}
},
"required": [
"username",
"password"
]
},
"GetStatusResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"isLoginAllowed": {
"type": "boolean"
},
"isRegisterAllowed": {
"type": "boolean"
},
"authentication": {
"type": "object",
"properties": {
"passkey": {
"$ref": "#/components/schemas/PasswordSettings"
},
"oauth2": {
"type": "object",
"properties": {
"providers": {
"type": "object",
"additionalProperties": {
"type": "boolean"
}
}
},
"required": [
"providers"
]
},
"password": {
"$ref": "#/components/schemas/PasswordSettings"
}
},
"required": [
"passkey",
"oauth2",
"password"
],
"nullable": true
},
"branding": {
"type": "object",
"properties": {
"title": {
"type": "string",
"nullable": true
},
"logoUrl": {
"type": "string",
"nullable": true
}
},
"required": [
"title",
"logoUrl"
]
}
},
"required": [
"isLoginAllowed",
"isRegisterAllowed",
"authentication",
"branding"
]
}
},
"required": [
"response"
]
},
"OAuth2AuthorizeRequest": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
"telegram",
"github",
"pocketid",
"yandex",
"keycloak",
"generic"
],
"x-enumNames": [
"TELEGRAM",
"GITHUB",
"POCKETID",
"YANDEX",
"KEYCLOAK",
"GENERIC"
]
}
},
"required": [
"provider"
]
},
"OAuth2AuthorizeResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"authorizationUrl": {
"type": "string",
"format": "uri",
"nullable": true
}
},
"required": [
"authorizationUrl"
]
}
},
"required": [
"response"
]
},
"OAuth2CallbackRequest": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
"telegram",
"github",
"pocketid",
"yandex",
"keycloak",
"generic"
],
"x-enumNames": [
"TELEGRAM",
"GITHUB",
"POCKETID",
"YANDEX",
"KEYCLOAK",
"GENERIC"
]
},
"code": {
"type": "string"
},
"state": {
"type": "string"
}
},
"required": [
"provider",
"code",
"state"
]
},
"SubscriptionPageConfigsResponseResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"configs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Config"
}
}
},
"required": [
"total",
"configs"
]
}
},
"required": [
"response"
]
},
"SubscriptionPageConfigResponseResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"viewPosition": {
"type": "integer"
},
"name": {
"type": "string"
},
"config": {}
},
"required": [
"uuid",
"viewPosition",
"name",
"config"
]
}
},
"required": [
"response"
]
},
"UpdateSubscriptionPageConfigRequest": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30,
"pattern": "^[A-Za-z0-9_\\s-]+$"
},
"config": {}
},
"required": [
"uuid"
]
},
"DeleteResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"isDeleted": {
"type": "boolean"
}
},
"required": [
"isDeleted"
]
}
},
"required": [
"response"
]
},
"CreateSubscriptionPageConfigRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30,
"pattern": "^[A-Za-z0-9_\\s-]+$"
}
},
"required": [
"name"
]
},
"CreateSubscriptionPageConfigResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/Config"
}
},
"required": [
"response"
]
},
"ReorderRequest": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ReorderRequestItem"
}
}
},
"required": [
"items"
]
},
"CloneNodePluginRequestRequest": {
"type": "object",
"properties": {
"cloneFromUuid": {
"type": "string",
"format": "uuid"
}
},
"required": [
"cloneFromUuid"
]
},
"CreateUserRequest": {
"type": "object",
"properties": {
"username": {
"description": "Unique username for the user. Required. Must be 3-36 characters long and contain only letters, numbers, underscores and dashes.",
"type": "string",
"pattern": "^[a-zA-Z0-9_-]+$",
"maxLength": 36,
"minLength": 3
},
"status": {
"description": "Optional. User account status. Defaults to ACTIVE.",
"type": "string",
"enum": [
"ACTIVE",
"DISABLED",
"LIMITED",
"EXPIRED"
],
"x-enumNames": [
"ACTIVE",
"DISABLED",
"LIMITED",
"EXPIRED"
],
"default": "ACTIVE"
},
"shortUuid": {
"description": "Optional. Short UUID identifier for the user.",
"type": "string"
},
"trojanPassword": {
"description": "Optional. Password for Trojan protocol. Must be 8-32 characters.",
"type": "string",
"minLength": 8,
"maxLength": 32
},
"vlessUuid": {
"description": "Optional. UUID for VLESS protocol. Must be a valid UUID format.",
"type": "string",
"format": "uuid"
},
"ssPassword": {
"description": "Optional. Password for Shadowsocks protocol. Must be 8-32 characters.",
"type": "string",
"minLength": 8,
"maxLength": 32
},
"trafficLimitBytes": {
"description": "Optional. Traffic limit in bytes. Set to 0 for unlimited traffic.",
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false
},
"trafficLimitStrategy": {
"description": "Available reset periods",
"type": "string",
"enum": [
"NO_RESET",
"DAY",
"WEEK",
"MONTH",
"MONTH_ROLLING"
],
"x-enumNames": [
"NO_RESET",
"DAY",
"WEEK",
"MONTH",
"MONTH_ROLLING"
],
"default": "NO_RESET"
},
"expireAt": {
"description": "Account expiration date. Required. Format: 2025-01-17T15:38:45.065Z",
"type": "string",
"format": "date-time"
},
"createdAt": {
"description": "Optional. Account creation date. Format: 2025-01-17T15:38:45.065Z",
"type": "string",
"format": "date-time"
},
"lastTrafficResetAt": {
"description": "Optional. Date of last traffic reset. Format: 2025-01-17T15:38:45.065Z",
"type": "string",
"format": "date-time"
},
"description": {
"description": "Optional. Additional notes or description for the user account.",
"type": "string"
},
"tag": {
"description": "Optional. User tag for categorization. Max 16 characters, uppercase letters, numbers and underscores only.",
"type": "string",
"pattern": "^[A-Z0-9_]+$",
"maxLength": 16,
"nullable": true
},
"telegramId": {
"description": "Optional. Telegram user ID for notifications. Must be an integer.",
"type": "integer",
"nullable": true
},
"email": {
"description": "Optional. User email address. Must be a valid email format.",
"type": "string",
"format": "email",
"nullable": true
},
"hwidDeviceLimit": {
"description": "Optional. Maximum number of hardware devices allowed. Must be a positive integer.",
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false
},
"activeInternalSquads": {
"description": "Optional. Array of UUIDs representing enabled internal squads.",
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"uuid": {
"description": "Optional. Pass UUID to create user with specific UUID, otherwise it will be generated automatically.",
"type": "string",
"format": "uuid"
},
"externalSquadUuid": {
"description": "Optional. External squad UUID.",
"type": "string",
"format": "uuid",
"nullable": true
}
},
"required": [
"username",
"expireAt"
]
},
"UserResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/UserItemInfo"
}
},
"required": [
"response"
]
},
"UpdateUserRequest": {
"type": "object",
"properties": {
"username": {
"description": "Username of the user",
"type": "string"
},
"uuid": {
"description": "UUID of the user. UUID has higher priority than username, so if both are provided, username will be ignored.",
"type": "string",
"format": "uuid"
},
"status": {
"type": "string",
"enum": [
"ACTIVE",
"DISABLED"
]
},
"trafficLimitBytes": {
"description": "Traffic limit in bytes. 0 - unlimited",
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false
},
"trafficLimitStrategy": {
"description": "Available reset periods",
"type": "string",
"enum": [
"NO_RESET",
"DAY",
"WEEK",
"MONTH",
"MONTH_ROLLING"
],
"x-enumNames": [
"NO_RESET",
"DAY",
"WEEK",
"MONTH",
"MONTH_ROLLING"
],
"default": "NO_RESET"
},
"expireAt": {
"description": "Expiration date: 2025-01-17T15:38:45.065Z",
"type": "string",
"format": "date-time"
},
"description": {
"type": "string",
"nullable": true
},
"tag": {
"type": "string",
"pattern": "^[A-Z0-9_]+$",
"maxLength": 16,
"nullable": true
},
"telegramId": {
"type": "integer",
"nullable": true
},
"email": {
"type": "string",
"format": "email",
"nullable": true
},
"hwidDeviceLimit": {
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false,
"nullable": true
},
"activeInternalSquads": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"externalSquadUuid": {
"description": "Optional. External squad UUID.",
"type": "string",
"format": "uuid",
"nullable": true
}
}
},
"GetAllUsersResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UserItemInfo"
}
},
"total": {
"type": "number"
}
},
"required": [
"users",
"total"
]
}
},
"required": [
"response"
]
},
"TagsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"tags"
]
}
},
"required": [
"response"
]
},
"GetUserAccessibleNodesResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"userUuid": {
"type": "string",
"format": "uuid"
},
"activeNodes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"nodeName": {
"type": "string"
},
"countryCode": {
"type": "string"
},
"configProfileUuid": {
"type": "string",
"format": "uuid"
},
"configProfileName": {
"type": "string"
},
"activeSquads": {
"type": "array",
"items": {
"type": "object",
"properties": {
"squadName": {
"type": "string"
},
"activeInbounds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"squadName",
"activeInbounds"
]
}
}
},
"required": [
"uuid",
"nodeName",
"countryCode",
"configProfileUuid",
"configProfileName",
"activeSquads"
]
}
}
},
"required": [
"userUuid",
"activeNodes"
]
}
},
"required": [
"response"
]
},
"GetUserSubscriptionRequestHistoryResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/UserSubscriptionHistory"
}
},
"required": [
"response"
]
},
"UsersResponse": {
"type": "object",
"properties": {
"response": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UserItemInfo"
}
}
},
"required": [
"response"
]
},
"RevokeUserSubscriptionBody": {
"type": "object",
"properties": {
"revokeOnlyPasswords": {
"description": "Optional. If true, only passwords will be revoked, without changing the short UUID (Subscription URL).",
"type": "boolean",
"default": false
},
"shortUuid": {
"description": "Optional. If not provided, a new short UUID will be generated by Remnawave. Please note that it is strongly recommended to allow Remnawave to generate the short UUID.",
"type": "string",
"minLength": 6,
"maxLength": 48
}
}
},
"ResolveUserRequestBody": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"id": {
"type": "number"
},
"shortUuid": {
"type": "string"
},
"username": {
"type": "string"
}
}
},
"ResolveUserResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"username": {
"type": "string"
},
"id": {
"type": "number"
},
"shortUuid": {
"type": "string"
}
},
"required": [
"uuid",
"username",
"id",
"shortUuid"
]
}
},
"required": [
"response"
]
},
"BulkDeleteUsersByStatusRequest": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"ACTIVE",
"DISABLED",
"LIMITED",
"EXPIRED"
],
"x-enumNames": [
"ACTIVE",
"DISABLED",
"LIMITED",
"EXPIRED"
],
"default": "ACTIVE"
}
}
},
"BulkActionResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"affectedRows": {
"type": "number"
}
},
"required": [
"affectedRows"
]
}
},
"required": [
"response"
]
},
"BulkUuidsRequest": {
"type": "object",
"properties": {
"uuids": {
"type": "array",
"minItems": 1,
"maxItems": 500,
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"uuids"
]
},
"BulkUpdateUsersRequest": {
"type": "object",
"properties": {
"uuids": {
"type": "array",
"minItems": 1,
"maxItems": 500,
"items": {
"type": "string",
"format": "uuid"
}
},
"fields": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"ACTIVE",
"DISABLED",
"LIMITED",
"EXPIRED"
],
"x-enumNames": [
"ACTIVE",
"DISABLED",
"LIMITED",
"EXPIRED"
],
"default": "ACTIVE"
},
"trafficLimitBytes": {
"description": "Traffic limit in bytes. 0 - unlimited",
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false
},
"trafficLimitStrategy": {
"description": "Traffic limit reset strategy",
"type": "string",
"enum": [
"NO_RESET",
"DAY",
"WEEK",
"MONTH",
"MONTH_ROLLING"
],
"x-enumNames": [
"NO_RESET",
"DAY",
"WEEK",
"MONTH",
"MONTH_ROLLING"
]
},
"expireAt": {
"description": "Expiration date: 2025-01-17T15:38:45.065Z",
"type": "string",
"format": "date-time"
},
"description": {
"type": "string",
"nullable": true
},
"telegramId": {
"type": "integer",
"nullable": true
},
"email": {
"type": "string",
"format": "email",
"nullable": true
},
"tag": {
"type": "string",
"pattern": "^[A-Z0-9_]+$",
"maxLength": 16,
"nullable": true
},
"hwidDeviceLimit": {
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false,
"nullable": true
},
"externalSquadUuid": {
"description": "Optional. External squad UUID.",
"type": "string",
"format": "uuid",
"nullable": true
}
}
}
},
"required": [
"uuids",
"fields"
]
},
"BulkUpdateUsersSquadsRequest": {
"type": "object",
"properties": {
"uuids": {
"type": "array",
"minItems": 1,
"maxItems": 500,
"items": {
"type": "string",
"format": "uuid"
}
},
"activeInternalSquads": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"uuids",
"activeInternalSquads"
]
},
"BulkExtendExpirationDateRequest": {
"type": "object",
"properties": {
"uuids": {
"type": "array",
"minItems": 1,
"maxItems": 500,
"items": {
"type": "string",
"format": "uuid"
}
},
"extendDays": {
"type": "integer",
"minimum": 1,
"exclusiveMinimum": false,
"maximum": 9999,
"exclusiveMaximum": false
}
},
"required": [
"uuids",
"extendDays"
]
},
"BulkAllUpdateUsersRequest": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"ACTIVE",
"DISABLED",
"LIMITED",
"EXPIRED"
],
"x-enumNames": [
"ACTIVE",
"DISABLED",
"LIMITED",
"EXPIRED"
],
"default": "ACTIVE"
},
"trafficLimitBytes": {
"description": "Traffic limit in bytes. 0 - unlimited",
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false
},
"trafficLimitStrategy": {
"description": "Traffic limit reset strategy",
"type": "string",
"enum": [
"NO_RESET",
"DAY",
"WEEK",
"MONTH",
"MONTH_ROLLING"
],
"x-enumNames": [
"NO_RESET",
"DAY",
"WEEK",
"MONTH",
"MONTH_ROLLING"
]
},
"expireAt": {
"description": "Expiration date: 2025-01-17T15:38:45.065Z",
"type": "string",
"format": "date-time"
},
"description": {
"type": "string",
"nullable": true
},
"telegramId": {
"type": "integer",
"nullable": true
},
"email": {
"type": "string",
"format": "email",
"nullable": true
},
"tag": {
"type": "string",
"pattern": "^[A-Z0-9_]+$",
"maxLength": 16,
"nullable": true
},
"hwidDeviceLimit": {
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false,
"nullable": true
}
}
},
"EventResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"eventSent": {
"type": "boolean"
}
},
"required": [
"eventSent"
]
}
},
"required": [
"response"
]
},
"BulkAllExtendExpirationDateRequest": {
"type": "object",
"properties": {
"extendDays": {
"type": "integer",
"minimum": 1,
"exclusiveMinimum": false
}
},
"required": [
"extendDays"
]
},
"SubscriptionResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/Subscription"
}
},
"required": [
"response"
]
},
"GetAllSubscriptionsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"subscriptions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Subscription"
}
},
"total": {
"type": "number"
}
},
"required": [
"subscriptions",
"total"
]
}
},
"required": [
"response"
]
},
"GetRawSubscriptionByShortUuidResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/UserItemInfo"
},
"convertedUserInfo": {
"type": "object",
"properties": {
"daysLeft": {
"type": "number"
},
"trafficLimit": {
"type": "string"
},
"trafficUsed": {
"type": "string"
},
"lifetimeTrafficUsed": {
"type": "string"
},
"isHwidLimited": {
"type": "boolean"
}
},
"required": [
"daysLeft",
"trafficLimit",
"trafficUsed",
"lifetimeTrafficUsed",
"isHwidLimited"
]
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"resolvedProxyConfigs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"finalRemark": {
"type": "string"
},
"address": {
"type": "string"
},
"port": {
"type": "integer",
"minimum": 0,
"exclusiveMinimum": true
},
"protocol": {
"type": "string",
"enum": [
"vless",
"trojan",
"shadowsocks",
"hysteria"
]
},
"protocolOptions": {
"oneOf": [
{
"type": "object",
"properties": {
"encryption": {
"type": "string"
},
"id": {
"type": "string"
},
"flow": {
"type": "string",
"enum": [
"",
"xtls-rprx-vision",
"xtls-rprx-vision-udp443"
]
}
},
"required": [
"encryption",
"id",
"flow"
]
},
{
"type": "object",
"properties": {
"password": {
"type": "string"
}
},
"required": [
"password"
]
},
{
"type": "object",
"properties": {
"method": {
"type": "string"
},
"password": {
"type": "string"
},
"uot": {
"type": "boolean"
},
"uotVersion": {
"type": "integer"
}
},
"required": [
"method",
"password",
"uot",
"uotVersion"
]
},
{
"type": "object",
"properties": {
"version": {
"type": "integer"
}
},
"required": [
"version"
]
}
]
},
"transport": {
"type": "string",
"enum": [
"tcp",
"xhttp",
"ws",
"httpupgrade",
"grpc",
"kcp",
"hysteria"
]
},
"transportOptions": {
"oneOf": [
{
"type": "object",
"properties": {
"header": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"none"
]
}
},
"required": [
"type"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"http"
]
},
"request": {
"type": "object",
"properties": {
"version": {
"type": "string"
},
"method": {
"type": "string"
},
"path": {
"type": "array",
"items": {
"type": "string"
}
},
"headers": {
"type": "object",
"additionalProperties": {}
}
}
},
"response": {
"type": "object",
"properties": {
"version": {
"type": "string"
},
"status": {
"type": "string"
},
"reason": {
"type": "string"
},
"headers": {
"type": "object",
"additionalProperties": {}
}
}
}
},
"required": [
"type"
]
}
],
"nullable": true
}
},
"required": [
"header"
]
},
{
"type": "object",
"properties": {
"path": {
"type": "string",
"nullable": true
},
"host": {
"type": "string",
"nullable": true
},
"mode": {
"type": "string",
"enum": [
"auto",
"packet-up",
"stream-up",
"stream-one"
]
},
"extra": {
"additionalProperties": {},
"nullable": true
}
},
"required": [
"path",
"host",
"mode",
"extra"
]
},
{
"type": "object",
"properties": {
"path": {
"type": "string",
"nullable": true
},
"host": {
"type": "string",
"nullable": true
},
"headers": {
"additionalProperties": {
"type": "string"
},
"nullable": true
},
"heartbeatPeriod": {
"type": "number",
"nullable": true
}
},
"required": [
"path",
"host",
"headers",
"heartbeatPeriod"
]
},
{
"type": "object",
"properties": {
"path": {
"type": "string",
"nullable": true
},
"host": {
"type": "string",
"nullable": true
},
"headers": {
"additionalProperties": {
"type": "string"
},
"nullable": true
}
},
"required": [
"path",
"host",
"headers"
]
},
{
"type": "object",
"properties": {
"authority": {
"type": "string",
"nullable": true
},
"serviceName": {
"type": "string",
"nullable": true
},
"multiMode": {
"type": "boolean"
}
},
"required": [
"authority",
"serviceName",
"multiMode"
]
},
{
"type": "object",
"properties": {
"clientMtu": {
"type": "integer"
},
"tti": {
"type": "integer"
},
"congestion": {
"type": "boolean"
}
},
"required": [
"clientMtu",
"tti",
"congestion"
]
},
{
"type": "object",
"properties": {
"version": {
"type": "integer"
},
"auth": {
"type": "string"
}
},
"required": [
"version",
"auth"
]
}
]
},
"security": {
"type": "string",
"enum": [
"tls",
"reality",
"none"
]
},
"securityOptions": {
"oneOf": [
{
"type": "object",
"properties": {
"allowInsecure": {
"type": "boolean"
},
"alpn": {
"type": "string",
"nullable": true
},
"enableSessionResumption": {
"type": "boolean"
},
"fingerprint": {
"type": "string",
"nullable": true
},
"serverName": {
"type": "string",
"nullable": true
},
"echConfigList": {
"type": "string",
"nullable": true
},
"echForceQuery": {
"type": "string",
"nullable": true
}
},
"required": [
"allowInsecure",
"alpn",
"enableSessionResumption",
"fingerprint",
"serverName",
"echConfigList",
"echForceQuery"
]
},
{
"type": "object",
"properties": {
"fingerprint": {
"type": "string"
},
"publicKey": {
"type": "string"
},
"shortId": {
"type": "string",
"nullable": true
},
"serverName": {
"type": "string"
},
"spiderX": {
"type": "string",
"nullable": true
},
"mldsa65Verify": {
"type": "string",
"nullable": true
}
},
"required": [
"fingerprint",
"publicKey",
"shortId",
"serverName",
"spiderX",
"mldsa65Verify"
]
}
]
},
"streamOverrides": {
"type": "object",
"properties": {
"finalMask": {
"nullable": true
},
"sockopt": {
"nullable": true
}
},
"required": [
"finalMask",
"sockopt"
]
},
"mux": {
"nullable": true
},
"clientOverrides": {
"type": "object",
"properties": {
"shuffleHost": {
"type": "boolean"
},
"mihomoX25519": {
"type": "boolean"
},
"serverDescription": {
"type": "string",
"nullable": true
},
"xrayJsonTemplate": {
"nullable": true
}
},
"required": [
"shuffleHost",
"mihomoX25519",
"serverDescription",
"xrayJsonTemplate"
]
},
"metadata": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"tag": {
"type": "string",
"nullable": true
},
"excludeFromSubscriptionTypes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
],
"x-enumNames": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
]
}
},
"inboundTag": {
"type": "string"
},
"configProfileUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"configProfileInboundUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"isDisabled": {
"type": "boolean"
},
"isHidden": {
"type": "boolean"
},
"viewPosition": {
"type": "integer"
},
"remark": {
"type": "string"
},
"vlessRouteId": {
"type": "integer",
"nullable": true
},
"rawInbound": {
"nullable": true
}
},
"required": [
"uuid",
"tag",
"excludeFromSubscriptionTypes",
"inboundTag",
"configProfileUuid",
"configProfileInboundUuid",
"isDisabled",
"isHidden",
"viewPosition",
"remark",
"vlessRouteId",
"rawInbound"
]
}
},
"required": [
"finalRemark",
"address",
"port",
"protocol",
"protocolOptions",
"transport",
"transportOptions",
"security",
"streamOverrides",
"mux",
"clientOverrides",
"metadata"
]
}
}
},
"required": [
"user",
"convertedUserInfo",
"headers",
"resolvedProxyConfigs"
]
}
},
"required": [
"response"
]
},
"GetSubpageConfigByShortUuidRequestBody": {
"type": "object",
"properties": {
"requestHeaders": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"requestHeaders"
]
},
"GetSubpageConfigByShortUuidResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"subpageConfigUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"webpageAllowed": {
"type": "boolean"
}
},
"required": [
"subpageConfigUuid",
"webpageAllowed"
]
}
},
"required": [
"response"
]
},
"GetConnectionKeysByUuidResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"enabledKeys": {
"type": "array",
"items": {
"type": "string"
}
},
"hiddenKeys": {
"type": "array",
"items": {
"type": "string"
}
},
"disabledKeys": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"enabledKeys",
"hiddenKeys",
"disabledKeys"
]
}
},
"required": [
"response"
]
},
"TemplatesResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"templates": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Template"
}
}
},
"required": [
"total",
"templates"
]
}
},
"required": [
"response"
]
},
"TemplateResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/Template"
}
},
"required": [
"response"
]
},
"UpdateTemplateRequest": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 255,
"pattern": "^[A-Za-z0-9_\\s-]+$"
},
"templateJson": {
"type": "object",
"properties": {}
},
"encodedTemplateYaml": {
"type": "string"
}
},
"required": [
"uuid"
]
},
"CreateSubscriptionTemplateRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 255,
"pattern": "^[A-Za-z0-9_\\s-]+$"
},
"templateType": {
"type": "string",
"enum": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
],
"x-enumNames": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
]
}
},
"required": [
"name",
"templateType"
]
},
"CreateApiTokenRequest": {
"type": "object",
"properties": {
"tokenName": {
"type": "string"
}
},
"required": [
"tokenName"
]
},
"CreateApiTokenResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"token": {
"type": "string"
},
"uuid": {
"type": "string"
}
},
"required": [
"token",
"uuid"
]
}
},
"required": [
"response"
]
},
"DeleteApiTokenResponse": {
"type": "object",
"properties": {
"response": {
"type": "boolean"
}
},
"required": [
"response"
]
},
"FindAllApiTokensResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"apiKeys": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"token": {
"type": "string"
},
"tokenName": {
"type": "string"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"uuid",
"token",
"tokenName",
"createdAt",
"updatedAt"
]
}
},
"docs": {
"type": "object",
"properties": {
"isDocsEnabled": {
"type": "boolean"
},
"scalarPath": {
"type": "string",
"nullable": true
},
"swaggerPath": {
"type": "string",
"nullable": true
}
},
"required": [
"isDocsEnabled",
"scalarPath",
"swaggerPath"
]
}
},
"required": [
"apiKeys",
"docs"
]
}
},
"required": [
"response"
]
},
"ConfigProfilesResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"configProfiles": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ConfigProfile"
}
}
},
"required": [
"total",
"configProfiles"
]
}
},
"required": [
"response"
]
},
"InboundsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"inbounds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"profileUuid": {
"type": "string",
"format": "uuid"
},
"tag": {
"type": "string"
},
"type": {
"type": "string"
},
"network": {
"type": "string",
"nullable": true
},
"security": {
"type": "string",
"nullable": true
},
"port": {
"type": "number",
"nullable": true
},
"rawInbound": {
"nullable": true
},
"activeSquads": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"uuid",
"profileUuid",
"tag",
"type",
"network",
"security",
"port",
"rawInbound",
"activeSquads"
]
}
}
},
"required": [
"total",
"inbounds"
]
}
},
"required": [
"response"
]
},
"ConfigProfileResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/ConfigProfile"
}
},
"required": [
"response"
]
},
"CreateConfigProfileRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30,
"pattern": "^[A-Za-z0-9_\\s-]+$"
},
"config": {
"type": "object",
"properties": {}
}
},
"required": [
"name",
"config"
]
},
"UpdateConfigProfileRequest": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30,
"pattern": "^[A-Za-z0-9_\\s-]+$"
},
"config": {
"type": "object",
"properties": {}
}
},
"required": [
"uuid"
]
},
"SnippetsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"snippets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"snippet": {}
},
"required": [
"name",
"snippet"
]
}
}
},
"required": [
"total",
"snippets"
]
}
},
"required": [
"response"
]
},
"DeleteSnippetRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 255,
"pattern": "^[A-Za-z0-9_\\s-]+$"
}
},
"required": [
"name"
]
},
"SnippetRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 255,
"pattern": "^[A-Za-z0-9_\\s-]+$"
},
"snippet": {
"type": "array",
"items": {
"type": "object",
"properties": {}
}
}
},
"required": [
"name",
"snippet"
]
},
"InternalSquadsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"internalSquads": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InternalSquad"
}
}
},
"required": [
"total",
"internalSquads"
]
}
},
"required": [
"response"
]
},
"InternalSquadResponseResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/InternalSquad"
}
},
"required": [
"response"
]
},
"CreateInternalSquadRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30,
"pattern": "^[A-Za-z0-9_\\s-]+$"
},
"inbounds": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"name",
"inbounds"
]
},
"GetInternalSquadAccessibleNodesResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"squadUuid": {
"type": "string",
"format": "uuid"
},
"accessibleNodes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"nodeName": {
"type": "string"
},
"countryCode": {
"type": "string"
},
"configProfileUuid": {
"type": "string",
"format": "uuid"
},
"configProfileName": {
"type": "string"
},
"activeInbounds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"uuid",
"nodeName",
"countryCode",
"configProfileUuid",
"configProfileName",
"activeInbounds"
]
}
}
},
"required": [
"squadUuid",
"accessibleNodes"
]
}
},
"required": [
"response"
]
},
"UpdateInternalSquadRequest": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30,
"pattern": "^[A-Za-z0-9_\\s-]+$"
},
"inbounds": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"uuid"
]
},
"ExternalSquadsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"externalSquads": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ExternalSquad"
}
}
},
"required": [
"total",
"externalSquads"
]
}
},
"required": [
"response"
]
},
"ExternalSquadResponseResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/ExternalSquad"
}
},
"required": [
"response"
]
},
"CreateExternalSquadRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30,
"pattern": "^[A-Za-z0-9_\\s-]+$"
}
},
"required": [
"name"
]
},
"UpdateExternalSquadRequest": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30,
"pattern": "^[A-Za-z0-9_\\s-]+$"
},
"templates": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TemplateRef"
}
},
"subscriptionSettings": {
"$ref": "#/components/schemas/SubscriptionSettings"
},
"hostOverrides": {
"$ref": "#/components/schemas/HostOverride"
},
"responseHeaders": {
"additionalProperties": {
"type": "string"
},
"nullable": true
},
"hwidSettings": {
"$ref": "#/components/schemas/HwidSettings"
},
"customRemarks": {
"$ref": "#/components/schemas/CustomRemark"
},
"subpageConfigUuid": {
"type": "string",
"format": "uuid",
"nullable": true
}
},
"required": [
"uuid"
]
},
"GetPubKeyResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"pubKey": {
"type": "string"
}
},
"required": [
"pubKey"
]
}
},
"required": [
"response"
]
},
"CreateNodeRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 3,
"maxLength": 30
},
"address": {
"type": "string",
"minLength": 2
},
"port": {
"type": "integer",
"minimum": 1,
"exclusiveMinimum": false,
"maximum": 65535,
"exclusiveMaximum": false
},
"isTrafficTrackingActive": {
"type": "boolean",
"default": false
},
"trafficLimitBytes": {
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false
},
"notifyPercent": {
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false,
"maximum": 100,
"exclusiveMaximum": false
},
"trafficResetDay": {
"type": "integer",
"minimum": 1,
"exclusiveMinimum": false,
"maximum": 31,
"exclusiveMaximum": false
},
"countryCode": {
"type": "string",
"maxLength": 2,
"default": "XX"
},
"consumptionMultiplier": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": false,
"maximum": 100,
"exclusiveMaximum": false
},
"configProfile": {
"$ref": "#/components/schemas/ConfigProfileRef"
},
"providerUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"tags": {
"type": "array",
"maxItems": 10,
"items": {
"type": "string",
"pattern": "^[A-Z0-9_:]+$",
"maxLength": 36
}
},
"activePluginUuid": {
"type": "string",
"format": "uuid",
"nullable": true
}
},
"required": [
"name",
"address",
"configProfile"
]
},
"NodeResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/NodeResponseDataItem"
}
},
"required": [
"response"
]
},
"NodesResponse": {
"type": "object",
"properties": {
"response": {
"type": "array",
"items": {
"$ref": "#/components/schemas/NodeResponseDataItem"
}
}
},
"required": [
"response"
]
},
"UpdateNodeRequest": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 3,
"maxLength": 30
},
"address": {
"type": "string",
"minLength": 2
},
"port": {
"type": "number",
"minimum": 1,
"exclusiveMinimum": false,
"maximum": 65535,
"exclusiveMaximum": false
},
"isTrafficTrackingActive": {
"type": "boolean"
},
"trafficLimitBytes": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": false
},
"notifyPercent": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": false,
"maximum": 100,
"exclusiveMaximum": false
},
"trafficResetDay": {
"type": "number",
"minimum": 1,
"exclusiveMinimum": false,
"maximum": 31,
"exclusiveMaximum": false
},
"countryCode": {
"type": "string",
"maxLength": 2
},
"consumptionMultiplier": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": false,
"maximum": 100,
"exclusiveMaximum": false
},
"configProfile": {
"$ref": "#/components/schemas/ConfigProfileRef"
},
"providerUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"tags": {
"type": "array",
"maxItems": 10,
"items": {
"type": "string",
"pattern": "^[A-Z0-9_:]+$",
"maxLength": 36
}
},
"activePluginUuid": {
"type": "string",
"format": "uuid",
"nullable": true
}
},
"required": [
"uuid"
]
},
"RestartAllNodesRequestBody": {
"type": "object",
"properties": {
"forceRestart": {
"type": "boolean"
}
}
},
"ReorderNodeRequest": {
"type": "object",
"properties": {
"nodes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ReorderRequestItem"
}
}
},
"required": [
"nodes"
]
},
"ProfileModificationRequest": {
"type": "object",
"properties": {
"uuids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"format": "uuid"
}
},
"configProfile": {
"type": "object",
"properties": {
"activeConfigProfileUuid": {
"type": "string",
"format": "uuid"
},
"activeInbounds": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"activeConfigProfileUuid",
"activeInbounds"
]
}
},
"required": [
"uuids",
"configProfile"
]
},
"BulkNodesActionsRequest": {
"type": "object",
"properties": {
"uuids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"format": "uuid"
}
},
"action": {
"type": "string",
"enum": [
"ENABLE",
"DISABLE",
"RESTART",
"RESET_TRAFFIC"
],
"x-enumNames": [
"ENABLE",
"DISABLE",
"RESTART",
"RESET_TRAFFIC"
]
}
},
"required": [
"uuids",
"action"
]
},
"BulkNodesUpdateRequest": {
"type": "object",
"properties": {
"uuids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"format": "uuid"
}
},
"fields": {
"type": "object",
"properties": {
"countryCode": {
"type": "string",
"maxLength": 2
},
"consumptionMultiplier": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": false,
"maximum": 100,
"exclusiveMaximum": false
},
"providerUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"tags": {
"type": "array",
"maxItems": 10,
"items": {
"type": "string",
"pattern": "^[A-Z0-9_:]+$",
"maxLength": 36
}
},
"activePluginUuid": {
"type": "string",
"format": "uuid",
"nullable": true
}
}
}
},
"required": [
"uuids",
"fields"
]
},
"TorrentBlockerReportsResponseResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"records": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"userId": {
"type": "number"
},
"nodeId": {
"type": "number"
},
"user": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"username": {
"type": "string"
}
},
"required": [
"uuid",
"username"
]
},
"node": {
"$ref": "#/components/schemas/Node"
},
"report": {
"$ref": "#/components/schemas/ReportItem"
},
"createdAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"id",
"userId",
"nodeId",
"user",
"node",
"report",
"createdAt"
]
}
},
"total": {
"type": "number"
}
},
"required": [
"records",
"total"
]
}
},
"required": [
"response"
]
},
"GetTorrentBlockerReportsStatsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"stats": {
"type": "object",
"properties": {
"distinctNodes": {
"type": "number"
},
"distinctUsers": {
"type": "number"
},
"totalReports": {
"type": "number"
},
"reportsLast24Hours": {
"type": "number"
}
},
"required": [
"distinctNodes",
"distinctUsers",
"totalReports",
"reportsLast24Hours"
]
},
"topUsers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"color": {
"type": "string"
},
"username": {
"type": "string"
},
"total": {
"type": "number"
}
},
"required": [
"uuid",
"color",
"username",
"total"
]
}
},
"topNodes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TopNode"
}
}
},
"required": [
"stats",
"topUsers",
"topNodes"
]
}
},
"required": [
"response"
]
},
"NodePluginsResponseResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"nodePlugins": {
"type": "array",
"items": {
"$ref": "#/components/schemas/NodePlugin"
}
}
},
"required": [
"total",
"nodePlugins"
]
}
},
"required": [
"response"
]
},
"NodePluginResponseResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"viewPosition": {
"type": "integer"
},
"name": {
"type": "string"
},
"pluginConfig": {}
},
"required": [
"uuid",
"viewPosition",
"name",
"pluginConfig"
]
}
},
"required": [
"response"
]
},
"UpdateNodePluginRequest": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30,
"pattern": "^[A-Za-z0-9_\\s-]+$"
},
"pluginConfig": {}
},
"required": [
"uuid"
]
},
"CreateNodePluginRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30,
"pattern": "^[A-Za-z0-9_\\s-]+$"
}
},
"required": [
"name"
]
},
"CreateNodePluginResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/NodePlugin"
}
},
"required": [
"response"
]
},
"PluginExecutorRequest": {
"type": "object",
"properties": {
"command": {
"oneOf": [
{
"description": "Block IPs",
"type": "object",
"properties": {
"command": {
"type": "string",
"enum": [
"blockIps"
]
},
"ips": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"ip": {
"type": "string"
},
"timeout": {
"type": "number"
}
},
"required": [
"ip",
"timeout"
]
}
}
},
"required": [
"command",
"ips"
]
},
{
"description": "Unblock IPs",
"type": "object",
"properties": {
"command": {
"type": "string",
"enum": [
"unblockIps"
]
},
"ips": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
}
},
"required": [
"command",
"ips"
]
},
{
"description": "Recreate tables",
"type": "object",
"properties": {
"command": {
"type": "string",
"enum": [
"recreateTables"
]
}
},
"required": [
"command"
]
}
]
},
"targetNodes": {
"oneOf": [
{
"description": "Target all connected nodes",
"type": "object",
"properties": {
"target": {
"type": "string",
"enum": [
"allNodes"
]
}
},
"required": [
"target"
]
},
{
"description": "Target specific nodes",
"type": "object",
"properties": {
"target": {
"type": "string",
"enum": [
"specificNodes"
]
},
"nodeUuids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"target",
"nodeUuids"
]
}
]
}
},
"required": [
"command",
"targetNodes"
]
},
"CreateHostRequest": {
"type": "object",
"properties": {
"inbound": {
"$ref": "#/components/schemas/InboundRef"
},
"remark": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"address": {
"type": "string"
},
"port": {
"type": "integer"
},
"path": {
"type": "string"
},
"sni": {
"type": "string"
},
"host": {
"type": "string"
},
"alpn": {
"type": "string",
"enum": [
"h3",
"h2",
"http/1.1",
"h2,http/1.1",
"h3,h2,http/1.1",
"h3,h2"
],
"x-enumNames": [
"H3",
"H2",
"HTTP_1_1",
"H_COMBINED",
"H3_H2_H1_COMBINED",
"H3_H2_COMBINED"
],
"nullable": true
},
"fingerprint": {
"type": "string",
"enum": [
"chrome",
"firefox",
"safari",
"ios",
"android",
"edge",
"qq",
"random",
"randomized"
],
"x-enumNames": [
"CHROME",
"FIREFOX",
"SAFARI",
"IOS",
"ANDROID",
"EDGE",
"QQ",
"RANDOM",
"RANDOMIZED"
],
"nullable": true
},
"isDisabled": {
"type": "boolean",
"default": false
},
"securityLayer": {
"type": "string",
"enum": [
"DEFAULT",
"TLS",
"NONE"
],
"x-enumNames": [
"DEFAULT",
"TLS",
"NONE"
],
"default": "DEFAULT"
},
"xHttpExtraParams": {
"nullable": true
},
"muxParams": {
"nullable": true
},
"sockoptParams": {
"nullable": true
},
"finalMask": {
"nullable": true
},
"serverDescription": {
"type": "string",
"maxLength": 30,
"nullable": true
},
"tag": {
"description": "Optional. Host tag for categorization. Max 32 characters, uppercase letters, numbers, underscores and colons are allowed.",
"type": "string",
"pattern": "^[A-Z0-9_:]+$",
"maxLength": 32,
"nullable": true
},
"isHidden": {
"type": "boolean",
"default": false
},
"overrideSniFromAddress": {
"type": "boolean",
"default": false
},
"keepSniBlank": {
"type": "boolean",
"default": false
},
"allowInsecure": {
"type": "boolean",
"default": false
},
"vlessRouteId": {
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false,
"maximum": 65535,
"exclusiveMaximum": false,
"nullable": true
},
"shuffleHost": {
"type": "boolean",
"default": false
},
"mihomoX25519": {
"type": "boolean",
"default": false
},
"nodes": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"xrayJsonTemplateUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"excludedInternalSquads": {
"description": "Optional. Internal squads from which the host will be excluded.",
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"excludeFromSubscriptionTypes": {
"description": "Optional. Subscription types from which the host will be excluded from.",
"type": "array",
"items": {
"type": "string",
"enum": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
],
"x-enumNames": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
]
}
}
},
"required": [
"inbound",
"remark",
"address",
"port"
]
},
"HostResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/HostItem"
}
},
"required": [
"response"
]
},
"UpdateHostRequest": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"inbound": {
"$ref": "#/components/schemas/InboundRef"
},
"remark": {
"type": "string",
"maxLength": 40
},
"address": {
"type": "string"
},
"port": {
"type": "integer"
},
"path": {
"type": "string"
},
"sni": {
"type": "string"
},
"host": {
"type": "string"
},
"alpn": {
"type": "string",
"enum": [
"h3",
"h2",
"http/1.1",
"h2,http/1.1",
"h3,h2,http/1.1",
"h3,h2"
],
"x-enumNames": [
"H3",
"H2",
"HTTP_1_1",
"H_COMBINED",
"H3_H2_H1_COMBINED",
"H3_H2_COMBINED"
],
"nullable": true
},
"fingerprint": {
"type": "string",
"enum": [
"chrome",
"firefox",
"safari",
"ios",
"android",
"edge",
"qq",
"random",
"randomized"
],
"x-enumNames": [
"CHROME",
"FIREFOX",
"SAFARI",
"IOS",
"ANDROID",
"EDGE",
"QQ",
"RANDOM",
"RANDOMIZED"
],
"nullable": true
},
"isDisabled": {
"type": "boolean"
},
"securityLayer": {
"type": "string",
"enum": [
"DEFAULT",
"TLS",
"NONE"
],
"x-enumNames": [
"DEFAULT",
"TLS",
"NONE"
]
},
"xHttpExtraParams": {
"nullable": true
},
"muxParams": {
"nullable": true
},
"sockoptParams": {
"nullable": true
},
"finalMask": {
"nullable": true
},
"serverDescription": {
"type": "string",
"maxLength": 30,
"nullable": true
},
"tag": {
"description": "Optional. Host tag for categorization. Max 32 characters, uppercase letters, numbers, underscores and colons are allowed.",
"type": "string",
"pattern": "^[A-Z0-9_:]+$",
"maxLength": 32,
"nullable": true
},
"isHidden": {
"type": "boolean"
},
"overrideSniFromAddress": {
"type": "boolean"
},
"keepSniBlank": {
"type": "boolean"
},
"vlessRouteId": {
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false,
"maximum": 65535,
"exclusiveMaximum": false,
"nullable": true
},
"allowInsecure": {
"type": "boolean"
},
"shuffleHost": {
"type": "boolean"
},
"mihomoX25519": {
"type": "boolean"
},
"nodes": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"xrayJsonTemplateUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"excludedInternalSquads": {
"description": "Optional. Internal squads from which the host will be excluded.",
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"excludeFromSubscriptionTypes": {
"description": "Optional. Subscription types from which the host will be excluded from.",
"type": "array",
"items": {
"type": "string",
"enum": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
],
"x-enumNames": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
]
}
}
},
"required": [
"uuid"
]
},
"HostListResponse": {
"type": "object",
"properties": {
"response": {
"type": "array",
"items": {
"$ref": "#/components/schemas/HostItem"
}
}
},
"required": [
"response"
]
},
"ReorderHostRequest": {
"type": "object",
"properties": {
"hosts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ReorderRequestItem"
}
}
},
"required": [
"hosts"
]
},
"ReorderHostResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"isUpdated": {
"type": "boolean"
}
},
"required": [
"isUpdated"
]
}
},
"required": [
"response"
]
},
"BulkUuidsRequest2": {
"type": "object",
"properties": {
"uuids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"uuids"
]
},
"SetInboundToManyHostsRequest": {
"type": "object",
"properties": {
"uuids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"configProfileUuid": {
"type": "string",
"format": "uuid"
},
"configProfileInboundUuid": {
"type": "string",
"format": "uuid"
}
},
"required": [
"uuids",
"configProfileUuid",
"configProfileInboundUuid"
]
},
"SetPortToManyHostsRequest": {
"type": "object",
"properties": {
"uuids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"port": {
"type": "integer",
"minimum": 1,
"exclusiveMinimum": false,
"maximum": 65535,
"exclusiveMaximum": false
}
},
"required": [
"uuids",
"port"
]
},
"GetLegacyStatsNodesUsersUsageResponse": {
"type": "object",
"properties": {
"response": {
"type": "array",
"items": {
"type": "object",
"properties": {
"userUuid": {
"type": "string",
"format": "uuid"
},
"username": {
"type": "string"
},
"nodeUuid": {
"type": "string",
"format": "uuid"
},
"total": {
"type": "number"
},
"date": {
"type": "string"
}
},
"required": [
"userUuid",
"username",
"nodeUuid",
"total",
"date"
]
}
}
},
"required": [
"response"
]
},
"GetStatsNodeUsersUsageResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"categories": {
"type": "array",
"items": {
"type": "string"
}
},
"sparklineData": {
"type": "array",
"items": {
"type": "number"
}
},
"topUsers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"color": {
"type": "string"
},
"username": {
"type": "string"
},
"total": {
"type": "number"
}
},
"required": [
"color",
"username",
"total"
]
}
}
},
"required": [
"categories",
"sparklineData",
"topUsers"
]
}
},
"required": [
"response"
]
},
"GetLegacyStatsUserUsageResponse": {
"type": "object",
"properties": {
"response": {
"type": "array",
"items": {
"type": "object",
"properties": {
"userUuid": {
"type": "string",
"format": "uuid"
},
"nodeUuid": {
"type": "string",
"format": "uuid"
},
"nodeName": {
"type": "string"
},
"countryCode": {
"type": "string"
},
"total": {
"type": "number"
},
"date": {
"type": "string"
}
},
"required": [
"userUuid",
"nodeUuid",
"nodeName",
"countryCode",
"total",
"date"
]
}
}
},
"required": [
"response"
]
},
"StatsUserUsageResponseResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"categories": {
"type": "array",
"items": {
"type": "string"
}
},
"sparklineData": {
"type": "array",
"items": {
"type": "number"
}
},
"topNodes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TopNode"
}
},
"series": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"color": {
"type": "string"
},
"countryCode": {
"type": "string"
},
"total": {
"type": "number"
},
"data": {
"type": "array",
"items": {
"type": "number"
}
}
},
"required": [
"uuid",
"name",
"color",
"countryCode",
"total",
"data"
]
}
}
},
"required": [
"categories",
"sparklineData",
"topNodes",
"series"
]
}
},
"required": [
"response"
]
},
"GetAllHwidDevicesResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/AllHwidDevices"
}
},
"required": [
"response"
]
},
"CreateUserHwidDeviceRequest": {
"type": "object",
"properties": {
"hwid": {
"type": "string"
},
"userUuid": {
"type": "string",
"format": "uuid"
},
"platform": {
"type": "string"
},
"osVersion": {
"type": "string"
},
"deviceModel": {
"type": "string"
},
"userAgent": {
"type": "string"
}
},
"required": [
"hwid",
"userUuid"
]
},
"HwidDevicesResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/AllHwidDevices"
}
},
"required": [
"response"
]
},
"DeleteUserHwidDeviceRequest": {
"type": "object",
"properties": {
"userUuid": {
"type": "string",
"format": "uuid"
},
"hwid": {
"type": "string"
}
},
"required": [
"userUuid",
"hwid"
]
},
"DeleteAllUserHwidDevicesRequest": {
"type": "object",
"properties": {
"userUuid": {
"type": "string",
"format": "uuid"
}
},
"required": [
"userUuid"
]
},
"GetHwidDevicesStatsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"byPlatform": {
"type": "array",
"items": {
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"count": {
"type": "number"
}
},
"required": [
"platform",
"count"
]
}
},
"byApp": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ByAppItem"
}
},
"stats": {
"type": "object",
"properties": {
"totalUniqueDevices": {
"type": "number"
},
"totalHwidDevices": {
"type": "number"
},
"averageHwidDevicesPerUser": {
"type": "number"
}
},
"required": [
"totalUniqueDevices",
"totalHwidDevices",
"averageHwidDevicesPerUser"
]
}
},
"required": [
"byPlatform",
"byApp",
"stats"
]
}
},
"required": [
"response"
]
},
"GetTopUsersByHwidDevicesResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"type": "object",
"properties": {
"userUuid": {
"type": "string",
"format": "uuid"
},
"id": {
"type": "number"
},
"username": {
"type": "string"
},
"devicesCount": {
"type": "number"
}
},
"required": [
"userUuid",
"id",
"username",
"devicesCount"
]
}
},
"total": {
"type": "number"
}
},
"required": [
"users",
"total"
]
}
},
"required": [
"response"
]
},
"GetInfraProvidersResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"providers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Provider"
}
}
},
"required": [
"total",
"providers"
]
}
},
"required": [
"response"
]
},
"InfraProviderResponseResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/Provider"
}
},
"required": [
"response"
]
},
"CreateInfraProviderRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30
},
"faviconLink": {
"type": "string",
"format": "uri"
},
"loginUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"name"
]
},
"UpdateInfraProviderRequest": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 30
},
"faviconLink": {
"type": "string",
"format": "uri",
"nullable": true
},
"loginUrl": {
"type": "string",
"format": "uri",
"nullable": true
}
},
"required": [
"uuid"
]
},
"CreateInfraBillingHistoryRecordRequest": {
"type": "object",
"properties": {
"providerUuid": {
"type": "string",
"format": "uuid"
},
"amount": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": false
},
"billedAt": {
"description": "Billing date. Format: 2025-01-17T15:38:45.065Z",
"type": "string",
"format": "date-time"
}
},
"required": [
"providerUuid",
"amount",
"billedAt"
]
},
"BillingHistoryResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"records": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"providerUuid": {
"type": "string",
"format": "uuid"
},
"amount": {
"type": "number"
},
"billedAt": {
"type": "string",
"format": "date-time"
},
"provider": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"faviconLink": {
"type": "string",
"nullable": true
}
},
"required": [
"uuid",
"name",
"faviconLink"
]
}
},
"required": [
"uuid",
"providerUuid",
"amount",
"billedAt",
"provider"
]
}
},
"total": {
"type": "number"
}
},
"required": [
"records",
"total"
]
}
},
"required": [
"response"
]
},
"BillingNodesResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"totalBillingNodes": {
"type": "number"
},
"billingNodes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"nodeUuid": {
"type": "string",
"format": "uuid"
},
"providerUuid": {
"type": "string",
"format": "uuid"
},
"provider": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"loginUrl": {
"type": "string",
"nullable": true
},
"faviconLink": {
"type": "string",
"nullable": true
}
},
"required": [
"uuid",
"name",
"loginUrl",
"faviconLink"
]
},
"node": {
"$ref": "#/components/schemas/Node"
},
"nextBillingAt": {
"type": "string",
"format": "date-time"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"uuid",
"nodeUuid",
"providerUuid",
"provider",
"node",
"nextBillingAt",
"createdAt",
"updatedAt"
]
}
},
"availableBillingNodes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Node"
}
},
"totalAvailableBillingNodes": {
"type": "number"
},
"stats": {
"type": "object",
"properties": {
"upcomingNodesCount": {
"type": "number"
},
"currentMonthPayments": {
"type": "number"
},
"totalSpent": {
"type": "number"
}
},
"required": [
"upcomingNodesCount",
"currentMonthPayments",
"totalSpent"
]
}
},
"required": [
"totalBillingNodes",
"billingNodes",
"availableBillingNodes",
"totalAvailableBillingNodes",
"stats"
]
}
},
"required": [
"response"
]
},
"UpdateInfraBillingNodeRequest": {
"type": "object",
"properties": {
"uuids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"nextBillingAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"uuids",
"nextBillingAt"
]
},
"CreateInfraBillingNodeRequest": {
"type": "object",
"properties": {
"providerUuid": {
"type": "string",
"format": "uuid"
},
"nodeUuid": {
"type": "string",
"format": "uuid"
},
"nextBillingAt": {
"description": "Next billing date. Format: 2025-01-17T15:38:45.065Z",
"type": "string",
"format": "date-time"
}
},
"required": [
"providerUuid",
"nodeUuid"
]
},
"GetSubscriptionRequestHistoryResponse": {
"type": "object",
"properties": {
"response": {
"$ref": "#/components/schemas/UserSubscriptionHistory"
}
},
"required": [
"response"
]
},
"GetSubscriptionRequestHistoryStatsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"byParsedApp": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ByAppItem"
}
},
"hourlyRequestStats": {
"type": "array",
"items": {
"type": "object",
"properties": {
"dateTime": {
"type": "string",
"format": "date-time"
},
"requestCount": {
"type": "number"
}
},
"required": [
"dateTime",
"requestCount"
]
}
}
},
"required": [
"byParsedApp",
"hourlyRequestStats"
]
}
},
"required": [
"response"
]
},
"GetMetadataResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"version": {
"type": "string"
},
"build": {
"type": "object",
"properties": {
"time": {
"type": "string"
},
"number": {
"type": "string"
}
},
"required": [
"time",
"number"
]
},
"git": {
"type": "object",
"properties": {
"backend": {
"type": "object",
"properties": {
"commitSha": {
"type": "string"
},
"branch": {
"type": "string"
},
"commitUrl": {
"type": "string"
}
},
"required": [
"commitSha",
"branch",
"commitUrl"
]
},
"frontend": {
"type": "object",
"properties": {
"commitSha": {
"type": "string"
},
"commitUrl": {
"type": "string"
}
},
"required": [
"commitSha",
"commitUrl"
]
}
},
"required": [
"backend",
"frontend"
]
}
},
"required": [
"version",
"build",
"git"
]
}
},
"required": [
"response"
]
},
"GetStatsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"cpu": {
"type": "object",
"properties": {
"cores": {
"type": "number"
}
},
"required": [
"cores"
]
},
"memory": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"free": {
"type": "number"
},
"used": {
"type": "number"
}
},
"required": [
"total",
"free",
"used"
]
},
"uptime": {
"type": "number"
},
"timestamp": {
"type": "number"
},
"users": {
"type": "object",
"properties": {
"statusCounts": {
"type": "object",
"additionalProperties": {
"type": "number"
}
},
"totalUsers": {
"type": "number"
}
},
"required": [
"statusCounts",
"totalUsers"
]
},
"onlineStats": {
"type": "object",
"properties": {
"lastDay": {
"type": "number"
},
"lastWeek": {
"type": "number"
},
"neverOnline": {
"type": "number"
},
"onlineNow": {
"type": "number"
}
},
"required": [
"lastDay",
"lastWeek",
"neverOnline",
"onlineNow"
]
},
"nodes": {
"type": "object",
"properties": {
"totalOnline": {
"type": "number"
},
"totalBytesLifetime": {
"type": "string"
}
},
"required": [
"totalOnline",
"totalBytesLifetime"
]
}
},
"required": [
"cpu",
"memory",
"uptime",
"timestamp",
"users",
"onlineStats",
"nodes"
]
}
},
"required": [
"response"
]
},
"GetBandwidthStatsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"bandwidthLastTwoDays": {
"$ref": "#/components/schemas/BandwidthLastTwoDays"
},
"bandwidthLastSevenDays": {
"$ref": "#/components/schemas/BandwidthLastTwoDays"
},
"bandwidthLast30Days": {
"$ref": "#/components/schemas/BandwidthLastTwoDays"
},
"bandwidthCalendarMonth": {
"$ref": "#/components/schemas/BandwidthLastTwoDays"
},
"bandwidthCurrentYear": {
"$ref": "#/components/schemas/BandwidthLastTwoDays"
}
},
"required": [
"bandwidthLastTwoDays",
"bandwidthLastSevenDays",
"bandwidthLast30Days",
"bandwidthCalendarMonth",
"bandwidthCurrentYear"
]
}
},
"required": [
"response"
]
},
"GetNodesStatisticsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"lastSevenDays": {
"type": "array",
"items": {
"type": "object",
"properties": {
"nodeName": {
"type": "string"
},
"date": {
"type": "string"
},
"totalBytes": {
"type": "string"
}
},
"required": [
"nodeName",
"date",
"totalBytes"
]
}
}
},
"required": [
"lastSevenDays"
]
}
},
"required": [
"response"
]
},
"GetRemnawaveHealthResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"runtimeMetrics": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rss": {
"type": "number"
},
"heapUsed": {
"type": "number"
},
"heapTotal": {
"type": "number"
},
"external": {
"type": "number"
},
"arrayBuffers": {
"type": "number"
},
"eventLoopDelayMs": {
"type": "number"
},
"eventLoopP99Ms": {
"type": "number"
},
"activeHandles": {
"type": "number"
},
"uptime": {
"type": "number"
},
"pid": {
"type": "number"
},
"timestamp": {
"type": "number"
},
"instanceId": {
"type": "string"
},
"instanceType": {
"type": "string"
}
},
"required": [
"rss",
"heapUsed",
"heapTotal",
"external",
"arrayBuffers",
"eventLoopDelayMs",
"eventLoopP99Ms",
"activeHandles",
"uptime",
"pid",
"timestamp",
"instanceId",
"instanceType"
]
}
}
},
"required": [
"runtimeMetrics"
]
}
},
"required": [
"response"
]
},
"GetNodesMetricsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"nodes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"nodeUuid": {
"type": "string"
},
"nodeName": {
"type": "string"
},
"countryEmoji": {
"type": "string"
},
"providerName": {
"type": "string"
},
"usersOnline": {
"type": "number"
},
"inboundsStats": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InboundsStat"
}
},
"outboundsStats": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InboundsStat"
}
}
},
"required": [
"nodeUuid",
"nodeName",
"countryEmoji",
"providerName",
"usersOnline",
"inboundsStats",
"outboundsStats"
]
}
}
},
"required": [
"nodes"
]
}
},
"required": [
"response"
]
},
"GenerateX25519Response": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"keypairs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"publicKey": {
"type": "string"
},
"privateKey": {
"type": "string"
}
},
"required": [
"publicKey",
"privateKey"
]
}
}
},
"required": [
"keypairs"
]
}
},
"required": [
"response"
]
},
"EncryptHappCryptoLinkRequest": {
"type": "object",
"properties": {
"linkToEncrypt": {
"type": "string",
"format": "uri"
}
},
"required": [
"linkToEncrypt"
]
},
"EncryptHappCryptoLinkResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"encryptedLink": {
"type": "string"
}
},
"required": [
"encryptedLink"
]
}
},
"required": [
"response"
]
},
"DebugSrrMatcherRequest": {
"type": "object",
"properties": {
"responseRules": {
"$ref": "#/components/schemas/ResponseRules"
}
},
"required": [
"responseRules"
]
},
"DebugSrrMatcherResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"matched": {
"type": "boolean"
},
"responseType": {
"type": "string",
"enum": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX",
"BROWSER",
"BLOCK",
"STATUS_CODE_404",
"STATUS_CODE_451",
"SOCKET_DROP"
],
"x-enumNames": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX",
"BROWSER",
"BLOCK",
"STATUS_CODE_404",
"STATUS_CODE_451",
"SOCKET_DROP"
]
},
"matchedRule": {
"$ref": "#/components/schemas/Rule"
},
"inputHeaders": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"outputHeaders": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"matched",
"responseType",
"matchedRule",
"inputHeaders",
"outputHeaders"
]
}
},
"required": [
"response"
]
},
"GetRecapResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"thisMonth": {
"type": "object",
"properties": {
"users": {
"type": "number"
},
"traffic": {
"type": "string"
}
},
"required": [
"users",
"traffic"
]
},
"total": {
"type": "object",
"properties": {
"users": {
"type": "number"
},
"nodes": {
"type": "number"
},
"traffic": {
"type": "string"
},
"nodesRam": {
"type": "string"
},
"nodesCpuCores": {
"type": "number"
},
"distinctCountries": {
"type": "number"
}
},
"required": [
"users",
"nodes",
"traffic",
"nodesRam",
"nodesCpuCores",
"distinctCountries"
]
},
"version": {
"type": "string"
},
"initDate": {
"type": "string",
"format": "date-time"
}
},
"required": [
"thisMonth",
"total",
"version",
"initDate"
]
}
},
"required": [
"response"
]
},
"SubscriptionSettingsResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"profileTitle": {
"type": "string"
},
"supportLink": {
"type": "string"
},
"profileUpdateInterval": {
"type": "integer",
"minimum": 1,
"exclusiveMinimum": false
},
"isProfileWebpageUrlEnabled": {
"type": "boolean"
},
"serveJsonAtBaseSubscription": {
"type": "boolean"
},
"isShowCustomRemarks": {
"type": "boolean"
},
"customRemarks": {
"$ref": "#/components/schemas/CustomRemark"
},
"happAnnounce": {
"type": "string",
"nullable": true
},
"happRouting": {
"type": "string",
"nullable": true
},
"customResponseHeaders": {
"additionalProperties": {
"type": "string"
},
"nullable": true
},
"randomizeHosts": {
"type": "boolean"
},
"responseRules": {
"$ref": "#/components/schemas/ResponseRules"
},
"hwidSettings": {
"$ref": "#/components/schemas/HwidSettings"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"uuid",
"profileTitle",
"supportLink",
"profileUpdateInterval",
"isProfileWebpageUrlEnabled",
"serveJsonAtBaseSubscription",
"isShowCustomRemarks",
"customRemarks",
"happAnnounce",
"happRouting",
"customResponseHeaders",
"randomizeHosts",
"responseRules",
"hwidSettings",
"createdAt",
"updatedAt"
]
}
},
"required": [
"response"
]
},
"UpdateSubscriptionSettingsRequest": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"profileTitle": {
"type": "string"
},
"supportLink": {
"type": "string"
},
"profileUpdateInterval": {
"type": "integer"
},
"isProfileWebpageUrlEnabled": {
"type": "boolean"
},
"serveJsonAtBaseSubscription": {
"type": "boolean"
},
"happAnnounce": {
"type": "string",
"maxLength": 200,
"nullable": true
},
"happRouting": {
"type": "string",
"nullable": true
},
"isShowCustomRemarks": {
"type": "boolean"
},
"customRemarks": {
"$ref": "#/components/schemas/CustomRemark"
},
"customResponseHeaders": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"randomizeHosts": {
"type": "boolean"
},
"responseRules": {
"$ref": "#/components/schemas/ResponseRules"
},
"hwidSettings": {
"$ref": "#/components/schemas/HwidSettings"
}
},
"required": [
"uuid"
]
},
"IpsResponseResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"jobId": {
"type": "string"
}
},
"required": [
"jobId"
]
}
},
"required": [
"response"
]
},
"FetchIpsResultResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"isCompleted": {
"type": "boolean"
},
"isFailed": {
"type": "boolean"
},
"progress": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"completed": {
"type": "number"
},
"percent": {
"type": "number"
}
},
"required": [
"total",
"completed",
"percent"
]
},
"result": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"userUuid": {
"type": "string",
"format": "uuid"
},
"userId": {
"type": "string"
},
"nodes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"nodeUuid": {
"type": "string",
"format": "uuid"
},
"nodeName": {
"type": "string"
},
"countryCode": {
"type": "string"
},
"ips": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Ips"
}
}
},
"required": [
"nodeUuid",
"nodeName",
"countryCode",
"ips"
]
}
}
},
"required": [
"success",
"userUuid",
"userId",
"nodes"
],
"nullable": true
}
},
"required": [
"isCompleted",
"isFailed",
"progress",
"result"
]
}
},
"required": [
"response"
]
},
"DropConnectionsRequest": {
"type": "object",
"properties": {
"dropBy": {
"oneOf": [
{
"description": "Drop by user UUIDs",
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"userUuids"
]
},
"userUuids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"by",
"userUuids"
]
},
{
"description": "Drop by IP addresses",
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"ipAddresses"
]
},
"ipAddresses": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
}
},
"required": [
"by",
"ipAddresses"
]
}
]
},
"targetNodes": {
"oneOf": [
{
"description": "Target all connected nodes",
"type": "object",
"properties": {
"target": {
"type": "string",
"enum": [
"allNodes"
]
}
},
"required": [
"target"
]
},
{
"description": "Target specific nodes",
"type": "object",
"properties": {
"target": {
"type": "string",
"enum": [
"specificNodes"
]
},
"nodeUuids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"target",
"nodeUuids"
]
}
]
}
},
"required": [
"dropBy",
"targetNodes"
]
},
"FetchUsersIpsResultResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"isCompleted": {
"type": "boolean"
},
"isFailed": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"nodeUuid": {
"type": "string",
"format": "uuid"
},
"users": {
"type": "array",
"items": {
"type": "object",
"properties": {
"userId": {
"type": "string"
},
"ips": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Ips"
}
}
},
"required": [
"userId",
"ips"
]
}
}
},
"required": [
"success",
"nodeUuid",
"users"
],
"nullable": true
}
},
"required": [
"isCompleted",
"isFailed",
"result"
]
}
},
"required": [
"response"
]
},
"UserMetadataResponseResponse": {
"type": "object",
"properties": {
"response": {
"type": "object",
"properties": {
"metadata": {
"type": "object",
"properties": {}
}
},
"required": [
"metadata"
]
}
},
"required": [
"response"
]
},
"UpsertUserMetadataRequestBodyRequest": {
"type": "object",
"properties": {
"metadata": {
"type": "object",
"properties": {}
}
},
"required": [
"metadata"
]
},
"RemnawaveWebhookUserEvents": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"user"
]
},
"event": {
"type": "string",
"enum": [
"user.created",
"user.modified",
"user.deleted",
"user.revoked",
"user.disabled",
"user.enabled",
"user.limited",
"user.expired",
"user.traffic_reset",
"user.expires_in_72_hours",
"user.expires_in_48_hours",
"user.expires_in_24_hours",
"user.expired_24_hours_ago",
"user.first_connected",
"user.bandwidth_usage_threshold_reached",
"user.not_connected"
]
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"data": {
"$ref": "#/components/schemas/UserItemInfo"
},
"meta": {
"type": "object",
"properties": {
"notConnectedAfterHours": {
"type": "integer",
"nullable": true
}
},
"nullable": true
}
},
"required": [
"scope",
"event",
"timestamp",
"data",
"meta"
]
},
"RemnawaveWebhookUserHwidDevicesEvents": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"user_hwid_devices"
]
},
"event": {
"type": "string",
"enum": [
"user_hwid_devices.added",
"user_hwid_devices.deleted"
]
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"data": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/UserItemInfo"
},
"hwidUserDevice": {
"$ref": "#/components/schemas/Device"
}
},
"required": [
"user",
"hwidUserDevice"
]
}
},
"required": [
"scope",
"event",
"timestamp",
"data"
]
},
"RemnawaveWebhookNodeEvents": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"node"
]
},
"event": {
"type": "string",
"enum": [
"node.created",
"node.modified",
"node.disabled",
"node.enabled",
"node.deleted",
"node.connection_lost",
"node.connection_restored",
"node.traffic_notify"
]
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"data": {
"$ref": "#/components/schemas/NodeResponseDataItem"
}
},
"required": [
"scope",
"event",
"timestamp",
"data"
]
},
"RemnawaveWebhookServiceEvents": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"service"
]
},
"event": {
"type": "string",
"enum": [
"service.panel_started",
"service.login_attempt_failed",
"service.login_attempt_success",
"service.subpage_config_changed"
]
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"data": {
"type": "object",
"properties": {
"loginAttempt": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"ip": {
"type": "string"
},
"userAgent": {
"type": "string"
},
"description": {
"type": "string"
},
"password": {
"type": "string"
}
},
"required": [
"username",
"ip",
"userAgent"
]
},
"panelVersion": {
"type": "string"
},
"subpageConfig": {
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"CREATED",
"UPDATED",
"DELETED"
]
},
"uuid": {
"type": "string",
"format": "uuid"
}
},
"required": [
"action",
"uuid"
]
}
}
}
},
"required": [
"scope",
"event",
"timestamp",
"data"
]
},
"RemnawaveWebhookErrorsEvents": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"errors"
]
},
"event": {
"type": "string",
"enum": [
"errors.bandwidth_usage_threshold_reached_max_notifications"
]
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"data": {
"type": "object",
"properties": {
"description": {
"type": "string"
}
},
"required": [
"description"
]
}
},
"required": [
"scope",
"event",
"timestamp",
"data"
]
},
"RemnawaveWebhookCrmEvents": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"crm"
]
},
"event": {
"type": "string",
"enum": [
"crm.infra_billing_node_payment_in_7_days",
"crm.infra_billing_node_payment_in_48hrs",
"crm.infra_billing_node_payment_in_24hrs",
"crm.infra_billing_node_payment_due_today",
"crm.infra_billing_node_payment_overdue_24hrs",
"crm.infra_billing_node_payment_overdue_48hrs",
"crm.infra_billing_node_payment_overdue_7_days"
]
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"data": {
"type": "object",
"properties": {
"providerName": {
"type": "string"
},
"nodeName": {
"type": "string"
},
"nextBillingAt": {
"type": "string",
"format": "date-time"
},
"loginUrl": {
"type": "string"
}
},
"required": [
"providerName",
"nodeName",
"nextBillingAt",
"loginUrl"
]
}
},
"required": [
"scope",
"event",
"timestamp",
"data"
]
},
"RemnawaveWebhookTorrentBlockerEvents": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"torrent_blocker"
]
},
"event": {
"type": "string",
"enum": [
"torrent_blocker.report"
]
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"data": {
"type": "object",
"properties": {
"node": {
"$ref": "#/components/schemas/NodeResponseDataItem"
},
"user": {
"$ref": "#/components/schemas/UserItemInfo"
},
"report": {
"$ref": "#/components/schemas/ReportItem"
}
},
"required": [
"node",
"user",
"report"
]
}
},
"required": [
"scope",
"event",
"timestamp",
"data"
]
},
"BadRequestError": {
"type": "object",
"properties": {
"message": {
"type": "string"
},
"statusCode": {
"type": "number",
"example": 400
},
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ValidationError"
}
}
},
"required": [
"message",
"statusCode",
"errors"
]
},
"ValidationError": {
"type": "object",
"properties": {
"validation": {
"type": "string",
"example": "uuid"
},
"code": {
"type": "string",
"example": "invalid_string"
},
"message": {
"type": "string",
"example": "Invalid uuid"
},
"path": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"uuid"
]
}
},
"required": [
"validation",
"code",
"message",
"path"
]
},
"UnauthorizedError": {
"type": "object",
"properties": {
"message": {
"type": "string",
"example": "Unauthorized"
},
"statusCode": {
"type": "number",
"example": 401
}
},
"required": [
"message",
"statusCode"
]
},
"ForbiddenError": {
"type": "object",
"properties": {
"message": {
"type": "string",
"example": "Forbidden"
},
"statusCode": {
"type": "number",
"example": 403
}
},
"required": [
"message",
"statusCode"
]
},
"NotFoundError": {
"type": "object",
"properties": {
"message": {
"type": "string",
"example": "Not Found"
},
"statusCode": {
"type": "number",
"example": 404
}
},
"required": [
"message",
"statusCode"
]
},
"InternalServerError": {
"type": "object",
"properties": {
"timestamp": {
"type": "string"
},
"path": {
"type": "string"
},
"message": {
"type": "string"
},
"errorCode": {
"type": "string"
}
}
},
"Header": {
"description": "{\"markdownDescription\":\"**Key** and **value** of the response header will be added to the response.\"}",
"type": "object",
"properties": {
"key": {
"description": "{\"markdownDescription\":\"Key of the response header. Must comply with RFC 7230.\"}",
"type": "string",
"pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]+$"
},
"value": {
"description": "{\"markdownDescription\":\"Value of the response header. \"}",
"type": "string",
"minLength": 1
}
},
"required": [
"key",
"value"
]
},
"Condition": {
"description": "{\"markdownDescription\":\"Condition to check against the **headerName**.\",\"defaultSnippets\":[{\"label\":\"Examples: Check if header contains \\\"text/html\\\"\",\"markdownDescription\":\"Condition to check if **headerName** contains \\\"text/html\\\"\",\"body\":{\"headerName\":\"accept\",\"operator\":\"CONTAINS\",\"value\":\"text/html\",\"caseSensitive\":true}}]}",
"type": "object",
"properties": {
"headerName": {
"description": "{\"markdownDescription\":\"**Name** of the HTTP header to check. Must comply with RFC 7230.\"}",
"type": "string",
"pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]+$"
},
"operator": {
"description": "{\"errorMessage\":\"Invalid operator. Please select a valid operator.\",\"markdownDescription\":\"Operator to use for comparing the `headerName` with `value`.\",\"markdownEnumDescriptions\":[\"Performs an exact, comparison between the header value and specified string. `string === value`\",\"Ensures the header value does not exactly match the specified string. `string !== value`\",\"Checks if the header value contains the specified string as a substring. `string.includes()`\",\"Verifies the header value does not contain the specified string as a substring. `!string.includes()`\",\"Validates that the header value begins with the specified string. `string.startsWith()`\",\"Validates that the header value does not begin with the specified string. `!string.startsWith()`\",\"Confirms the header value ends with the specified string. `string.endsWith()`\",\"Confirms the header value does not end with the specified string. `!string.endsWith()`\",\"Evaluates if the header value matches the specified regular expression pattern. `regex.test()`\",\"Evaluates if the header value does not match the specified regular expression pattern. `!regex.test()`\"]}",
"type": "string",
"enum": [
"EQUALS",
"NOT_EQUALS",
"CONTAINS",
"NOT_CONTAINS",
"STARTS_WITH",
"NOT_STARTS_WITH",
"ENDS_WITH",
"NOT_ENDS_WITH",
"REGEX",
"NOT_REGEX"
],
"x-enumNames": [
"EQUALS",
"NOT_EQUALS",
"CONTAINS",
"NOT_CONTAINS",
"STARTS_WITH",
"NOT_STARTS_WITH",
"ENDS_WITH",
"NOT_ENDS_WITH",
"REGEX",
"NOT_REGEX"
]
},
"value": {
"description": "{\"markdownDescription\":\"**Value** to check against the **headerName**.\"}",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"caseSensitive": {
"description": "{\"markdownDescription\":\"Whether the value is **case sensitive**. \\n\\n - `true`: the value will be compared as is. \\n\\n - `false`: the value will be lowercased **before** comparison.\"}",
"type": "boolean"
}
},
"required": [
"headerName",
"operator",
"value",
"caseSensitive"
]
},
"Ips": {
"type": "object",
"properties": {
"ip": {
"type": "string"
},
"lastSeen": {
"type": "string",
"format": "date-time"
}
},
"required": [
"ip",
"lastSeen"
]
},
"ActiveInternalSquad": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
}
},
"required": [
"uuid",
"name"
]
},
"Inbound": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"profileUuid": {
"type": "string",
"format": "uuid"
},
"tag": {
"type": "string"
},
"type": {
"type": "string"
},
"network": {
"type": "string",
"nullable": true
},
"security": {
"type": "string",
"nullable": true
},
"port": {
"type": "number",
"nullable": true
},
"rawInbound": {
"nullable": true
}
},
"required": [
"uuid",
"profileUuid",
"tag",
"type",
"network",
"security",
"port",
"rawInbound"
]
},
"Node": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"countryCode": {
"type": "string"
}
},
"required": [
"uuid",
"name",
"countryCode"
]
},
"TemplateRef": {
"type": "object",
"properties": {
"templateUuid": {
"type": "string",
"format": "uuid"
},
"templateType": {
"type": "string",
"enum": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
],
"x-enumNames": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
]
}
},
"required": [
"templateUuid",
"templateType"
]
},
"InterfaceItem": {
"type": "object",
"properties": {
"interface": {
"type": "string"
},
"rxBytesPerSec": {
"type": "number"
},
"txBytesPerSec": {
"type": "number"
},
"rxTotal": {
"type": "number"
},
"txTotal": {
"type": "number"
}
},
"required": [
"interface",
"rxBytesPerSec",
"txBytesPerSec",
"rxTotal",
"txTotal"
],
"nullable": true
},
"ActionReportItem": {
"type": "object",
"properties": {
"blocked": {
"type": "boolean"
},
"ip": {
"type": "string"
},
"blockDuration": {
"type": "number"
},
"willUnblockAt": {
"type": "string",
"format": "date-time"
},
"userId": {
"type": "string"
},
"processedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"blocked",
"ip",
"blockDuration",
"willUnblockAt",
"userId",
"processedAt"
]
},
"XrayReportItem": {
"type": "object",
"properties": {
"email": {
"type": "string",
"nullable": true
},
"level": {
"type": "number",
"nullable": true
},
"protocol": {
"type": "string",
"nullable": true
},
"network": {
"type": "string"
},
"source": {
"type": "string",
"nullable": true
},
"destination": {
"type": "string"
},
"routeTarget": {
"type": "string",
"nullable": true
},
"originalTarget": {
"type": "string",
"nullable": true
},
"inboundTag": {
"type": "string",
"nullable": true
},
"inboundName": {
"type": "string",
"nullable": true
},
"inboundLocal": {
"type": "string",
"nullable": true
},
"outboundTag": {
"type": "string",
"nullable": true
},
"ts": {
"type": "number"
}
},
"required": [
"email",
"level",
"protocol",
"network",
"source",
"destination",
"routeTarget",
"originalTarget",
"inboundTag",
"inboundName",
"inboundLocal",
"outboundTag",
"ts"
]
},
"BillingNode": {
"type": "object",
"properties": {
"nodeUuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"countryCode": {
"type": "string"
}
},
"required": [
"nodeUuid",
"name",
"countryCode"
]
},
"InboundsStat": {
"type": "object",
"properties": {
"tag": {
"type": "string"
},
"upload": {
"type": "string"
},
"download": {
"type": "string"
}
},
"required": [
"tag",
"upload",
"download"
]
},
"ResponseModification": {
"description": "{\"examples\":[{\"headers\":[{\"key\":\"X-Custom-Header\",\"value\":\"CustomValue\"}]}],\"markdownDescription\":\"Response modifications to be applied when the rule is matched. Optional.\"}",
"type": "object",
"properties": {
"headers": {
"description": "{\"defaultSnippets\":[{\"label\":\"Examples: Add custom header\",\"markdownDescription\":\"Add a custom header to the response\",\"body\":[{\"key\":\"X-Custom-Header\",\"value\":\"CustomValue\"}]}],\"markdownDescription\":\"Array of headers to be added when the rule is matched.\"}",
"type": "array",
"items": {
"$ref": "#/components/schemas/Header"
}
},
"applyHeadersToEnd": {
"description": "{\"markdownDescription\":\"By default, headers are added when forming the response. In some cases, headers set in SRR may be overridden by headers from other parts of the system. If you set this flag to **true**, headers from SRR will be added at the very end, just before the response is sent. In this case, SRR headers may override headers from other sections.\"}",
"type": "boolean"
},
"subscriptionTemplate": {
"description": "{\"markdownDescription\":\"Override the subscription template with the given name. If not provided, the default subscription template will be used. If the template name is not found, the default subscription template for this type will be used. **This modification have higher priority than settings from External Squads.**\"}",
"type": "string",
"minLength": 1
},
"ignoreHostXrayJsonTemplate": {
"description": "{\"markdownDescription\":\"Each Host may have its own Xray Json Template. If you set this flag to **true**, the Xray Json Template defined by the SRR will be used. **The Host's Xray Json Template will be ignored.**\"}",
"type": "boolean"
},
"ignoreServeJsonAtBaseSubscription": {
"description": "{\"markdownDescription\":\"If you set this flag to **true**, the **Serve JSON at Base Subscription** setting will be ignored (set to **false**).\"}",
"type": "boolean"
},
"additionalExtendedClientsRegex": {
"description": "{\"markdownDescription\":\"Additional regex patterns to match extended clients. Matched clients will receive `serverDescription` in the subscription response.\\n\\n**Default Mihomo extended clients:**\\n- `^FlClash ?X/`\\n- `^Flowvy/`\\n- `^prizrak-box/`\\n- `^koala-clash/`\\n\\n**Default Xray extended clients:**\\n- `^Happ/`\\n- `^INCY/`\\n\\n**Example:** `[\\\"^MyClient/\\\", \\\"^CustomApp\\\\\\\\/v2\\\"]`\"}",
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
}
},
"UserTrafficItem": {
"type": "object",
"properties": {
"usedTrafficBytes": {
"type": "number"
},
"lifetimeUsedTrafficBytes": {
"type": "number"
},
"onlineAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstConnectedAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"lastConnectedNodeUuid": {
"type": "string",
"format": "uuid",
"nullable": true
}
},
"required": [
"usedTrafficBytes",
"lifetimeUsedTrafficBytes",
"onlineAt",
"firstConnectedAt",
"lastConnectedNodeUuid"
]
},
"UserItem2": {
"type": "object",
"properties": {
"shortUuid": {
"type": "string"
},
"daysLeft": {
"type": "number"
},
"trafficUsed": {
"type": "string"
},
"trafficLimit": {
"type": "string"
},
"lifetimeTrafficUsed": {
"type": "string"
},
"trafficUsedBytes": {
"type": "string"
},
"trafficLimitBytes": {
"type": "string"
},
"lifetimeTrafficUsedBytes": {
"type": "string"
},
"username": {
"type": "string"
},
"expiresAt": {
"type": "string",
"format": "date-time"
},
"isActive": {
"type": "boolean"
},
"userStatus": {
"type": "string",
"enum": [
"ACTIVE",
"DISABLED",
"LIMITED",
"EXPIRED"
],
"x-enumNames": [
"ACTIVE",
"DISABLED",
"LIMITED",
"EXPIRED"
]
},
"trafficLimitStrategy": {
"type": "string",
"enum": [
"NO_RESET",
"DAY",
"WEEK",
"MONTH",
"MONTH_ROLLING"
],
"x-enumNames": [
"NO_RESET",
"DAY",
"WEEK",
"MONTH",
"MONTH_ROLLING"
]
}
},
"required": [
"shortUuid",
"daysLeft",
"trafficUsed",
"trafficLimit",
"lifetimeTrafficUsed",
"trafficUsedBytes",
"trafficLimitBytes",
"lifetimeTrafficUsedBytes",
"username",
"expiresAt",
"isActive",
"userStatus",
"trafficLimitStrategy"
]
},
"InternalSquadsResponInfoItem": {
"type": "object",
"properties": {
"membersCount": {
"type": "number"
},
"inboundsCount": {
"type": "number"
}
},
"required": [
"membersCount",
"inboundsCount"
]
},
"ExternalSquadsResponInfoItem": {
"type": "object",
"properties": {
"membersCount": {
"type": "number"
}
},
"required": [
"membersCount"
]
},
"SubscriptionSettings": {
"type": "object",
"properties": {
"profileTitle": {
"type": "string"
},
"supportLink": {
"type": "string"
},
"profileUpdateInterval": {
"type": "integer",
"minimum": 1,
"exclusiveMinimum": false
},
"isProfileWebpageUrlEnabled": {
"type": "boolean"
},
"serveJsonAtBaseSubscription": {
"type": "boolean"
},
"isShowCustomRemarks": {
"type": "boolean"
},
"happAnnounce": {
"type": "string",
"nullable": true
},
"happRouting": {
"type": "string",
"nullable": true
},
"randomizeHosts": {
"type": "boolean"
}
},
"nullable": true
},
"HostOverride": {
"type": "object",
"properties": {
"serverDescription": {
"type": "string",
"maxLength": 30,
"nullable": true
},
"vlessRouteId": {
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false,
"maximum": 65535,
"exclusiveMaximum": false,
"nullable": true
}
},
"nullable": true
},
"HwidSettings": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"fallbackDeviceLimit": {
"type": "number"
},
"maxDevicesAnnounce": {
"type": "string",
"maxLength": 200,
"nullable": true
}
},
"required": [
"enabled",
"fallbackDeviceLimit",
"maxDevicesAnnounce"
],
"nullable": true
},
"CustomRemark": {
"type": "object",
"properties": {
"expiredUsers": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"limitedUsers": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"disabledUsers": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"emptyHosts": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"HWIDMaxDevicesExceeded": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"HWIDNotSupported": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
}
},
"required": [
"expiredUsers",
"limitedUsers",
"disabledUsers",
"emptyHosts",
"HWIDMaxDevicesExceeded",
"HWIDNotSupported"
],
"nullable": true
},
"NodeResponseInfoItem": {
"type": "object",
"properties": {
"arch": {
"type": "string"
},
"cpus": {
"type": "integer"
},
"cpuModel": {
"type": "string"
},
"memoryTotal": {
"type": "number"
},
"hostname": {
"type": "string"
},
"platform": {
"type": "string"
},
"release": {
"type": "string"
},
"type": {
"type": "string"
},
"version": {
"type": "string"
},
"networkInterfaces": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"arch",
"cpus",
"cpuModel",
"memoryTotal",
"hostname",
"platform",
"release",
"type",
"version",
"networkInterfaces"
]
},
"Stat": {
"type": "object",
"properties": {
"memoryFree": {
"type": "number"
},
"memoryUsed": {
"type": "number"
},
"uptime": {
"type": "number"
},
"loadAvg": {
"type": "array",
"items": {
"type": "number"
}
},
"interface": {
"$ref": "#/components/schemas/InterfaceItem"
}
},
"required": [
"memoryFree",
"memoryUsed",
"uptime",
"loadAvg",
"interface"
]
},
"ReportItem": {
"type": "object",
"properties": {
"actionReport": {
"$ref": "#/components/schemas/ActionReportItem"
},
"xrayReport": {
"$ref": "#/components/schemas/XrayReportItem"
}
},
"required": [
"actionReport",
"xrayReport"
]
},
"BillingHistoryItem": {
"type": "object",
"properties": {
"totalAmount": {
"type": "number"
},
"totalBills": {
"type": "number"
}
},
"required": [
"totalAmount",
"totalBills"
]
},
"Rule": {
"description": "{\"defaultSnippets\":[{\"label\":\"Examples: Blank rule\",\"markdownDescription\":\"Simple blank rule with no conditions or modifications.\\n```json\\n{\\n \\\"name\\\": \\\"Blank rule\\\",\\n \\\"description\\\": \\\"Blank rule\\\",\\n \\\"operator\\\": \\\"AND\\\",\\n \\\"enabled\\\": true,\\n \\\"conditions\\\": [],\\n \\\"responseType\\\": \\\"BLOCK\\\",\\n \\\"responseModifications\\\": {\\n \\\"headers\\\": []\\n }\\n}\\n```\",\"body\":{\"name\":\"Blank rule\",\"description\":\"Blank rule\",\"operator\":\"AND\",\"enabled\":true,\"conditions\":[],\"responseType\":\"BLOCK\",\"responseModifications\":{\"headers\":[]}}},{\"label\":\"Examples: Block Legacy Clients\",\"markdownDescription\":\"Block requests from legacy clients\\n```json\\n{\\n \\\"name\\\": \\\"Block Legacy Clients\\\",\\n \\\"description\\\": \\\"Block requests from legacy clients\\\",\\n \\\"enabled\\\": true,\\n \\\"operator\\\": \\\"OR\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"headerName\\\": \\\"user-agent\\\",\\n \\\"operator\\\": \\\"CONTAINS\\\",\\n \\\"value\\\": \\\"Hiddify\\\",\\n \\\"caseSensitive\\\": true\\n },\\n {\\n \\\"headerName\\\": \\\"user-agent\\\",\\n \\\"operator\\\": \\\"CONTAINS\\\",\\n \\\"value\\\": \\\"FoxRay\\\",\\n \\\"caseSensitive\\\": true\\n }\\n ],\\n \\\"responseType\\\": \\\"BLOCK\\\"\\n}\\n```\",\"body\":{\"name\":\"Block Legacy Clients\",\"description\":\"Block requests from legacy clients\",\"enabled\":true,\"operator\":\"OR\",\"conditions\":[{\"headerName\":\"user-agent\",\"operator\":\"CONTAINS\",\"value\":\"Hiddify\",\"caseSensitive\":true},{\"headerName\":\"user-agent\",\"operator\":\"CONTAINS\",\"value\":\"FoxRay\",\"caseSensitive\":true}],\"responseType\":\"BLOCK\"}}],\"title\":\"Response Rule\",\"markdownDescription\":\"Response rule configuration.\\n\\n**Fields:**\\n- **name**: Name of the response rule.\\n- **description**: Description of the response rule. Optional.\\n- **enabled**: Control whether the response rule is enabled or disabled. \\n\\n - `true` the rule will be applied. \\n\\n - `false` the rule will be always ignored.\\n- **operator**: Operator to use for combining conditions in the rule.\\n- **conditions**: Array of conditions to check against the request headers. Conditions are applied with **operator**. If conditions are empty, the rule will be matched.\\n- **responseType**: Type of the response. Determines the type of **response** to be returned when the rule is matched.\\n- **responseModifications**: Response modifications to be applied when the rule is matched. Optional.\\n\\n**Example:**\\n```json\\n{\\n \\\"name\\\": \\\"Block Legacy Clients\\\",\\n \\\"description\\\": \\\"Block requests from legacy clients\\\",\\n \\\"enabled\\\": true,\\n \\\"operator\\\": \\\"OR\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"headerName\\\": \\\"user-agent\\\",\\n \\\"operator\\\": \\\"CONTAINS\\\",\\n \\\"value\\\": \\\"Hiddify\\\",\\n \\\"caseSensitive\\\": true\\n },\\n {\\n \\\"headerName\\\": \\\"user-agent\\\",\\n \\\"operator\\\": \\\"CONTAINS\\\",\\n \\\"value\\\": \\\"FoxRay\\\",\\n \\\"caseSensitive\\\": true\\n }\\n ],\\n \\\"responseType\\\": \\\"BLOCK\\\"\\n}\\n```\"}",
"type": "object",
"properties": {
"name": {
"description": "{\"markdownDescription\":\"Name of the response rule.\"}",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"description": {
"description": "{\"markdownDescription\":\"Description of the response rule. Optional.\"}",
"type": "string",
"minLength": 1,
"maxLength": 250
},
"enabled": {
"description": "{\"markdownDescription\":\"Control whether the response rule is enabled or disabled. \\n\\n - `true` the rule will be applied. \\n\\n - `false` the rule will be always ignored.\"}",
"type": "boolean"
},
"operator": {
"description": "{\"markdownDescription\":\"Operator to use for combining conditions in the rule.\"}",
"type": "string",
"enum": [
"AND",
"OR"
],
"x-enumNames": [
"AND",
"OR"
]
},
"conditions": {
"description": "{\"markdownDescription\":\"Array of conditions to check against the request headers. Conditions are applied with **operator**. If conditions are empty, the rule will be matched.\"}",
"type": "array",
"items": {
"$ref": "#/components/schemas/Condition"
}
},
"responseType": {
"description": "{\"errorMessage\":\"Invalid response type. Please select a valid response type.\",\"markdownDescription\":\"Type of the response. Determines the type of **response** to be returned when the rule is matched.\",\"markdownEnumDescriptions\":[\"Return **subscription** in XRAY-JSON format. (Using `Xray Json` template)\",\"Return **subscription** in BASE64 encoded string. Compatible with most client application with Xray core.\",\"Return **subscription** in Mihomo format. (Using `Mihomo` template)\",\"Return **subscription** in Stash format. (Using `Stash` template)\",\"Return **subscription** in Clash format. (Using `Clash` template) Useful for client application that use Legacy Clash core.\",\"Return **subscription** in Singbox format. (Using `Singbox` template) Format which is used by Singbox client application.\",\"Return **subscription** as browser format. The same as on `/info` route.\",\"**Drop** request and return `403` status code.\",\"**Drop** request and return `404` status code.\",\"**Drop** request and return `451` status code.\",\"**Drop** the socket connection.\"]}",
"type": "string",
"enum": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX",
"BROWSER",
"BLOCK",
"STATUS_CODE_404",
"STATUS_CODE_451",
"SOCKET_DROP"
],
"x-enumNames": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX",
"BROWSER",
"BLOCK",
"STATUS_CODE_404",
"STATUS_CODE_451",
"SOCKET_DROP"
]
},
"responseModifications": {
"$ref": "#/components/schemas/ResponseModification"
}
},
"required": [
"name",
"enabled",
"operator",
"conditions",
"responseType"
]
},
"Github": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"clientId": {
"type": "string",
"nullable": true
},
"clientSecret": {
"type": "string",
"nullable": true
},
"allowedEmails": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"enabled",
"clientId",
"clientSecret",
"allowedEmails"
]
},
"Pocketid": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"clientId": {
"type": "string",
"nullable": true
},
"clientSecret": {
"type": "string",
"nullable": true
},
"plainDomain": {
"type": "string",
"nullable": true
},
"allowedEmails": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"enabled",
"clientId",
"clientSecret",
"plainDomain",
"allowedEmails"
]
},
"Keycloak": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"realm": {
"type": "string",
"nullable": true
},
"clientId": {
"type": "string",
"nullable": true
},
"clientSecret": {
"type": "string",
"nullable": true
},
"frontendDomain": {
"type": "string",
"nullable": true
},
"keycloakDomain": {
"type": "string",
"nullable": true
},
"allowedEmails": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"enabled",
"realm",
"clientId",
"clientSecret",
"frontendDomain",
"keycloakDomain",
"allowedEmails"
],
"default": {
"enabled": false,
"realm": null,
"frontendDomain": null,
"keycloakDomain": null,
"clientId": null,
"clientSecret": null,
"allowedEmails": []
}
},
"Generic": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"clientId": {
"type": "string",
"nullable": true
},
"clientSecret": {
"type": "string",
"nullable": true
},
"withPkce": {
"type": "boolean"
},
"authorizationUrl": {
"type": "string",
"nullable": true
},
"tokenUrl": {
"type": "string",
"nullable": true
},
"frontendDomain": {
"type": "string",
"nullable": true
},
"allowedEmails": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"enabled",
"clientId",
"clientSecret",
"withPkce",
"authorizationUrl",
"tokenUrl",
"frontendDomain",
"allowedEmails"
],
"default": {
"enabled": false,
"frontendDomain": null,
"tokenUrl": null,
"clientId": null,
"clientSecret": null,
"withPkce": false,
"authorizationUrl": null,
"allowedEmails": []
}
},
"Telegram": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"clientId": {
"type": "string",
"nullable": true
},
"clientSecret": {
"type": "string",
"nullable": true
},
"allowedIds": {
"type": "array",
"items": {
"type": "string"
}
},
"frontendDomain": {
"type": "string",
"nullable": true
}
},
"required": [
"enabled",
"clientId",
"clientSecret",
"allowedIds",
"frontendDomain"
],
"default": {
"enabled": false,
"clientId": null,
"clientSecret": null,
"allowedIds": [],
"frontendDomain": null
}
},
"PasswordSettings": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
}
},
"required": [
"enabled"
],
"nullable": true
},
"Config": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"viewPosition": {
"type": "integer"
},
"name": {
"type": "string"
},
"config": {
"nullable": true
}
},
"required": [
"uuid",
"viewPosition",
"name",
"config"
]
},
"UserItemInfo": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"id": {
"type": "number"
},
"shortUuid": {
"type": "string"
},
"username": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"ACTIVE",
"DISABLED",
"LIMITED",
"EXPIRED"
],
"x-enumNames": [
"ACTIVE",
"DISABLED",
"LIMITED",
"EXPIRED"
],
"default": "ACTIVE"
},
"trafficLimitBytes": {
"type": "integer",
"default": 0
},
"trafficLimitStrategy": {
"description": "Available reset periods",
"type": "string",
"enum": [
"NO_RESET",
"DAY",
"WEEK",
"MONTH",
"MONTH_ROLLING"
],
"x-enumNames": [
"NO_RESET",
"DAY",
"WEEK",
"MONTH",
"MONTH_ROLLING"
],
"default": "NO_RESET"
},
"expireAt": {
"type": "string",
"format": "date-time"
},
"telegramId": {
"type": "integer",
"nullable": true
},
"email": {
"type": "string",
"format": "email",
"nullable": true
},
"description": {
"type": "string",
"nullable": true
},
"tag": {
"type": "string",
"nullable": true
},
"hwidDeviceLimit": {
"type": "integer",
"nullable": true
},
"externalSquadUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"trojanPassword": {
"type": "string"
},
"vlessUuid": {
"type": "string",
"format": "uuid"
},
"ssPassword": {
"type": "string"
},
"lastTriggeredThreshold": {
"type": "integer",
"default": 0
},
"subRevokedAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"lastTrafficResetAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"subscriptionUrl": {
"type": "string"
},
"activeInternalSquads": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ActiveInternalSquad"
}
},
"userTraffic": {
"$ref": "#/components/schemas/UserTrafficItem"
}
},
"required": [
"uuid",
"id",
"shortUuid",
"username",
"expireAt",
"telegramId",
"email",
"description",
"tag",
"hwidDeviceLimit",
"externalSquadUuid",
"trojanPassword",
"vlessUuid",
"ssPassword",
"subRevokedAt",
"lastTrafficResetAt",
"createdAt",
"updatedAt",
"subscriptionUrl",
"activeInternalSquads",
"userTraffic"
]
},
"Record": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"userUuid": {
"type": "string",
"format": "uuid"
},
"requestAt": {
"type": "string",
"format": "date-time"
},
"requestIp": {
"type": "string",
"nullable": true
},
"userAgent": {
"type": "string",
"nullable": true
}
},
"required": [
"id",
"userUuid",
"requestAt",
"requestIp",
"userAgent"
]
},
"Subscription": {
"type": "object",
"properties": {
"isFound": {
"type": "boolean"
},
"user": {
"$ref": "#/components/schemas/UserItem2"
},
"links": {
"type": "array",
"items": {
"type": "string"
}
},
"ssConfLinks": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"subscriptionUrl": {
"type": "string"
}
},
"required": [
"isFound",
"user",
"links",
"ssConfLinks",
"subscriptionUrl"
]
},
"Template": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"viewPosition": {
"type": "integer"
},
"name": {
"type": "string"
},
"templateType": {
"type": "string",
"enum": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
],
"x-enumNames": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
]
},
"templateJson": {
"nullable": true
},
"encodedTemplateYaml": {
"type": "string",
"nullable": true
}
},
"required": [
"uuid",
"viewPosition",
"name",
"templateType",
"templateJson",
"encodedTemplateYaml"
]
},
"ConfigProfile": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"viewPosition": {
"type": "integer"
},
"name": {
"type": "string"
},
"config": {},
"inbounds": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Inbound"
}
},
"nodes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Node"
}
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"uuid",
"viewPosition",
"name",
"config",
"inbounds",
"nodes",
"createdAt",
"updatedAt"
]
},
"InternalSquad": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"viewPosition": {
"type": "integer"
},
"name": {
"type": "string"
},
"info": {
"$ref": "#/components/schemas/InternalSquadsResponInfoItem"
},
"inbounds": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Inbound"
}
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"uuid",
"viewPosition",
"name",
"info",
"inbounds",
"createdAt",
"updatedAt"
]
},
"ExternalSquad": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"viewPosition": {
"type": "integer"
},
"name": {
"type": "string"
},
"info": {
"$ref": "#/components/schemas/ExternalSquadsResponInfoItem"
},
"templates": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TemplateRef"
}
},
"subscriptionSettings": {
"$ref": "#/components/schemas/SubscriptionSettings"
},
"hostOverrides": {
"$ref": "#/components/schemas/HostOverride"
},
"responseHeaders": {
"additionalProperties": {
"type": "string"
},
"nullable": true
},
"hwidSettings": {
"$ref": "#/components/schemas/HwidSettings"
},
"customRemarks": {
"$ref": "#/components/schemas/CustomRemark"
},
"subpageConfigUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"uuid",
"viewPosition",
"name",
"info",
"templates",
"subscriptionSettings",
"hostOverrides",
"responseHeaders",
"hwidSettings",
"customRemarks",
"subpageConfigUuid",
"createdAt",
"updatedAt"
]
},
"ConfigProfileItem": {
"type": "object",
"properties": {
"activeConfigProfileUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"activeInbounds": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Inbound"
}
}
},
"required": [
"activeConfigProfileUuid",
"activeInbounds"
]
},
"ProviderItem": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"faviconLink": {
"type": "string",
"nullable": true
},
"loginUrl": {
"type": "string",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"uuid",
"name",
"faviconLink",
"loginUrl",
"createdAt",
"updatedAt"
],
"nullable": true
},
"SystemItem": {
"type": "object",
"properties": {
"info": {
"$ref": "#/components/schemas/NodeResponseInfoItem"
},
"stats": {
"$ref": "#/components/schemas/Stat"
}
},
"required": [
"info",
"stats"
],
"nullable": true
},
"Version": {
"type": "object",
"properties": {
"xray": {
"type": "string"
},
"node": {
"type": "string"
}
},
"required": [
"xray",
"node"
],
"nullable": true
},
"TopNode": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"countryCode": {
"type": "string"
},
"color": {
"type": "string"
},
"name": {
"type": "string"
},
"total": {
"type": "number"
}
},
"required": [
"uuid",
"countryCode",
"color",
"name",
"total"
]
},
"NodePlugin": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"viewPosition": {
"type": "integer"
},
"name": {
"type": "string"
},
"pluginConfig": {
"nullable": true
}
},
"required": [
"uuid",
"viewPosition",
"name",
"pluginConfig"
]
},
"InboundItem": {
"type": "object",
"properties": {
"configProfileUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"configProfileInboundUuid": {
"type": "string",
"format": "uuid",
"nullable": true
}
},
"required": [
"configProfileUuid",
"configProfileInboundUuid"
]
},
"Device": {
"type": "object",
"properties": {
"hwid": {
"type": "string"
},
"userUuid": {
"type": "string",
"format": "uuid"
},
"platform": {
"type": "string",
"nullable": true
},
"osVersion": {
"type": "string",
"nullable": true
},
"deviceModel": {
"type": "string",
"nullable": true
},
"userAgent": {
"type": "string",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"hwid",
"userUuid",
"platform",
"osVersion",
"deviceModel",
"userAgent",
"createdAt",
"updatedAt"
]
},
"ByAppItem": {
"type": "object",
"properties": {
"app": {
"type": "string"
},
"count": {
"type": "number"
}
},
"required": [
"app",
"count"
]
},
"Provider": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"faviconLink": {
"type": "string",
"nullable": true
},
"loginUrl": {
"type": "string",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"billingHistory": {
"$ref": "#/components/schemas/BillingHistoryItem"
},
"billingNodes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BillingNode"
}
}
},
"required": [
"uuid",
"name",
"faviconLink",
"loginUrl",
"createdAt",
"updatedAt",
"billingHistory",
"billingNodes"
]
},
"DebugSrrMatcherSettings": {
"description": "{\"markdownDescription\":\"Settings for the **response rules** config. Optional.\"}",
"type": "object",
"properties": {
"disableSubscriptionAccessByPath": {
"description": "{\"markdownDescription\":\"Usually, a user's subscription may also be available via additional paths such as **/json**, **/stash**, or **/mihomo**. If this flag is set to **true**, access via these additional paths will be disabled.\"}",
"type": "boolean"
}
}
},
"PasskeySettings": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"rpId": {
"type": "string",
"nullable": true
},
"origin": {
"type": "string",
"nullable": true
}
},
"required": [
"enabled",
"rpId",
"origin"
],
"nullable": true
},
"Oauth2Settings": {
"type": "object",
"properties": {
"github": {
"$ref": "#/components/schemas/Github"
},
"pocketid": {
"$ref": "#/components/schemas/Pocketid"
},
"yandex": {
"$ref": "#/components/schemas/Github"
},
"keycloak": {
"$ref": "#/components/schemas/Keycloak"
},
"generic": {
"$ref": "#/components/schemas/Generic"
},
"telegram": {
"$ref": "#/components/schemas/Telegram"
}
},
"required": [
"github",
"pocketid",
"yandex"
],
"nullable": true
},
"BrandingSettings": {
"type": "object",
"properties": {
"title": {
"type": "string",
"nullable": true
},
"logoUrl": {
"type": "string",
"format": "uri",
"nullable": true
}
},
"required": [
"title",
"logoUrl"
],
"nullable": true
},
"ReorderRequestItem": {
"type": "object",
"properties": {
"viewPosition": {
"type": "integer"
},
"uuid": {
"type": "string",
"format": "uuid"
}
},
"required": [
"viewPosition",
"uuid"
]
},
"NodeResponseDataItem": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"address": {
"type": "string"
},
"port": {
"type": "integer",
"nullable": true
},
"isConnected": {
"type": "boolean"
},
"isDisabled": {
"type": "boolean"
},
"isConnecting": {
"type": "boolean"
},
"lastStatusChange": {
"type": "string",
"format": "date-time",
"nullable": true
},
"lastStatusMessage": {
"type": "string",
"nullable": true
},
"isTrafficTrackingActive": {
"type": "boolean"
},
"trafficResetDay": {
"type": "integer",
"nullable": true
},
"trafficLimitBytes": {
"type": "number",
"nullable": true
},
"trafficUsedBytes": {
"type": "number",
"nullable": true
},
"notifyPercent": {
"type": "integer",
"nullable": true
},
"viewPosition": {
"type": "integer"
},
"countryCode": {
"type": "string"
},
"consumptionMultiplier": {
"type": "number"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"configProfile": {
"$ref": "#/components/schemas/ConfigProfileItem"
},
"providerUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"provider": {
"$ref": "#/components/schemas/ProviderItem"
},
"activePluginUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"system": {
"$ref": "#/components/schemas/SystemItem"
},
"versions": {
"$ref": "#/components/schemas/Version"
},
"xrayUptime": {
"type": "number"
},
"usersOnline": {
"type": "number"
}
},
"required": [
"uuid",
"name",
"address",
"port",
"isConnected",
"isDisabled",
"isConnecting",
"lastStatusChange",
"lastStatusMessage",
"isTrafficTrackingActive",
"trafficResetDay",
"trafficLimitBytes",
"trafficUsedBytes",
"notifyPercent",
"viewPosition",
"countryCode",
"consumptionMultiplier",
"tags",
"createdAt",
"updatedAt",
"configProfile",
"providerUuid",
"provider",
"activePluginUuid",
"system",
"versions",
"xrayUptime",
"usersOnline"
]
},
"HostItem": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"viewPosition": {
"type": "integer"
},
"remark": {
"type": "string"
},
"address": {
"type": "string"
},
"port": {
"type": "integer"
},
"path": {
"type": "string",
"nullable": true
},
"sni": {
"type": "string",
"nullable": true
},
"host": {
"type": "string",
"nullable": true
},
"alpn": {
"type": "string",
"nullable": true
},
"fingerprint": {
"type": "string",
"nullable": true
},
"isDisabled": {
"type": "boolean",
"default": false
},
"securityLayer": {
"type": "string",
"enum": [
"DEFAULT",
"TLS",
"NONE"
],
"x-enumNames": [
"DEFAULT",
"TLS",
"NONE"
],
"default": "DEFAULT"
},
"xHttpExtraParams": {
"nullable": true
},
"muxParams": {
"nullable": true
},
"sockoptParams": {
"nullable": true
},
"finalMask": {
"nullable": true
},
"inbound": {
"$ref": "#/components/schemas/InboundItem"
},
"serverDescription": {
"type": "string",
"maxLength": 30,
"nullable": true
},
"tag": {
"type": "string",
"nullable": true
},
"isHidden": {
"type": "boolean",
"default": false
},
"overrideSniFromAddress": {
"type": "boolean",
"default": false
},
"keepSniBlank": {
"type": "boolean",
"default": false
},
"vlessRouteId": {
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false,
"maximum": 65535,
"exclusiveMaximum": false,
"nullable": true
},
"allowInsecure": {
"type": "boolean",
"default": false
},
"shuffleHost": {
"type": "boolean"
},
"mihomoX25519": {
"type": "boolean"
},
"nodes": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"xrayJsonTemplateUuid": {
"type": "string",
"format": "uuid",
"nullable": true
},
"excludedInternalSquads": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"excludeFromSubscriptionTypes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
],
"x-enumNames": [
"XRAY_JSON",
"XRAY_BASE64",
"MIHOMO",
"STASH",
"CLASH",
"SINGBOX"
]
}
}
},
"required": [
"uuid",
"viewPosition",
"remark",
"address",
"port",
"path",
"sni",
"host",
"alpn",
"fingerprint",
"xHttpExtraParams",
"muxParams",
"sockoptParams",
"finalMask",
"inbound",
"serverDescription",
"tag",
"vlessRouteId",
"shuffleHost",
"mihomoX25519",
"nodes",
"xrayJsonTemplateUuid",
"excludedInternalSquads"
]
},
"BandwidthLastTwoDays": {
"type": "object",
"properties": {
"current": {
"type": "string"
},
"previous": {
"type": "string"
},
"difference": {
"type": "string"
}
},
"required": [
"current",
"previous",
"difference"
]
},
"ResponseRules": {
"type": "object",
"properties": {
"version": {
"description": "{\"title\":\"Response Rules Config Version\",\"markdownDescription\":\"Version of the **response rules** config. Currently supported version is **1**.\"}",
"type": "string",
"enum": [
"1"
],
"x-enumNames": [
"1"
]
},
"settings": {
"$ref": "#/components/schemas/DebugSrrMatcherSettings"
},
"rules": {
"description": "{\"title\":\"Response Rules\",\"markdownDescription\":\"Array of **response rules**. Rules are evaluated in order and the first rule that matches is applied. If no rule matches, request will be blocked by default.\\n\\n**Example:**\\n```json\\n[\\n {\\n \\\"name\\\": \\\"Blank rule\\\",\\n \\\"description\\\": \\\"Blank rule\\\",\\n \\\"operator\\\": \\\"AND\\\",\\n \\\"enabled\\\": true,\\n \\\"conditions\\\": [],\\n \\\"responseType\\\": \\\"BLOCK\\\",\\n \\\"responseModifications\\\": {\\n \\\"headers\\\": []\\n }\\n }\\n]\\n```\",\"defaultSnippets\":[]}",
"type": "array",
"items": {
"$ref": "#/components/schemas/Rule"
}
}
},
"required": [
"version",
"rules"
]
},
"UserSubscriptionHistory": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"records": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Record"
}
}
},
"required": [
"total",
"records"
]
},
"ConfigProfileRef": {
"type": "object",
"properties": {
"activeConfigProfileUuid": {
"type": "string",
"format": "uuid"
},
"activeInbounds": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"activeConfigProfileUuid",
"activeInbounds"
]
},
"InboundRef": {
"type": "object",
"properties": {
"configProfileUuid": {
"type": "string",
"format": "uuid"
},
"configProfileInboundUuid": {
"type": "string",
"format": "uuid"
}
},
"required": [
"configProfileUuid",
"configProfileInboundUuid"
]
},
"AllHwidDevices": {
"type": "object",
"properties": {
"devices": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Device"
}
},
"total": {
"type": "number"
}
},
"required": [
"devices",
"total"
]
}
}
}
}