{ "swagger": "2.0", "info": { "description": "Sylve is a lightweight GUI for managing Bhyve, Jails, ZFS, networking, and more on FreeBSD.", "title": "Sylve API", "termsOfService": "https://github.com/AlchemillaHQ/Sylve/blob/master/LICENSE", "contact": { "name": "Alchemilla Ventures Pvt. Ltd.", "url": "https://alchemilla.io", "email": "hello@alchemilla.io" }, "license": { "name": "BSD-2-Clause", "url": "https://github.com/AlchemillaHQ/Sylve/blob/master/LICENSE" }, "version": "0.3.0" }, "host": "sylve.lan:8181", "basePath": "/api", "paths": { "/auth/groups": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all managed groups and their public user records", "produces": [ "application/json" ], "tags": [ "Groups" ], "summary": "List groups", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_internal_handlers_auth_PublicGroup" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a managed Unix group with PAM-backed members", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Groups" ], "summary": "Create group", "parameters": [ { "description": "Group creation request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_auth.CreateGroupRequest" } } ], "responses": { "201": { "description": "Group Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_GroupMutationResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/groups/{groupId}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a managed group that is not protected or referenced", "produces": [ "application/json" ], "tags": [ "Groups" ], "summary": "Delete group", "parameters": [ { "type": "integer", "description": "Positive Group ID", "name": "groupId", "in": "path", "required": true } ], "responses": { "200": { "description": "Group Deleted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_GroupMutationResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/groups/{groupId}/members": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace all editable members of a managed group; an empty list removes all supplementary members", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Groups" ], "summary": "Replace group members", "parameters": [ { "type": "integer", "description": "Positive Group ID", "name": "groupId", "in": "path", "required": true }, { "description": "Complete group membership", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_auth.ReplaceGroupMembersRequest" } } ], "responses": { "200": { "description": "Group Members Replaced", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_GroupMutationResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/login": { "post": { "description": "Authenticate an administrator and create a local session", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Login", "parameters": [ { "description": "Login request body", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_auth.LoginRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_SuccessfulLogin" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "429": { "description": "Too Many Requests", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/login/config": { "get": { "description": "Retrieve the public authentication configuration used by the login page", "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Get Login Configuration", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_LoginConfig" } } } } }, "/auth/logout": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Revoke a JWT token", "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Logout", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/passkeys/login/begin": { "post": { "description": "Start a discoverable WebAuthn login ceremony", "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Begin passkey login", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_PasskeyChallengeResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/passkeys/login/finish": { "post": { "description": "Verify a WebAuthn assertion and create a local administrator session", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Finish passkey login", "parameters": [ { "description": "Passkey login completion request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_auth.FinishPasskeyLoginRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_SuccessfulLogin" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/passkeys/register/begin": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Start a WebAuthn registration ceremony for an eligible administrator", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Begin passkey registration", "parameters": [ { "description": "Passkey registration request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_auth.BeginPasskeyRegistrationRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_PasskeyChallengeResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/passkeys/register/finish": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Verify a WebAuthn attestation and save the credential bound to its registration challenge", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Finish passkey registration", "parameters": [ { "description": "Passkey registration completion request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_auth.FinishPasskeyRegistrationRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_auth_PasskeyCredentialInfo" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/sse-tokens": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a short-lived token scoped to the authenticated user's event stream", "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Create SSE token", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_events_CreateSSETokenResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/users": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List public user records, optionally filtered by account source", "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "List users", "parameters": [ { "enum": [ "local", "pam" ], "type": "string", "description": "Account source", "name": "source", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_internal_handlers_auth_PublicUser" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new local Sylve user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Create local user", "parameters": [ { "description": "Local user", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_auth.CreateUserRequest" } } ], "responses": { "201": { "description": "User Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_UserMutationResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/users/capabilities": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Return optional account-management integrations available on this node", "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get user-management capabilities", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_UserCapabilities" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/users/import": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Adopt an existing Unix account as a managed PAM-backed Sylve user without changing its Unix password or group membership", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Import Unix user", "parameters": [ { "description": "Import user settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_auth.ImportUserRequest" } } ], "responses": { "201": { "description": "User Imported", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_UserMutationResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/users/importable": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List eligible Unix accounts that do not yet have a Sylve user record", "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "List importable Unix users", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_auth_ImportableUnixUser" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/users/pam": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create one managed Unix/PAM account and its corresponding Sylve user record, synchronizing the required password and optional Samba credential", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Create PAM User", "parameters": [ { "description": "Create PAM User Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_auth.CreatePamUserRequest" } } ], "responses": { "201": { "description": "PAM User Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_UserMutationResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/users/uid/next": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Return the next available Unix UID in the managed account range", "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get next Unix UID", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_NextUIDResult" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/users/{userId}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the editable representation of a user identified by its positive database ID; a PAM password change synchronizes Unix and Sylve credentials and Samba intent is explicit", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Update user", "parameters": [ { "type": "integer", "description": "User ID", "name": "userId", "in": "path", "required": true }, { "description": "User settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_auth.EditUserRequest" } } ], "responses": { "200": { "description": "User Updated", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_UserMutationResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a user by its positive database ID; PAM-backed users also lose their managed Unix account, home directory, and associated integrations", "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Delete user", "parameters": [ { "type": "integer", "description": "User ID", "name": "userId", "in": "path", "required": true } ], "responses": { "200": { "description": "User Deleted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_UserMutationResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/users/{userId}/passkeys": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List safe passkey metadata for a user, including users no longer eligible for registration; returns an empty list when none are registered", "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "List user passkeys", "parameters": [ { "minimum": 1, "type": "integer", "description": "Positive User ID", "name": "userId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_auth_PasskeyCredentialInfo" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/auth/users/{userId}/passkeys/{credentialId}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete one passkey credential owned by a user", "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Delete user passkey", "parameters": [ { "minimum": 1, "type": "integer", "description": "Positive User ID", "name": "userId", "in": "path", "required": true }, { "type": "string", "description": "URL-encoded passkey credential ID", "name": "credentialId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_auth_PasskeyCredentialInfo" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/basic/initialize": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Initialize Sylve with the provided configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Basic" ], "summary": "Initialize Sylve", "parameters": [ { "description": "Initialization Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_system.InitializeRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "422": { "description": "Unprocessable Entity", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/basic/settings": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the basic settings of Sylve", "produces": [ "application/json" ], "tags": [ "Basic" ], "summary": "Get Basic Settings", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_BasicSettings" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/basic/system/reboot": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Initiate a system reboot", "produces": [ "application/json" ], "tags": [ "Basic" ], "summary": "Initiate System Reboot", "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/certificates": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all configured public TLS certificates without exposing stored PEM material", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Certificates" ], "summary": "List TLS certificates", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_certificates_CertificateView" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create an imported, self-signed, Let's Encrypt, or Sylve.app Managed TLS certificate", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Certificates" ], "summary": "Create a TLS certificate", "parameters": [ { "description": "Certificate settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_certificates.CertificateInput" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_certificates_CertificateView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Bad Gateway", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/certificates/domain-check": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Compare a DNS hostname's resolved addresses with public addresses detected for this node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Certificates" ], "summary": "Check TLS certificate domain resolution", "parameters": [ { "type": "string", "description": "DNS hostname", "name": "domain", "in": "query", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_certificates_DomainCheckResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Bad Gateway", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/certificates/{id}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete an existing TLS certificate that is neither active nor pending activation", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Certificates" ], "summary": "Delete a TLS certificate", "parameters": [ { "minimum": 1, "type": "integer", "description": "Certificate ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Bad Gateway", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update the settings or material of an existing TLS certificate", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Certificates" ], "summary": "Update a TLS certificate", "parameters": [ { "minimum": 1, "type": "integer", "description": "Certificate ID", "name": "id", "in": "path", "required": true }, { "description": "Certificate settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_certificates.CertificateInput" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_certificates_CertificateView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Bad Gateway", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/certificates/{id}/activate": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Select a ready TLS certificate to become active after Sylve restarts", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Certificates" ], "summary": "Schedule TLS certificate activation", "parameters": [ { "minimum": 1, "type": "integer", "description": "Certificate ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_certificates_CertificateView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Cancel the pending activation of the specified TLS certificate", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Certificates" ], "summary": "Cancel pending TLS certificate activation", "parameters": [ { "minimum": 1, "type": "integer", "description": "Certificate ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/certificates/{id}/archive": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Download a ZIP archive containing the certificate chain and private key", "consumes": [ "application/json" ], "produces": [ "application/zip" ], "tags": [ "Certificates" ], "summary": "Download a TLS certificate archive", "parameters": [ { "minimum": 1, "type": "integer", "description": "Certificate ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Certificate archive", "schema": { "type": "file" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/certificates/{id}/renew": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Renew an eligible Let's Encrypt or Sylve.app Managed TLS certificate", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Certificates" ], "summary": "Renew a TLS certificate", "parameters": [ { "minimum": 1, "type": "integer", "description": "Certificate ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Renewed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_certificates_CertificateView" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_certificates_CertificateView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Bad Gateway", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/certificates/{id}/retry": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Start a new issuance attempt for a failed Sylve.app Managed TLS certificate", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Certificates" ], "summary": "Retry managed TLS certificate issuance", "parameters": [ { "minimum": 1, "type": "integer", "description": "Certificate ID", "name": "id", "in": "path", "required": true } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_certificates_CertificateView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Bad Gateway", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get cluster details with information about RAFT nodes too", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Get Cluster", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_cluster_ClusterDetails" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a cluster given a bootstrapping node IP", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Create Cluster", "parameters": [ { "description": "Create Cluster Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_cluster.CreateClusterRequest" } } ], "responses": { "201": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_cluster_GuestIdentityInventoryReport" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/accept-join": { "post": { "security": [ { "ClusterKeyAuth": [] } ], "description": "Accept a join request from a cluster node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Accept Join", "parameters": [ { "description": "Accept Join Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_cluster.AcceptJoinRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_cluster_GuestIdentityInventoryReport" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_cluster_GuestIdentityInventoryReport" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/events": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List recent backup events from the local or selected cluster node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "List Backup Events", "parameters": [ { "type": "integer", "default": 200, "description": "Maximum events (1-500)", "name": "limit", "in": "query" }, { "type": "integer", "description": "Backup Job ID", "name": "jobId", "in": "query" }, { "type": "string", "description": "Cluster node ID", "name": "nodeId", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_BackupEvent" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Cluster Node Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Node Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Forwarding Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Node Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/events/remote": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List paginated backup events for the remote table from the local or selected cluster node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "List Backup Events with Pagination", "parameters": [ { "type": "integer", "default": 1, "description": "Page number", "name": "page", "in": "query" }, { "type": "integer", "default": 25, "description": "Page size (1-100)", "name": "size", "in": "query" }, { "type": "integer", "description": "Backup Job ID", "name": "jobId", "in": "query" }, { "type": "string", "description": "Cluster node ID", "name": "nodeId", "in": "query" }, { "type": "string", "description": "Search source, target, status, or error", "name": "search", "in": "query" }, { "type": "string", "description": "Sort field", "name": "sort[0][field]", "in": "query" }, { "type": "string", "description": "Sort direction (asc or desc)", "name": "sort[0][dir]", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_zelta_BackupEventsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Cluster Node Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Node Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Forwarding Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Node Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/events/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a backup event from the local or selected cluster node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Get a Backup Event", "parameters": [ { "type": "integer", "description": "Backup Event ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Cluster node ID", "name": "nodeId", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_cluster_BackupEvent" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Event or Cluster Node Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Node Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Forwarding Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Node Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/events/{id}/progress": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get live progress for a backup event from the local or selected cluster node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Get Backup Event Progress", "parameters": [ { "type": "integer", "description": "Backup Event ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Cluster node ID", "name": "nodeId", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_zelta_BackupEventProgress" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Event or Cluster Node Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Node Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Forwarding Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Node Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/jobs": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List backup jobs, optionally filtered by target or guest", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "List Backup Jobs", "parameters": [ { "type": "integer", "description": "Backup Target ID", "name": "targetId", "in": "query" }, { "type": "string", "description": "Guest type (vm or jail)", "name": "guestType", "in": "query" }, { "type": "integer", "description": "Guest ID", "name": "guestId", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_BackupJob" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Cluster consensus unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a scheduled backup job", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Create a Backup Job", "parameters": [ { "description": "Backup Job Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_cluster.BackupJobReq" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Target Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/jobs/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update a scheduled backup job", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Update a Backup Job", "parameters": [ { "type": "integer", "description": "Backup Job ID", "name": "id", "in": "path", "required": true }, { "description": "Backup Job Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_cluster.BackupJobReq" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Job or Target Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a backup job when it is not running", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Delete a Backup Job", "parameters": [ { "type": "integer", "description": "Backup Job ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Job Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Backup Job Running", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Cluster consensus unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/jobs/{id}/restore": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Queue restoration of a snapshot produced by a backup job", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Restore a Backup Job Snapshot", "parameters": [ { "type": "integer", "description": "Backup Job ID", "name": "id", "in": "path", "required": true }, { "description": "Restore Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_cluster.RestoreBackupJobRequest" } } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Job or Runner Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Restore Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Runner Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Runner Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/jobs/{id}/run": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Queue an immediate run of a backup job on its assigned runner", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Run a Backup Job", "parameters": [ { "type": "integer", "description": "Backup Job ID", "name": "id", "in": "path", "required": true } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Job or Runner Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Backup Job Already Running", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Runner Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Runner Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/jobs/{id}/snapshots": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List restorable snapshots produced by a backup job", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "List Backup Job Snapshots", "parameters": [ { "type": "integer", "description": "Backup Job ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_zelta_SnapshotInfo" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Job Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Target Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Local Key Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Target Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/targets": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List backup targets managed by the cluster", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "List Backup Targets", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_BackupTarget" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Cluster consensus unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Validate and create a cluster backup target", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Create a Backup Target", "parameters": [ { "description": "Backup Target Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_cluster.BackupTargetReq" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/targets/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update backup target metadata, lifecycle state, or managed SSH key", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Update a Backup Target", "parameters": [ { "type": "integer", "description": "Backup Target ID", "name": "id", "in": "path", "required": true }, { "description": "Backup Target Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_cluster.BackupTargetReq" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Target Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a disabled backup target that has no active dependencies", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Delete a Backup Target", "parameters": [ { "type": "integer", "description": "Backup Target ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Target Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/targets/{id}/datasets": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List restorable datasets on a backup target", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "List Backup Target Datasets", "parameters": [ { "type": "integer", "description": "Backup Target ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_zelta_BackupTargetDatasetInfo" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Target Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Backup Target Disabled", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Target Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Local Key Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Target Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/targets/{id}/datasets/jail-metadata": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Read jail metadata for a dataset on a backup target", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Get Backup Jail Metadata", "parameters": [ { "type": "integer", "description": "Backup Target ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Remote jail dataset", "name": "dataset", "in": "query", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_zelta_BackupJailMetadataInfo" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Target Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Backup Target Disabled", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Target Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Local Key Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Target Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/targets/{id}/datasets/snapshots": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List restorable snapshots for a dataset on a backup target", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "List Backup Target Dataset Snapshots", "parameters": [ { "type": "integer", "description": "Backup Target ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Remote dataset", "name": "dataset", "in": "query", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_zelta_SnapshotInfo" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Target Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Backup Target Disabled", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Target Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Local Key Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Target Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/targets/{id}/datasets/vm-metadata": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Read virtual machine metadata for a dataset on a backup target", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Get Backup VM Metadata", "parameters": [ { "type": "integer", "description": "Backup Target ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Remote virtual machine dataset", "name": "dataset", "in": "query", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_zelta_BackupVMMetadataInfo" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Target Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Backup Target Disabled", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Target Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Local Key Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Target Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/targets/{id}/readiness": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get per-node readiness for a backup target", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Get Backup Target Readiness", "parameters": [ { "type": "integer", "description": "Backup Target ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_BackupTargetNodeReadinessStatus" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Target Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Cluster consensus unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/targets/{id}/restore": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Queue an idempotent out-of-band restore from a backup target, optionally on another cluster node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Restore a Backup Target Dataset", "parameters": [ { "type": "integer", "description": "Backup Target ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Idempotency key used when operationId is omitted", "name": "Idempotency-Key", "in": "header" }, { "description": "Restore Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_cluster.RestoreBackupTargetRequest" } } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Target or Restore Node Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Restore Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Node Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Node Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/targets/{id}/running-jobs": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List IDs of jobs currently running against a backup target", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "List Running Jobs for a Backup Target", "parameters": [ { "type": "integer", "description": "Backup Target ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_uint" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Target Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Cluster consensus unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/backups/targets/{id}/validate": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Validate backup target readiness from a selected cluster node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Backups" ], "summary": "Validate a Backup Target", "parameters": [ { "type": "integer", "description": "Backup Target ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Validation node ID; required when clustered", "name": "nodeId", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Backup Target Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Validation unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/join": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Join an existing cluster", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Join Cluster", "parameters": [ { "description": "Join Cluster Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_cluster.JoinClusterRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_cluster_GuestIdentityInventoryReport" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/join-key": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Reveal the enabled cluster key to a local administrator for node enrollment", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Reveal Cluster Join Key", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_cluster_JoinKeyResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Cluster join key unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/nodes": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get all nodes in the cluster", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Get All Cluster Nodes", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_ClusterNode" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/notes": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get all notes stored in the cluster", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Get All Cluster Notes", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_ClusterNote" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new note with a 3-128 character title and content of at least 3 characters", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Create a New Cluster Note", "parameters": [ { "description": "Create Note Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal.NoteRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Cluster leadership changed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Cluster consensus unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/notes/bulk-delete": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Delete the exact requested non-empty set of unique positive note IDs", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Bulk Delete Cluster Notes", "parameters": [ { "description": "Bulk Delete Notes Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal.BulkDeleteRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "One or more notes not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Cluster leadership changed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Cluster consensus unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/notes/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update an existing note by positive ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Update a Cluster Note", "parameters": [ { "minimum": 1, "type": "integer", "description": "Positive note ID", "name": "id", "in": "path", "required": true }, { "description": "Update Note Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal.NoteRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Note Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Cluster leadership changed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Cluster consensus unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a note from the cluster by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Delete a Cluster Note", "parameters": [ { "minimum": 1, "type": "integer", "description": "Positive note ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Note Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Cluster leadership changed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Cluster consensus unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/replication/events": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List replication events from the local or selected cluster node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Replication" ], "summary": "List Replication Events", "parameters": [ { "type": "integer", "default": 200, "description": "Maximum events to return (1-500)", "name": "limit", "in": "query" }, { "type": "integer", "description": "Replication Policy ID", "name": "policyId", "in": "query" }, { "type": "string", "description": "Cluster node ID", "name": "nodeId", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_ReplicationEvent" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Cluster Node Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Node Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Forwarding Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Node Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/replication/events/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get one local or transition replication event from the local or selected cluster node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Replication" ], "summary": "Get a Replication Event", "parameters": [ { "type": "integer", "description": "Replication Event ID", "name": "id", "in": "path", "required": true }, { "enum": [ "local", "transition" ], "type": "string", "description": "Event scope", "name": "scope", "in": "query" }, { "type": "string", "description": "Cluster node ID", "name": "nodeId", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_cluster_ReplicationEvent" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Replication Event or Cluster Node Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Node Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Forwarding Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Node Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/replication/events/{id}/progress": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get live progress for a replication event from the local or selected cluster node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Replication" ], "summary": "Get Replication Event Progress", "parameters": [ { "type": "integer", "description": "Replication Event ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Cluster node ID", "name": "nodeId", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_zelta_ReplicationEventProgress" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Replication Event or Cluster Node Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Node Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Node Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/replication/policies": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List cluster replication policies and their current HA state", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Replication" ], "summary": "List Replication Policies", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_ReplicationPolicy" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a replication policy for a VM or jail", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Replication" ], "summary": "Create a Replication Policy", "parameters": [ { "description": "Replication Policy Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_cluster.ReplicationPolicyReq" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Guest or Cluster Node Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Leader Forwarding Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Leader Forwarding Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/replication/policies/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update one replication policy while preserving its ownership and transition state", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Replication" ], "summary": "Update a Replication Policy", "parameters": [ { "type": "integer", "description": "Replication Policy ID", "name": "id", "in": "path", "required": true }, { "description": "Replication Policy Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_cluster.ReplicationPolicyReq" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Policy, Guest, or Cluster Node Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Leader Forwarding Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Leader Forwarding Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a replication policy after fencing it and confirming cluster-wide cleanup", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Replication" ], "summary": "Delete a Replication Policy", "parameters": [ { "type": "integer", "description": "Replication Policy ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Replication Policy Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Leader Forwarding Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Leader Forwarding Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/replication/policies/{id}/failover": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Queue a safe or forced failover for a replication policy", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Replication" ], "summary": "Fail Over a Replication Policy", "parameters": [ { "type": "integer", "description": "Replication Policy ID", "name": "id", "in": "path", "required": true }, { "description": "Failover Options", "name": "request", "in": "body", "schema": { "$ref": "#/definitions/internal_handlers_cluster.ReplicationFailoverRequest" } } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Replication Policy or Cluster Node Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Leader Forwarding Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Leader Forwarding Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/replication/policies/{id}/run": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Queue an immediate run for a replication policy on its active node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Replication" ], "summary": "Run a Replication Policy Now", "parameters": [ { "type": "integer", "description": "Replication Policy ID", "name": "id", "in": "path", "required": true } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Replication Policy Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Remote Node Failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "504": { "description": "Remote Node Timeout", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/reset-node": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Reset a Raft node by shutting it down and cleaning up its state", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Reset Raft Node", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/resources": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Fetch jails \u0026 VMs for each cluster node (live)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Get Cluster Resources (per node)", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_cluster_NodeResources" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/cluster/resync-state": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Audits every Raft member and rebuilds divergent followers one at a time", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Resync Cluster State", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_cluster_ClusterStateResyncResult" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict with partial audit/repair result", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_cluster_ClusterStateResyncResult" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/disk": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all disk devices on the system", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Disk" ], "summary": "List disk devices", "parameters": [ { "enum": [ "full", "none" ], "type": "string", "default": "full", "description": "S.M.A.R.T. collection mode", "name": "smart", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_disk_Disk" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/disk/partitions/{partition}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a partition on a disk device", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Disk" ], "summary": "Delete partition", "parameters": [ { "type": "string", "description": "Partition device", "name": "partition", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/disk/smart/self-test": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get S.M.A.R.T. self-test capabilities, status, and results for a physical disk", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Disk" ], "summary": "Get S.M.A.R.T. self-test information", "parameters": [ { "type": "string", "description": "Physical disk device", "name": "device", "in": "query", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_disk_DiskSelfTestInfo" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "422": { "description": "Unprocessable Entity", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Start a supported S.M.A.R.T. self-test on a physical disk", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Disk" ], "summary": "Start a S.M.A.R.T. self-test", "parameters": [ { "description": "S.M.A.R.T. self-test request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_disk.DiskSelfTestRequest" } } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_disk_DiskSelfTestInfo" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "422": { "description": "Unprocessable Entity", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/disk/smart/self-test/abort": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Request that the active S.M.A.R.T. self-test on a physical disk be aborted", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Disk" ], "summary": "Abort a S.M.A.R.T. self-test", "parameters": [ { "description": "S.M.A.R.T. self-test abort request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_disk.DiskActionRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_disk_DiskSelfTestInfo" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "422": { "description": "Unprocessable Entity", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/disk/smart/self-test/schedules": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all configured S.M.A.R.T. self-test schedules", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Disk" ], "summary": "List S.M.A.R.T. self-test schedules", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_disk_SelfTestScheduleView" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create and validate a scheduled S.M.A.R.T. self-test for a physical disk", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Disk" ], "summary": "Create a S.M.A.R.T. self-test schedule", "parameters": [ { "description": "S.M.A.R.T. self-test schedule", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_disk.SelfTestScheduleInput" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_disk_SelfTestScheduleView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "422": { "description": "Unprocessable Entity", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/disk/smart/self-test/schedules/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace a configured S.M.A.R.T. self-test schedule", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Disk" ], "summary": "Update a S.M.A.R.T. self-test schedule", "parameters": [ { "type": "integer", "description": "Schedule ID", "name": "id", "in": "path", "required": true }, { "description": "S.M.A.R.T. self-test schedule", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_disk.SelfTestScheduleInput" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_disk_SelfTestScheduleView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "422": { "description": "Unprocessable Entity", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a configured S.M.A.R.T. self-test schedule", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Disk" ], "summary": "Delete a S.M.A.R.T. self-test schedule", "parameters": [ { "type": "integer", "description": "Schedule ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/disk/{device}/partition-table": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Initialize a disk with a GPT partition table", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Disk" ], "summary": "Initialize GPT", "parameters": [ { "type": "string", "description": "Physical disk device", "name": "device", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Remove the partition table and partition metadata from a physical disk. This does not securely erase all disk data.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Disk" ], "summary": "Clear a disk partition table", "parameters": [ { "type": "string", "description": "Physical disk device", "name": "device", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/disk/{device}/partitions": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create one or more GPT partitions on a physical disk", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Disk" ], "summary": "Create disk partitions", "parameters": [ { "type": "string", "description": "Physical disk device", "name": "device", "in": "path", "required": true }, { "description": "Partition sizes in bytes", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_disk.DiskPartitionRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/dynamic-dns/entries": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all configured Dynamic DNS entries", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Dynamic DNS" ], "summary": "List Dynamic DNS entries", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_dynamicdns_EntryView" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create and validate a Dynamic DNS entry", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Dynamic DNS" ], "summary": "Create a Dynamic DNS entry", "parameters": [ { "description": "Dynamic DNS entry", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_dynamicdns.EntryInput" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_dynamicdns_EntryView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Bad Gateway", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/dynamic-dns/entries/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update and validate an existing Dynamic DNS entry", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Dynamic DNS" ], "summary": "Update a Dynamic DNS entry", "parameters": [ { "minimum": 1, "type": "integer", "description": "Dynamic DNS entry ID", "name": "id", "in": "path", "required": true }, { "description": "Dynamic DNS entry", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_dynamicdns.EntryInput" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_dynamicdns_EntryView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Bad Gateway", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete an existing Dynamic DNS entry", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Dynamic DNS" ], "summary": "Delete a Dynamic DNS entry", "parameters": [ { "minimum": 1, "type": "integer", "description": "Dynamic DNS entry ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/dynamic-dns/entries/{id}/sync": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Resolve and publish the current addresses for a Dynamic DNS entry", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Dynamic DNS" ], "summary": "Synchronize a Dynamic DNS entry", "parameters": [ { "minimum": 1, "type": "integer", "description": "Dynamic DNS entry ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_dynamicdns_EntryView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/events/stream": { "get": { "description": "Open a long-lived event stream using a short-lived SSE query capability", "produces": [ "text/event-stream" ], "tags": [ "Events" ], "summary": "Subscribe to server-sent events", "parameters": [ { "type": "string", "description": "Short-lived SSE capability issued by POST /auth/sse-tokens", "name": "sse_token", "in": "query", "required": true } ], "responses": { "200": { "description": "Server-sent event stream", "schema": { "type": "string" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/health/basic": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the system's basic health information", "produces": [ "application/json" ], "tags": [ "Health" ], "summary": "Basic health check", "parameters": [ { "type": "string", "description": "Cluster key authentication", "name": "X-Cluster-Key", "in": "header" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/health/http": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Check whether the system's HTTP API is reachable", "tags": [ "Health" ], "summary": "HTTP health check", "responses": { "200": { "description": "OK" } } } }, "/info/audit-records": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get the latest audit records", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get Audit Records", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_info_AuditRecord" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/basic": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get the basic information about the system", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get Basic Info", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_BasicInfo" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/cpu": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves real-time CPU info", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get Current CPU information", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_CPUInfo" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/cpu/historical": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves historical CPU info", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get Historical CPU information", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_info_CPU" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/network-interfaces/historical": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves historical Network info", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get Historical Network information", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_info_HistoricalNetworkInterface" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/node": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get the node information about the system (mainly for cluster stuff)", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get Node Info", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_NodeInfo" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/notes": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get all notes stored in the database", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get All Notes", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_info_Note" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Add a new note to the database", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Create a new note", "parameters": [ { "description": "Note", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal.NoteRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_info_Note" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete multiple notes from the database by their IDs", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Bulk delete notes", "parameters": [ { "type": "array", "items": { "type": "integer" }, "collectionFormat": "multi", "description": "Note IDs", "name": "ids", "in": "query", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Invalid note IDs", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/notes/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update a note in the database by its ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Update a note by ID", "parameters": [ { "minimum": 1, "type": "integer", "description": "Note ID", "name": "id", "in": "path", "required": true }, { "description": "Note", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal.NoteRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Invalid note ID", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Note not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a note from the database by its ID", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Delete a note by ID", "parameters": [ { "minimum": 1, "type": "integer", "description": "Note ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Invalid note ID", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Note not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/ram": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get the RAM information about the system", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get RAM Info", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_RAMInfo" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/ram/historical": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves historical RAM info", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get Historical RAM information", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_info_RAM" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/summary/history": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves the complete CPU, RAM, and network history used by the node summary page", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get node summary chart history", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_SummaryHistory" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/summary/history/delta": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves CPU, RAM, and network rows newer than the supplied per-series cursors", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get node summary chart history deltas", "parameters": [ { "minimum": 0, "type": "integer", "description": "Last received CPU row ID", "name": "cpuAfter", "in": "query", "required": true }, { "minimum": 0, "type": "integer", "description": "Last received RAM row ID", "name": "ramAfter", "in": "query", "required": true }, { "minimum": 0, "type": "integer", "description": "Last received network row ID", "name": "networkAfter", "in": "query", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_SummaryHistory" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/swap": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get the Swap information about the system", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get Swap Info", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_SwapInfo" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/swap/historical": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves historical Swap info", "produces": [ "application/json" ], "tags": [ "Info" ], "summary": "Get Historical Swap information", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_info_Swap" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/info/terminal": { "get": { "description": "Upgrade the connection to an authenticated host terminal WebSocket", "tags": [ "Info" ], "summary": "Open a host terminal WebSocket", "parameters": [ { "type": "string", "description": "Hex-encoded WebSocket authentication payload", "name": "auth", "in": "query", "required": true } ], "responses": { "101": { "description": "Switching Protocols", "schema": { "type": "string" } }, "400": { "description": "WebSocket upgrade failed", "schema": { "type": "string" } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/intra-cluster/remove-peer": { "post": { "security": [ { "ClusterTokenAuth": [] } ], "description": "Remove a peer from the cluster", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Remove Peer", "parameters": [ { "description": "Remove Peer Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_cluster.RemovePeerRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Peer owns cluster resources", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_cluster_PeerRemovalConflict" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/intra-cluster/sync-health": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Internal endpoint used by the Raft Leader to broadcast cluster health to followers", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster Internal" ], "summary": "Sync Cluster Health", "parameters": [ { "description": "Array of node health states", "name": "payload", "in": "body", "required": true, "schema": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_cluster.NodeHealthSync" } } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/iscsi/initiators": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve all configured iSCSI initiators", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "List iSCSI initiators", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_iscsi_ISCSIInitiator" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create an iSCSI initiator and regenerate the initiator configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "Create an iSCSI initiator", "parameters": [ { "description": "iSCSI initiator settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_iscsi.ISCSIInitiatorRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/iscsi/initiators/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update an existing iSCSI initiator and regenerate the initiator configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "Update an iSCSI initiator", "parameters": [ { "minimum": 1, "type": "integer", "description": "Initiator ID", "name": "id", "in": "path", "required": true }, { "description": "iSCSI initiator settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_iscsi.ISCSIInitiatorRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete an existing iSCSI initiator and regenerate the initiator configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "Delete an iSCSI initiator", "parameters": [ { "minimum": 1, "type": "integer", "description": "Initiator ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/iscsi/initiators/{id}/connect": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Attempt to connect the configured iSCSI initiator by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "Connect an iSCSI initiator", "parameters": [ { "minimum": 1, "type": "integer", "description": "Initiator ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/iscsi/status": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the runtime connection state of configured iSCSI initiator targets", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "Get iSCSI initiator status", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-map_string_string" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/iscsi/target-sessions": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the active connection count for each iSCSI target", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "List iSCSI target sessions", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-map_string_int" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/iscsi/targets": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve all configured iSCSI targets with their portals and LUNs", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "List iSCSI targets", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_iscsi_ISCSITarget" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create an iSCSI target and regenerate the target configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "Create an iSCSI target", "parameters": [ { "description": "iSCSI target settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_iscsi.ISCSITargetRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/iscsi/targets/{targetId}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update an existing iSCSI target and regenerate the target configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "Update an iSCSI target", "parameters": [ { "minimum": 1, "type": "integer", "description": "Target ID", "name": "targetId", "in": "path", "required": true }, { "description": "iSCSI target settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_iscsi.ISCSITargetRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete an iSCSI target and its portals and LUNs, then regenerate the target configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "Delete an iSCSI target", "parameters": [ { "minimum": 1, "type": "integer", "description": "Target ID", "name": "targetId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/iscsi/targets/{targetId}/luns": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Add a ZFS volume-backed LUN to an existing iSCSI target and regenerate the target configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "Add an iSCSI target LUN", "parameters": [ { "minimum": 1, "type": "integer", "description": "Target ID", "name": "targetId", "in": "path", "required": true }, { "description": "iSCSI target LUN settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_iscsi.ISCSITargetLUNRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/iscsi/targets/{targetId}/luns/{lunId}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Remove an existing iSCSI target LUN and regenerate the target configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "Remove an iSCSI target LUN", "parameters": [ { "minimum": 1, "type": "integer", "description": "Target ID", "name": "targetId", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "LUN ID", "name": "lunId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/iscsi/targets/{targetId}/portals": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Add a portal to an existing iSCSI target and regenerate the target configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "Add an iSCSI target portal", "parameters": [ { "minimum": 1, "type": "integer", "description": "Target ID", "name": "targetId", "in": "path", "required": true }, { "description": "iSCSI target portal settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_iscsi.ISCSITargetPortalRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/iscsi/targets/{targetId}/portals/{portalId}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Remove an existing iSCSI target portal and regenerate the target configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "iSCSI" ], "summary": "Remove an iSCSI target portal", "parameters": [ { "minimum": 1, "type": "integer", "description": "Target ID", "name": "targetId", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "Portal ID", "name": "portalId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve all configured jails", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "List Jails", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_jail_Jail" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new jail with the provided configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Create a new Jail", "parameters": [ { "description": "Create Jail Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.CreateJailRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_jail_JailCreateResponse" }, "headers": { "Location": { "type": "string", "description": "/api/jail/{ctid}" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/bootstraps": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all supported pkgbase bootstrap entries for a pool, with their current install status", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "List bootstraps", "parameters": [ { "type": "string", "description": "Pool name", "name": "pool", "in": "query", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_jail_BootstrapEntry" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Queue a pkgbase bootstrap for a pool, version, and type, or return the existing completed member without starting duplicate work", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Create bootstrap", "parameters": [ { "description": "Bootstrap Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.BootstrapRequest" } } ], "responses": { "200": { "description": "Already Completed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_BootstrapCreateResult" }, "headers": { "Location": { "type": "string", "description": "/api/jail/bootstraps/{name}?pool={pool}" } } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_BootstrapCreateResult" }, "headers": { "Location": { "type": "string", "description": "/api/jail/bootstraps/{name}?pool={pool}" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/bootstraps/{name}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Idempotently destroy one exact inactive pkgbase bootstrap dataset and remove its state record", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Delete bootstrap", "parameters": [ { "type": "string", "description": "Pool name", "name": "pool", "in": "query", "required": true }, { "type": "string", "description": "Canonical bootstrap name (e.g. 15-0-Base)", "name": "name", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_BootstrapDeleteResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/simple": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the lightweight projection of all configured jails", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "List Jails (Simple)", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_jail_SimpleList" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/simple/{ctid}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the lightweight projection of a jail by its CTID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Get a Jail (Simple)", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_SimpleList" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/templates": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the jail template collection using its simple list representation", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "List jail templates", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_jail_SimpleTemplateList" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/templates/{templateId}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve a jail template by its template ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Get a jail template", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail Template ID", "name": "templateId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_jail_JailTemplate" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a jail template and its stored dataset when no jail creation is active", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Delete a jail template", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail Template ID", "name": "templateId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/templates/{templateId}/jails": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Validate and queue creation of one or more jails from a jail template", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Create jails from a template", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail Template ID", "name": "templateId", "in": "path", "required": true }, { "description": "Jail template instantiation request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_jail.CreateFromTemplateRequest" } } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_jail_JailTemplateInstantiationTaskResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve a jail by its CTID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Get a Jail", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_jail_Jail" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a jail by its CTID, optionally deleting unused MAC objects and its root filesystem", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Delete a Jail", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "type": "boolean", "description": "Delete unused jail MAC objects", "name": "deletemacs", "in": "query", "required": true }, { "type": "boolean", "description": "Delete the jail root filesystem", "name": "deleterootfs", "in": "query", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_DeleteJailResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/actions/{action}": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Queue a start, stop, or restart action for a jail by its CTID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Queue a Jail lifecycle action", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "enum": [ "start", "stop", "restart" ], "type": "string", "description": "Lifecycle action", "name": "action", "in": "path", "required": true } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_jail_JailActionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/console": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Validate that the jail console is available and upgrade to an authenticated interactive WebSocket session", "tags": [ "Jail" ], "summary": "Open a jail console WebSocket", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "type": "string", "description": "Hex-encoded WebSocket authentication payload", "name": "auth", "in": "query", "required": true } ], "responses": { "101": { "description": "Switching Protocols", "schema": { "type": "string" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Jail Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/description": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update the description of a jail by its CTID; an empty description clears it", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Edit a Jail's description", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Edit Jail Description Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.JailEditDescRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/hardware/cpu": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update the persisted CPU-core limit for a jail and apply it immediately when the jail is running", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Update jail CPU limit", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "CPU limit request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.JailUpdateCPURequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_JailHardwareResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/hardware/ram": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update the persisted RAM limit for a jail and apply it immediately when the jail is running", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Update jail RAM limit", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "RAM limit request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.JailUpdateMemoryRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_JailHardwareResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/hardware/resource-limits": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Enable or disable persisted RAM and CPU limits for a jail and reconcile the live runtime when it is running", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Set jail resource limits", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Resource-limit state request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.JailUpdateResourceLimitsRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_JailHardwareResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/logs": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the last 512 console-log lines for a jail by CTID", "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Get jail logs", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_jail_JailLogsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Jail Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/migrations": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Validate and queue an asynchronous migration of a jail to another cluster node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Queue a Jail migration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Migration target", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_migration.MigrateGuestRequest" } } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_migration_MigrationTaskResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/name": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update the name of a jail by its CTID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Edit a Jail's name", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Edit Jail Name Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.JailEditNameRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/network/inheritance": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Set IPv4 and IPv6 host-network inheritance for an inactive jail. Enabling either protocol removes the jail's attached network records.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Set jail network inheritance", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Network inheritance request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.SetInheritanceRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_JailNetworkInheritanceResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/networks": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a network attachment for an inactive jail. The jail must not inherit host networking.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Attach a network to a jail", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Network attachment request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.AddJailNetworkRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_jail_Network" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/networks/{networkId}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a network attachment that belongs to an inactive jail", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Detach a network from a jail", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "Network attachment ID", "name": "networkId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Partially update a network attachment belonging to an inactive jail. Omitted fields are preserved.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Update a jail network", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "Network attachment ID", "name": "networkId", "in": "path", "required": true }, { "description": "Network update request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.EditJailNetworkRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_jail_Network" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/options/additional-options": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace intentionally raw user-defined jail.conf options; an explicit empty string removes the managed block", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Replace additional jail.conf options", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Additional jail.conf options", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.ModifyAdditionalOptionsRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/options/allowed-options": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the complete normalized allow.* option list; an explicit empty array clears every managed allowed option", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Replace allowed jail options", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Allowed options", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.ModifyAllowedOptionsRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/options/boot-order": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace whether a jail starts at boot and its relative start order; explicit false and zero values are preserved", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Replace jail automatic-start configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Automatic-start configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.ModifyBootOrderRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/options/devfs-rules": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the jail-specific DevFS rules; an explicit empty string removes the custom rules and restores the default ruleset", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Replace jail DevFS rules", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "DevFS rules", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.ModifyDevFSRulesRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/options/fstab": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the jail fstab document; an explicit empty string removes the managed fstab file and jail.conf wiring", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Replace jail fstab configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Fstab document", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.ModifyFstabRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/options/lifecycle-hooks": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace all six jail exec.* lifecycle-hook phases; every phase, enabled flag, and script must be supplied, and disabled empty scripts explicitly clear a phase", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Replace jail lifecycle hooks", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Lifecycle hooks", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.ModifyLifecycleHooksRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/options/metadata": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the jail meta and env values after safely escaping them for jail.conf; explicit empty strings clear either value", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Replace jail metadata", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Metadata values", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.ModifyMetadataRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/options/resolv-conf": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace /etc/resolv.conf inside a jail; an explicit empty string removes the managed file", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Replace jail resolv.conf configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "resolv.conf document", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.ModifyResolvConfRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/options/wol": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Enable or disable Wake-on-LAN for all MAC addresses attached to a jail", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Replace jail Wake-on-LAN configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Wake-on-LAN configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.ModifyWakeOnLanRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/snapshots": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the crash-consistent recursive ZFS snapshot records for a jail", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "List jail snapshots", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_jail_JailSnapshot" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a crash-consistent recursive ZFS snapshot for a jail without quiescing it", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Create a jail snapshot", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Snapshot request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_jail.CreateJailSnapshotRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_jail_JailSnapshot" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/snapshots/{snapshotId}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a jail snapshot throughout its recursive ZFS dataset tree and remove its metadata while preserving child lineage", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Delete a jail snapshot", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "Jail Snapshot ID", "name": "snapshotId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/snapshots/{snapshotId}/rollback": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Stop the jail if needed, recursively roll its ZFS dataset tree back while destroying newer snapshots, restore saved configuration, and attempt to restore the prior running state", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Roll back a jail snapshot", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "Jail Snapshot ID", "name": "snapshotId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_jail_JailSnapshotRollbackResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/state": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the current runtime state and pending lifecycle action for a jail by CTID", "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Get jail state", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_State" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Jail Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/stats": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the finest available statistics window and its availability metadata for a jail", "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Get initial jail statistics", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_StatsBootstrap-github_com_alchemillahq_sylve_internal_db_models_jail_JailStats" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Jail Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/stats/{step}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve statistics for a jail by CTID and GFS retention step", "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Get jail statistics", "parameters": [ { "minimum": 1, "type": "integer", "description": "Jail CTID", "name": "ctid", "in": "path", "required": true }, { "enum": [ "minutely", "hourly", "daily", "weekly", "monthly", "yearly" ], "type": "string", "description": "Statistics retention step", "name": "step", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_jail_JailStats" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Jail Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/jail/{ctid}/templates": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Validate and queue creation of a jail template from a stopped source jail without deleting the source jail", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Jail" ], "summary": "Capture a jail as a template", "parameters": [ { "minimum": 1, "type": "integer", "description": "Source Jail CTID", "name": "ctid", "in": "path", "required": true }, { "description": "Template capture request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_jail.ConvertToTemplateRequest" } } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_jail_JailTemplateCaptureTaskResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/mdns/config": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the mDNS service discovery settings", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "mDNS" ], "summary": "Get mDNS settings", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_mdns_MdnsSettings" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update the mDNS service discovery settings", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "mDNS" ], "summary": "Update mDNS settings", "parameters": [ { "description": "mDNS Settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_mdns.MdnsSettingsRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/mdns/records": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all mDNS records (managed and user-created)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "mDNS" ], "summary": "List mDNS records", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_mdns_MdnsRecordWithManaged" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a user-defined mDNS record", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "mDNS" ], "summary": "Create an mDNS record", "parameters": [ { "description": "mDNS Record", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_mdns.MdnsRecordRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_mdns_MdnsRecord" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/mdns/records/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update a user-defined mDNS record", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "mDNS" ], "summary": "Update an mDNS record", "parameters": [ { "type": "integer", "description": "Record ID", "name": "id", "in": "path", "required": true }, { "description": "mDNS Record", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_mdns.MdnsRecordRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a user-defined mDNS record", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "mDNS" ], "summary": "Delete an mDNS record", "parameters": [ { "type": "integer", "description": "Record ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/dhcp/config": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the current singleton DHCP configuration", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Get DHCP configuration", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_network_DHCPConfig" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace and apply the current singleton DHCP configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Update DHCP configuration", "parameters": [ { "description": "Modify DHCP Config Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.ModifyDHCPConfigRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/dhcp/lease": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve active runtime leases and configured static DHCP leases", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "List DHCP leases", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_network_Leases" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create and apply a new static DHCP lease", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Create a static DHCP lease", "parameters": [ { "description": "Create Static DHCP Lease Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.CreateStaticMapRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-uint" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/dhcp/lease/dynamic": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete an active DHCP lease matching the exact identifier and IP pair", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Delete a dynamic DHCP lease", "parameters": [ { "description": "Delete Dynamic DHCP Lease Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.DeleteDynamicLeaseRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/dhcp/lease/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace and apply an existing static DHCP lease by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Update a static DHCP lease", "parameters": [ { "minimum": 1, "type": "integer", "description": "DHCP Lease ID", "name": "id", "in": "path", "required": true }, { "description": "Update Static DHCP Lease Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.ModifyStaticMapRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete and apply a static DHCP lease by ID", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Delete a static DHCP lease", "parameters": [ { "minimum": 1, "type": "integer", "description": "DHCP Lease ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/dhcp/range": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve all configured DHCP ranges", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "List DHCP ranges", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_network_DHCPRange" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create and apply a DHCP range for a configured switch", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Create a DHCP range", "parameters": [ { "description": "Create DHCP Range Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.CreateDHCPRangeRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-uint" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/dhcp/range/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace and apply an existing DHCP range; its address family is immutable", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Update a DHCP range", "parameters": [ { "minimum": 1, "type": "integer", "description": "DHCP Range ID", "name": "id", "in": "path", "required": true }, { "description": "Update DHCP Range Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.ModifyDHCPRangeRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete and apply a DHCP range and its associated static leases", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Delete a DHCP range", "parameters": [ { "minimum": 1, "type": "integer", "description": "DHCP Range ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/advanced": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the locally managed advanced PF rule sections", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Get Firewall Advanced Settings", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_network_FirewallAdvancedSettings" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the locally managed advanced PF rule sections and apply the resulting configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Update Firewall Advanced Settings", "parameters": [ { "description": "Firewall Advanced Settings Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallAdvancedRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/advanced/preview": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Validate and render a candidate advanced PF configuration without persisting or applying it", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Preview Firewall Configuration", "parameters": [ { "description": "Firewall Advanced Settings Preview Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallAdvancedRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_network_RenderedConfigResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/advanced/rendered": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the currently rendered PF configuration files from disk", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Get Rendered Firewall Configuration", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_network_RenderedConfigResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/logs/live": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List live firewall rule hits after a cursor. Cursor 0 starts at the current stream position without replaying retained history.", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "List Live Firewall Logs", "parameters": [ { "minimum": 0, "type": "integer", "default": 0, "description": "Return hits after this cursor; 0 initializes the live stream", "name": "cursor", "in": "query" }, { "maximum": 2000, "minimum": 1, "type": "integer", "default": 200, "description": "Maximum hits to return; values above 2000 are capped", "name": "limit", "in": "query" }, { "enum": [ "traffic", "nat" ], "type": "string", "description": "Rule type", "name": "ruleType", "in": "query" }, { "minimum": 1, "type": "integer", "description": "Rule ID", "name": "ruleId", "in": "query" }, { "enum": [ "pass", "block", "scrub", "nat", "binat", "rdr" ], "type": "string", "description": "PF action", "name": "action", "in": "query" }, { "enum": [ "in", "out" ], "type": "string", "description": "Packet direction", "name": "direction", "in": "query" }, { "type": "string", "description": "PF interface name", "name": "interface", "in": "query" }, { "type": "string", "description": "Text search over the rule name, ID, and rendered log line", "name": "query", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_network_FirewallLiveHitsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/nat": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all user-visible firewall NAT rules in evaluation order", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "List Firewall NAT Rules", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_network_FirewallNATRule" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create and apply a firewall NAT rule", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Create Firewall NAT Rule", "parameters": [ { "description": "Create Firewall NAT Rule Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.UpsertFirewallNATRuleRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-uint" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete and apply a validated collection of user-managed firewall NAT rules as one operation", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Bulk Delete Firewall NAT Rules", "parameters": [ { "description": "Bulk Delete Firewall NAT Rules Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.BulkDeleteFirewallNATRulesRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/nat/counters": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List cumulative packet and byte counters for user-visible firewall NAT rules", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "List Firewall NAT Rule Counters", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_network_FirewallNATRuleCounter" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/nat/reorder": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the evaluation order of all user-visible firewall NAT rules and apply it", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Reorder Firewall NAT Rules", "parameters": [ { "description": "Complete NAT Rule Reorder Request", "name": "request", "in": "body", "required": true, "schema": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallReorderRequest" } } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/nat/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace and apply an existing user-managed firewall NAT rule", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Update Firewall NAT Rule", "parameters": [ { "minimum": 1, "type": "integer", "description": "NAT Rule ID", "name": "id", "in": "path", "required": true }, { "description": "Update Firewall NAT Rule Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.UpsertFirewallNATRuleRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete and apply one user-managed firewall NAT rule by ID", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Delete Firewall NAT Rule", "parameters": [ { "minimum": 1, "type": "integer", "description": "NAT Rule ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/nat/{id}/route-suggestions": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Derive static return-route suggestions from a policy-routed SNAT or BINAT rule", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Suggest routes from NAT rule", "parameters": [ { "type": "integer", "description": "Firewall NAT Rule ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_network_StaticRouteSuggestion" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/traffic": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all user-visible firewall traffic rules in evaluation order", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "List Firewall Traffic Rules", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_network_FirewallTrafficRule" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create and apply a firewall traffic rule", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Create Firewall Traffic Rule", "parameters": [ { "description": "Create Firewall Traffic Rule Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.UpsertFirewallTrafficRuleRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-uint" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete and apply a validated collection of user-managed firewall traffic rules as one operation", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Bulk Delete Firewall Traffic Rules", "parameters": [ { "description": "Bulk Delete Firewall Traffic Rules Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.BulkDeleteFirewallTrafficRulesRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/traffic/counters": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List cumulative packet and byte counters for user-visible firewall traffic rules", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "List Firewall Traffic Rule Counters", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_network_FirewallTrafficRuleCounter" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/traffic/reorder": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the evaluation order of all user-visible firewall traffic rules and apply it", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Reorder Firewall Traffic Rules", "parameters": [ { "description": "Complete Traffic Rule Reorder Request", "name": "request", "in": "body", "required": true, "schema": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallReorderRequest" } } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/firewall/traffic/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace and apply an existing user-managed firewall traffic rule", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Update Firewall Traffic Rule", "parameters": [ { "minimum": 1, "type": "integer", "description": "Traffic Rule ID", "name": "id", "in": "path", "required": true }, { "description": "Update Firewall Traffic Rule Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.UpsertFirewallTrafficRuleRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete and apply one user-managed firewall traffic rule by ID", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Delete Firewall Traffic Rule", "parameters": [ { "minimum": 1, "type": "integer", "description": "Traffic Rule ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/interface": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all network interfaces on the system", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "List Network Interfaces", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_pkg_network_iface_Interface" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/object": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all configured network objects and their current usage state", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "List Network Objects", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_network_Object" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create and validate a network object with the specified type and values", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Create Network Object", "parameters": [ { "description": "Create Network Object Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_network.CreateOrEditNetworkObjectRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-uint" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Bad Gateway", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a validated collection of unused network objects as one operation", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Bulk Delete Network Objects", "parameters": [ { "description": "Bulk Delete Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_network.BulkDeleteNetworkObjectsRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/object/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace an existing network object's name, type, and values", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Update Network Object", "parameters": [ { "minimum": 1, "type": "integer", "description": "Object ID", "name": "id", "in": "path", "required": true }, { "description": "Update Network Object Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_network.CreateOrEditNetworkObjectRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Bad Gateway", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete one network object by its positive integer ID", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Delete Network Object", "parameters": [ { "minimum": 1, "type": "integer", "description": "Object ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/route": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all configured static routes", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "List static routes", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_network_StaticRoute" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create and apply a static route", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Create static route", "parameters": [ { "description": "Static Route Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.UpsertStaticRouteRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-uint" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/route/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace and apply a configured static route", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Update static route", "parameters": [ { "type": "integer", "description": "Static Route ID", "name": "id", "in": "path", "required": true }, { "description": "Static Route Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.UpsertStaticRouteRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a configured static route and remove it from the host routing table", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Delete static route", "parameters": [ { "type": "integer", "description": "Static Route ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/switch": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all configured standard and manual network switches", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "List network switches", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_network_ListSwitchResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/switch/manual": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Register an existing host bridge as a manual network switch", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Create a manual switch", "parameters": [ { "description": "Create Manual Switch Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_network.CreateManualSwitchRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-uint" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/switch/manual/{id}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a manual switch registration by ID", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Delete a manual switch", "parameters": [ { "minimum": 1, "type": "integer", "description": "Manual Switch ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/switch/standard": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create and apply a managed standard network switch", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Create a standard switch", "parameters": [ { "description": "Create Standard Switch Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_network.CreateStandardSwitchRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-uint" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/switch/standard/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace and apply a managed standard network switch by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Update a standard switch", "parameters": [ { "minimum": 1, "type": "integer", "description": "Standard Switch ID", "name": "id", "in": "path", "required": true }, { "description": "Update Standard Switch Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_network.UpdateStandardSwitchRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a managed standard network switch by ID", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Delete a standard switch", "parameters": [ { "minimum": 1, "type": "integer", "description": "Standard Switch ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/wireguard/clients": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve all configured outbound WireGuard clients and their runtime status", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "List WireGuard clients", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_network_WireGuardClient" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create and apply an outbound WireGuard client configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Create WireGuard client", "parameters": [ { "description": "WireGuard Client Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_network.WireGuardClientRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-uint" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/wireguard/clients/{clientId}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the configurable settings of an outbound WireGuard client and apply them", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Update WireGuard client", "parameters": [ { "minimum": 1, "type": "integer", "description": "WireGuard Client ID", "name": "clientId", "in": "path", "required": true }, { "description": "WireGuard Client Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_network.WireGuardClientRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Permanently remove an outbound WireGuard client and its runtime interface", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Delete WireGuard client", "parameters": [ { "minimum": 1, "type": "integer", "description": "WireGuard Client ID", "name": "clientId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Idempotently enable or disable an outbound WireGuard client", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Set WireGuard client state", "parameters": [ { "minimum": 1, "type": "integer", "description": "WireGuard Client ID", "name": "clientId", "in": "path", "required": true }, { "description": "WireGuard Client State", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_network.WireGuardClientEnabledRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/wireguard/server": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the initialized WireGuard server configuration and runtime status", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Get WireGuard server", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_network_WireGuardServer" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update the configurable WireGuard server settings and apply them", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Update WireGuard server", "parameters": [ { "description": "WireGuard Server Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_network.InitWireGuardServerRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create and start the singleton WireGuard server", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Initialize WireGuard server", "parameters": [ { "description": "WireGuard Server Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_network.InitWireGuardServerRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Stop and permanently remove the WireGuard server and its peers", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Deinitialize WireGuard server", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Enable or disable the initialized WireGuard server idempotently", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Set WireGuard server state", "parameters": [ { "description": "WireGuard Server State", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_network.WireGuardServerEnabledRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/wireguard/server/peer": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a peer for the initialized WireGuard server and apply the updated runtime configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Add WireGuard server peer", "parameters": [ { "description": "WireGuard Server Peer Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_network.WireGuardServerPeerRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-uint" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/network/wireguard/server/peer/{peerId}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the configurable settings for a WireGuard server peer and apply the updated runtime configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Update WireGuard server peer", "parameters": [ { "minimum": 1, "type": "integer", "description": "WireGuard Server Peer ID", "name": "peerId", "in": "path", "required": true }, { "description": "WireGuard Server Peer Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_network.WireGuardServerPeerRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Permanently remove a WireGuard server peer and apply the updated runtime configuration", "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Remove WireGuard server peer", "parameters": [ { "minimum": 1, "type": "integer", "description": "WireGuard Server Peer ID", "name": "peerId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Enable or disable a WireGuard server peer idempotently and apply the updated runtime configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Network" ], "summary": "Set WireGuard server peer state", "parameters": [ { "minimum": 1, "type": "integer", "description": "WireGuard Server Peer ID", "name": "peerId", "in": "path", "required": true }, { "description": "WireGuard Server Peer State", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_network.WireGuardServerPeerEnabledRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Payload Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/notifications": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List active or all notifications using bounded offset pagination", "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "List notifications", "parameters": [ { "enum": [ "active", "all" ], "type": "string", "default": "active", "description": "Notification scope", "name": "scope", "in": "query" }, { "maximum": 500, "minimum": 1, "type": "integer", "default": 50, "description": "Maximum notifications to return", "name": "limit", "in": "query" }, { "minimum": 0, "type": "integer", "default": 0, "description": "Number of notifications to skip", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_notifications_NotificationListResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/notifications/count": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Return the number of notifications that have not been dismissed", "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Count active notifications", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_notifications_NotificationCountResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/notifications/dismiss-all": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Dismiss every currently active global notification", "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Dismiss all notifications", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_notifications_NotificationDismissAllResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/notifications/rules": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List notification rule templates and concrete target rules, including inactive retained targets", "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "List notification rules", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_notifications_RuleConfigView" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Apply the legacy full-bulk notification rule update contract", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Update notification rules", "parameters": [ { "description": "Notification rule updates", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.RuleConfigUpdate" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_notifications_RuleConfigView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a concrete notification rule from a template and active target", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Create a notification rule", "parameters": [ { "description": "Notification rule", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.RuleCreateInput" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_notifications_RuleConfigView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/notifications/rules/bulk-delete": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Delete an exact set of notification rules atomically; missing active auto-managed rules are recreated by synchronization", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Delete notification rules in bulk", "parameters": [ { "description": "Notification rule IDs", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal.BulkDeleteRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_notifications_RuleConfigView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/notifications/rules/bulk-update": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Apply selected channel toggles to an exact set of notification rules atomically", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Update notification rules in bulk", "parameters": [ { "description": "Notification rule IDs and channel toggles", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal.BulkUpdateRulesRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_notifications_RuleConfigView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/notifications/rules/test": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Emit a representative event for one template and active target through the normal notification pipeline", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Test a notification rule", "parameters": [ { "description": "Notification rule test", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.TestRuleInput" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/notifications/rules/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update channel toggles and optional template-specific configuration for one notification rule", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Update a notification rule", "parameters": [ { "minimum": 1, "type": "integer", "description": "Notification rule ID", "name": "id", "in": "path", "required": true }, { "description": "Notification rule update", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.RuleUpdateInput" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_notifications_RuleConfigView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete one notification rule; synchronization recreates missing rules for active auto-managed targets", "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Delete a notification rule", "parameters": [ { "minimum": 1, "type": "integer", "description": "Notification rule ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_notifications_RuleConfigView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/notifications/transports": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List administrator-visible notification transport configuration, including configured Discord webhook URLs", "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "List notification transports", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_notifications_TransportConfigView" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create one ntfy, SMTP, or Discord notification transport", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Create a notification transport", "parameters": [ { "description": "Notification transport", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.TransportInput" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_notifications_TransportConfigView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/notifications/transports/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the mutable configuration of one notification transport; omitted credentials remain unchanged and explicit empty credentials are cleared", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Update a notification transport", "parameters": [ { "minimum": 1, "type": "integer", "description": "Notification transport ID", "name": "id", "in": "path", "required": true }, { "description": "Notification transport", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.TransportInput" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_notifications_TransportConfigView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete one notification transport without affecting other configured transports", "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Delete a notification transport", "parameters": [ { "minimum": 1, "type": "integer", "description": "Notification transport ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/notifications/transports/{id}/test": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Send a test notification through one configured transport, even when the transport is disabled", "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Test a notification transport", "parameters": [ { "minimum": 1, "type": "integer", "description": "Notification transport ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/notifications/{id}/dismiss": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Dismiss one global notification and persist suppression where supported", "produces": [ "application/json" ], "tags": [ "Notifications" ], "summary": "Dismiss a notification", "parameters": [ { "minimum": 1, "type": "integer", "description": "Notification ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/samba/audit-logs": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve paginated Samba audit logs", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Samba" ], "summary": "Get Samba audit logs", "parameters": [ { "minimum": 1, "type": "integer", "default": 1, "description": "Page number", "name": "page", "in": "query" }, { "minimum": 1, "type": "integer", "default": 100, "description": "Page size", "name": "size", "in": "query" }, { "enum": [ "id", "action", "share", "user", "client", "ip", "path", "target", "occurrences", "createdAt", "created_at" ], "type": "string", "description": "Sort field", "name": "sort[0][field]", "in": "query" }, { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction", "name": "sort[0][dir]", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_samba_AuditLogsResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/samba/config": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the Samba global configuration settings", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Samba" ], "summary": "Get Samba global configuration", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_samba_SambaSettings" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update the Samba global configuration settings", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Samba" ], "summary": "Update Samba global configuration", "parameters": [ { "description": "Samba global configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_samba.SambaConfigRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/samba/shares": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve all configured Samba shares", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Samba" ], "summary": "Get Samba shares", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_internal_handlers_samba_SambaShareResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a Samba share with the specified settings", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Samba" ], "summary": "Create a Samba share", "parameters": [ { "description": "Samba share settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_samba.CreateSambaShareRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/samba/shares/{id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update an existing Samba share with the specified settings", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Samba" ], "summary": "Update a Samba share", "parameters": [ { "type": "integer", "description": "Share ID", "name": "id", "in": "path", "required": true }, { "description": "Samba share settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_samba.UpdateSambaShareRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete an existing Samba share by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Samba" ], "summary": "Delete a Samba share", "parameters": [ { "type": "integer", "description": "Share ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/samba/shares/{id}/enabled": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Set whether a Samba share is included in the active configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Samba" ], "summary": "Enable or disable a Samba share", "parameters": [ { "type": "integer", "description": "Share ID", "name": "id", "in": "path", "required": true }, { "description": "Enabled state", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_samba.SetSambaShareEnabledRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/basic-settings": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get basic system settings information", "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Get Basic System Settings", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_BasicSettings" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/basic-settings/pools": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the complete set of ZFS pools usable by Sylve", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Replace Usable ZFS Pools", "parameters": [ { "description": "Complete list of usable ZFS pool names", "name": "pools", "in": "body", "required": true, "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/basic-settings/services/{service}": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Set the desired enabled state of a service in the system settings", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Set Service State", "parameters": [ { "type": "string", "description": "Service name", "name": "service", "in": "path", "required": true }, { "description": "Desired service state", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_system.SetServiceStateRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_system_ServiceStateResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/file-explorer": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List the direct entries in an absolute directory path", "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Browse Files and Folders", "parameters": [ { "type": "string", "description": "Absolute directory path; defaults to /", "name": "id", "in": "query" } ], "responses": { "200": { "description": "Files and folders listed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_system_FileNode" } }, "400": { "description": "Invalid directory path", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access or filesystem permission required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Directory not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new file or folder in an absolute directory path without overwriting an existing entry", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Create a File or Folder", "parameters": [ { "description": "Request body", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_system.AddFileOrFolderRequest" } } ], "responses": { "201": { "description": "File or folder created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Invalid request, path, or name", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access or filesystem permission required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Parent directory not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Entry already exists or restore is in progress", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request body too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/file-explorer/copy-or-move-batch": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Copy or move up to 512 regular files, folders, or symbolic links without overwriting existing entries; an existing destination directory receives the source basename", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Copy or Move Files or Folders", "parameters": [ { "description": "Copy or move files or folders request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_system.CopyOrMoveFilesOrFoldersRequest" } } ], "responses": { "200": { "description": "Files or folders copied or moved", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Invalid path, operation, file type, or oversized item list", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access or filesystem permission required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Source or destination parent not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Destination exists, batch paths conflict, or restore is in progress", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request body too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/file-explorer/delete": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Delete one or more files, folders, or symbolic links after validating the complete bounded request", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Delete Files or Folders", "parameters": [ { "description": "Delete files or folders request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_system.DeleteFilesOrFoldersRequest" } } ], "responses": { "200": { "description": "Files or folders deleted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Invalid, empty, root, or oversized path list", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access or filesystem permission required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Entry not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Restore is in progress", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request body too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/file-explorer/download": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Stream a regular file from an absolute system path with HTTP range support", "produces": [ "application/octet-stream" ], "tags": [ "System" ], "summary": "Download a file", "parameters": [ { "type": "string", "description": "Absolute path to the regular file", "name": "id", "in": "query", "required": true }, { "type": "string", "description": "SHA-256 token hash alternative to Bearer authentication", "name": "hash", "in": "query" }, { "type": "string", "description": "Hex-encoded selected-node routing payload used by browser downloads", "name": "auth", "in": "query" } ], "responses": { "200": { "description": "File content", "schema": { "type": "file" } }, "206": { "description": "Partial file content", "schema": { "type": "file" } }, "400": { "description": "Invalid path or non-regular file", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access or filesystem permission required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "File not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "416": { "description": "Range Not Satisfiable", "schema": { "type": "string" } }, "500": { "description": "Unexpected filesystem failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/file-explorer/rename": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Rename a file, folder, or symbolic link without overwriting an existing entry", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Rename File or Folder", "parameters": [ { "description": "Rename file or folder request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_system.RenameFileOrFolderRequest" } } ], "responses": { "200": { "description": "File or folder renamed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Invalid path or name", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access or filesystem permission required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Entry not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Destination exists or restore is in progress", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request body too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/file-explorer/upload": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Upload exactly one file to an absolute destination folder through FilePond without overwriting an existing entry", "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Upload a File", "parameters": [ { "type": "string", "description": "Destination folder path (e.g. /zroot/share)", "name": "path", "in": "query", "required": true }, { "type": "file", "description": "File to upload", "name": "filepond", "in": "formData", "required": true } ], "responses": { "201": { "description": "File uploaded", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_system_UploadFileResponse" } }, "400": { "description": "Invalid path, filename, or multipart request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access or destination permission required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Destination folder not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "408": { "description": "Upload cancelled or timed out", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Destination exists or restore is in progress", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "File or multipart request too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "429": { "description": "Upload capacity exhausted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "507": { "description": "Insufficient storage or quota", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete the unchanged file associated with a short-lived, server-issued FilePond upload identity", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Revert an Uploaded File", "parameters": [ { "description": "Upload revert request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_system.DeleteUploadRequest" } } ], "responses": { "200": { "description": "Upload reverted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Invalid request or missing upload identity", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access or filesystem permission required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Upload identity not found, expired, or owned by another user", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Filesystem entry changed or restore is in progress", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request body too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/pci-devices": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List PCI devices detected on the selected system", "produces": [ "application/json" ], "tags": [ "System" ], "summary": "List PCI devices", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_pkg_system_pciconf_PCIDevice" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/ppt-devices": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List PCI passthrough mappings managed on the selected system", "produces": [ "application/json" ], "tags": [ "System" ], "summary": "List managed passthrough devices", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_PassedThroughIDs" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Attach a domain-zero PCI device to ppt and persist its managed mapping", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Enable PCI passthrough", "parameters": [ { "description": "PCI domain and bus/device/function address", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_system.AddPassthroughDeviceRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_PassedThroughIDs" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "PCI Device Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/ppt-devices/import": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Persist a domain-zero PCI device that is already attached to ppt", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Import a PCI passthrough device", "parameters": [ { "description": "PCI domain and bus/device/function address", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_system.AddPassthroughDeviceRequest" } } ], "responses": { "200": { "description": "Already Managed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_PassedThroughIDs" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_PassedThroughIDs" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "PCI Device Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/ppt-devices/prepare": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Add a domain-zero PCI device to loader.conf for passthrough after reboot", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Prepare PCI passthrough", "parameters": [ { "description": "PCI domain and bus/device/function address", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_system.AddPassthroughDeviceRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "PCI Device Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/ppt-devices/{id}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Remove a managed passthrough mapping and restore its host driver when possible", "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Disable PCI passthrough", "parameters": [ { "minimum": 1, "type": "integer", "description": "Passthrough mapping ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_system_RemovePassthroughDeviceResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Passthrough Mapping Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Mapping In Use", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/tunables": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Apply a writable sysctl tunable and persist it for re-application on boot", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "System" ], "summary": "Set Sysctl Tunable", "parameters": [ { "description": "Tunable name and value", "name": "tunable", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_system.SetTunableRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/system/tunables/remote": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List sysctl tunables with server-side pagination, sorting, search, and configured-only filtering", "produces": [ "application/json" ], "tags": [ "System" ], "summary": "List Sysctl Tunables", "parameters": [ { "minimum": 1, "type": "integer", "default": 1, "description": "Page number", "name": "page", "in": "query" }, { "maximum": 100, "minimum": 1, "type": "integer", "default": 25, "description": "Page size", "name": "size", "in": "query" }, { "type": "string", "description": "Search tunable names", "name": "search", "in": "query" }, { "type": "boolean", "description": "Only include tunables configured through Sylve", "name": "configuredOnly", "in": "query" }, { "enum": [ "name", "value", "type", "writable" ], "type": "string", "description": "Sort field", "name": "sort[0][field]", "in": "query" }, { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction", "name": "sort[0][dir]", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_system_TunablesResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/tasks/lifecycle/active": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List queued and running guest lifecycle tasks, optionally filtered by guest type and positive guest ID", "produces": [ "application/json" ], "tags": [ "Tasks" ], "summary": "List active lifecycle tasks", "parameters": [ { "enum": [ "vm", "jail", "jail-template", "vm-template" ], "type": "string", "description": "Guest type", "name": "guestType", "in": "query" }, { "minimum": 1, "type": "integer", "description": "Positive guest ID", "name": "guestId", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_task_GuestLifecycleTask" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/tasks/lifecycle/active/{guestType}/{guestId}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Return the newest queued or running lifecycle task for one guest; successful data is null when no task is active", "produces": [ "application/json" ], "tags": [ "Tasks" ], "summary": "Get the active lifecycle task for a guest", "parameters": [ { "enum": [ "vm", "jail", "jail-template", "vm-template" ], "type": "string", "description": "Guest type", "name": "guestType", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "Positive guest ID", "name": "guestId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success; data may be null", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_task_GuestLifecycleTask" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/tasks/lifecycle/recent": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List recent guest lifecycle tasks with an explicit bounded limit and optional guest filters", "produces": [ "application/json" ], "tags": [ "Tasks" ], "summary": "List recent lifecycle tasks", "parameters": [ { "enum": [ "vm", "jail", "jail-template", "vm-template" ], "type": "string", "description": "Guest type", "name": "guestType", "in": "query" }, { "minimum": 1, "type": "integer", "description": "Positive guest ID", "name": "guestId", "in": "query" }, { "maximum": 200, "minimum": 1, "type": "integer", "default": 50, "description": "Maximum tasks to return", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_task_GuestLifecycleTask" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/tasks/migration/validate": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Run a side-effect-free migration preflight for one VM or jail and target node UUID", "produces": [ "application/json" ], "tags": [ "Tasks" ], "summary": "Validate a guest migration", "parameters": [ { "enum": [ "vm", "jail" ], "type": "string", "description": "Guest type", "name": "guestType", "in": "query", "required": true }, { "minimum": 1, "type": "integer", "description": "Positive guest ID", "name": "guestId", "in": "query", "required": true }, { "type": "string", "description": "Target cluster node UUID", "name": "targetNodeUuid", "in": "query", "required": true } ], "responses": { "200": { "description": "Validation complete", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_migration_ValidateResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/tasks/migration/{taskId}/cancel": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Request cancellation of a queued or pre-cutover guest migration", "produces": [ "application/json" ], "tags": [ "Tasks" ], "summary": "Request migration cancellation", "parameters": [ { "minimum": 1, "type": "integer", "description": "Migration task ID", "name": "taskId", "in": "path", "required": true } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/utilities/cloud-init/templates": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List all Cloud-Init templates available on the selected node", "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "List Cloud-Init Templates", "responses": { "200": { "description": "Templates listed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_utilities_CloudInitTemplate" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a Cloud-Init template with a case-insensitively unique name; networkConfig must be present and may be empty", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "Create Cloud-Init Template", "parameters": [ { "description": "Complete Cloud-Init template document", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.CloudInitTemplateRequest" } } ], "responses": { "201": { "description": "Template created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_utilities_CloudInitTemplate" }, "headers": { "Location": { "type": "string", "description": "/api/utilities/cloud-init/templates/{templateId}" } } }, "400": { "description": "Invalid or incomplete template", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Template name already exists", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request body too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/utilities/cloud-init/templates/{templateId}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Completely replace a Cloud-Init template; networkConfig must be present and may be explicitly empty", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "Replace Cloud-Init Template", "parameters": [ { "minimum": 1, "type": "integer", "description": "Template ID", "name": "templateId", "in": "path", "required": true }, { "description": "Complete replacement document", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.CloudInitTemplateRequest" } } ], "responses": { "200": { "description": "Template replaced", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_utilities_CloudInitTemplate" } }, "400": { "description": "Invalid ID or incomplete template", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Template not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Template name already exists", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request body too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete one Cloud-Init template by ID and return its identity", "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "Delete Cloud-Init Template", "parameters": [ { "minimum": 1, "type": "integer", "description": "Template ID", "name": "templateId", "in": "path", "required": true } ], "responses": { "200": { "description": "Template deleted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_CloudInitTemplateIdentity" } }, "400": { "description": "Invalid template ID", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Template not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/utilities/downloader-uploads": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Stream exactly one file from the filepond multipart field into bounded, short-lived downloader staging and return an opaque upload identity without exposing the server path", "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "Stage a Downloader Upload", "parameters": [ { "type": "file", "description": "File to stage", "name": "filepond", "in": "formData", "required": true } ], "responses": { "201": { "description": "Upload staged", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_utilities_DownloaderUploadReceipt" }, "headers": { "Location": { "type": "string", "description": "/api/utilities/downloader-uploads/{id}" } } }, "400": { "description": "Invalid filename, file field, or multipart request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access or staging permission required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "408": { "description": "Upload cancelled or timed out", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Upload identity collision", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "File or multipart request too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "429": { "description": "Upload capacity exhausted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" }, "headers": { "Retry-After": { "type": "string", "description": "Retry delay in seconds" } } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Upload persistence unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "507": { "description": "Insufficient storage or quota", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/utilities/downloader-uploads/{id}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Idempotently remove an unchanged staged upload; missing or foreign identities are indistinguishable, and completed uploads are retained", "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "Abort a Downloader Upload", "parameters": [ { "type": "string", "description": "Opaque upload ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Upload aborted or already completed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_utilities_DownloaderUploadAbortResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Upload active, changed, or unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" }, "headers": { "Retry-After": { "type": "string", "description": "Retry delay when the upload is active" } } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Upload persistence unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" }, "headers": { "Retry-After": { "type": "string", "description": "Retry delay in seconds" } } } } } }, "/utilities/downloader-uploads/{id}/complete": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Idempotently publish a staged upload as a downloader resource and queue its processing with the selected options", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "Complete a Downloader Upload", "parameters": [ { "type": "string", "description": "Opaque upload ID", "name": "id", "in": "path", "required": true }, { "description": "Downloader completion options", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.CompleteDownloaderUploadRequest" } } ], "responses": { "200": { "description": "Upload completed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloaderUploadCompletion" } }, "400": { "description": "Invalid request, upload ID, or download type", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Upload not found or owned by another user", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Upload active, changed, unavailable, or destination already exists", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" }, "headers": { "Retry-After": { "type": "string", "description": "Retry delay when the upload is active" } } }, "410": { "description": "Upload expired", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request body too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "422": { "description": "Incompatible post-processing options", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Upload persistence or download queue unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" }, "headers": { "Retry-After": { "type": "string", "description": "Retry delay in seconds" } } } } } }, "/utilities/downloads": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List downloader records and their current transfer or processing state", "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "List Downloads", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_utilities_Downloads" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Persist and queue a download from a magnet URI, HTTP(S) URL, or readable regular absolute path", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "Start Download", "parameters": [ { "description": "Download request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloadFileRequest" } } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloadStartResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Download or destination already exists", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request body too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "422": { "description": "Unsupported source or processing options", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Queue unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloadStartResult" } } } } }, "/utilities/downloads/bulk-delete": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Delete unique downloads after strict all-member preflight; missing, referenced, active, or unsafe members prevent all deletion, while unexpected cleanup failures return typed partial results", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "Bulk Delete Downloads", "parameters": [ { "description": "Bulk Delete Download Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_utilities.BulkDeleteDownloadRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloadDeleteResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "One or more downloads not found; nothing deleted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloadDeleteResult" } }, "409": { "description": "One or more downloads active, referenced, or unsafe; nothing deleted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloadDeleteResult" } }, "413": { "description": "Request body too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Cleanup or persistence failure, possibly partial", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloadDeleteResult" } } } } }, "/utilities/downloads/paths": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get configured filesystem paths used by downloader for HTTP and Path downloads", "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "Get Download Paths", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_utilities_DownloadPathsResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/utilities/downloads/signed-url": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a two-hour public capability URL for one completed download or torrent member", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "Get Signed Download URL", "parameters": [ { "description": "Signed URL Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_utilities.SignedURLRequest" } } ], "responses": { "200": { "description": "Capability created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_SignedDownloadURLResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Administrator access required", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Download or torrent member not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Download is not complete", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request body too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/utilities/downloads/utype": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List compact completed-download choices for consumers such as VM, Jail, and ZFS workflows", "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "List Completed Download Choices", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_utilities_UTypeGroupedDownload" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/utilities/downloads/{id}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete one download after reference, activity, and managed-path preflight; unexpected cleanup failures return a typed retained-path result", "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "Delete Download", "parameters": [ { "minimum": 1, "type": "integer", "description": "Download ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloadDeleteResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Download not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloadDeleteResult" } }, "409": { "description": "Download active, referenced, or unsafe to clean", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloadDeleteResult" } }, "500": { "description": "Cleanup or persistence failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloadDeleteResult" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Partially update completed or failed download display metadata and processing options; active downloads cannot be changed", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Utilities" ], "summary": "Update Download", "parameters": [ { "minimum": 1, "type": "integer", "description": "Download ID", "name": "id", "in": "path", "required": true }, { "description": "Update Download Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.UpdateDownloadRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_utilities_Downloads" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Download not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Download is active", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request body too large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "422": { "description": "Unsupported metadata or processing options", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Queue unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/utilities/downloads/{uuid}": { "get": { "description": "Download exactly one file using an unexpired node-bound capability URL; no Bearer token is required", "produces": [ "application/octet-stream" ], "tags": [ "Utilities" ], "summary": "Download File", "parameters": [ { "type": "string", "description": "Download UUID", "name": "uuid", "in": "path", "required": true }, { "type": "integer", "description": "Expiration time in Unix timestamp", "name": "expires", "in": "query", "required": true }, { "type": "string", "description": "Signature", "name": "sig", "in": "query", "required": true }, { "minimum": 1, "type": "integer", "description": "Download or torrent member ID", "name": "id", "in": "query", "required": true }, { "type": "string", "description": "Serving cluster node hostname", "name": "node", "in": "query", "required": true } ], "responses": { "200": { "description": "File content", "schema": { "type": "file" } }, "206": { "description": "Partial file content", "schema": { "type": "file" } }, "400": { "description": "Malformed capability", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Invalid, expired, or tampered capability", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Capability target or selected node not found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "416": { "description": "Range Not Satisfiable", "schema": { "type": "string" } }, "500": { "description": "Unexpected signing, database, or filesystem failure", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Selected node forwarding failed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Selected node is offline or unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve a list of all virtual machines", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "List all Virtual Machines", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_vm_VM" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new virtual machine with the specified parameters", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Create a new Virtual Machine", "parameters": [ { "description": "Create Virtual Machine Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.CreateVMRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_vm_VMCreateResponse" }, "headers": { "Location": { "type": "string", "description": "/api/vm/{rid}" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/simple": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve a simple list of all VMs", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "List all VMs (Simple)", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_libvirt_SimpleList" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/simple/{rid}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve a simple virtual machine object by its resource ID (RID)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Get a simple Virtual Machine by RID", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_libvirt_SimpleList" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/templates": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the VM template collection using its simple list representation", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "List VM templates", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_libvirt_SimpleTemplateList" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/templates/{templateId}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve a VM template by its template ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Get a VM template", "parameters": [ { "minimum": 1, "type": "integer", "description": "VM Template ID", "name": "templateId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_vm_VMTemplate" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a VM template and its stored template datasets when no VM creation is active", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Delete a VM template", "parameters": [ { "minimum": 1, "type": "integer", "description": "VM Template ID", "name": "templateId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/templates/{templateId}/vms": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Validate and queue creation of one or more virtual machines from a VM template", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Create VMs from a template", "parameters": [ { "minimum": 1, "type": "integer", "description": "VM Template ID", "name": "templateId", "in": "path", "required": true }, { "description": "VM template instantiation request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.CreateFromTemplateRequest" } } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_vm_VMTemplateInstantiationTaskResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve a virtual machine by its resource ID (RID)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Get a Virtual Machine by RID", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_vm_VM" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Remove a virtual machine by RID. Set force=true for best-effort forced removal; normal removal requires all three cleanup flags.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Remove a Virtual Machine", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "type": "boolean", "description": "Delete unused VM MAC objects (required for normal removal; defaults to true for forced removal)", "name": "deletemacs", "in": "query" }, { "type": "boolean", "description": "Delete raw-disk datasets (required for normal removal)", "name": "deleterawdisks", "in": "query" }, { "type": "boolean", "description": "Delete volume datasets (required for normal removal)", "name": "deletevolumes", "in": "query" }, { "type": "boolean", "default": false, "description": "Use best-effort forced removal", "name": "force", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_libvirt_VMRemovalResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/actions/{action}": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Queue a start, stop, shutdown, or reboot action for a virtual machine by its RID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Queue a Virtual Machine lifecycle action", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "enum": [ "start", "stop", "shutdown", "reboot" ], "type": "string", "description": "Lifecycle action", "name": "action", "in": "path", "required": true } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_vm_VMActionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/console": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Validate the VM serial console and upgrade to an authenticated interactive WebSocket session", "tags": [ "VM" ], "summary": "Open a VM serial console WebSocket", "parameters": [ { "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "type": "integer", "default": 115200, "description": "Serial baud rate", "name": "baudrate", "in": "query" }, { "type": "string", "description": "Hex-encoded WebSocket authentication payload", "name": "auth", "in": "query", "required": true } ], "responses": { "101": { "description": "Switching Protocols", "schema": { "type": "string" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "VM Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/description": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update the description of a virtual machine by its RID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Edit a Virtual Machine's description", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Edit Virtual Machine Description Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.VMEditDescRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/domain": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the domain information of a virtual machine by its RID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Get a Virtual Machine's Domain", "parameters": [ { "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_libvirt_LvDomain" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/guest-agent": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve operating-system and network information reported by the QEMU Guest Agent of a running virtual machine", "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Get virtual machine guest-agent information", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_libvirt_QemuGuestAgentInfo" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/hardware/cpu": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the CPU topology and pinning configuration of a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine CPU configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "CPU configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.ModifyCPURequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/hardware/pci-devices": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the PCI passthrough device assignments of a shut-off virtual machine; an empty array clears all assignments", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine PCI passthrough configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "PCI passthrough configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifyPassthroughRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/hardware/ram": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the memory allocation of a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine RAM configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "RAM configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifyRAMRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/hardware/vnc": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace the VNC configuration of a shut-off virtual machine; an empty password clears VNC authentication", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine VNC configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "VNC configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.ModifyVNCRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/logs": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve console log for a specific VM by RID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Get VM Logs", "parameters": [ { "type": "integer", "description": "VM RID", "name": "rid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_vm_VMLogsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "VM Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/migrations": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Validate and queue an asynchronous migration of a virtual machine to another cluster node", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Queue a Virtual Machine migration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Migration target", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_migration.MigrateGuestRequest" } } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_migration_MigrationTaskResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/name": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update the name of a virtual machine by its RID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Edit a Virtual Machine's name", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Edit Virtual Machine Name Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.VMEditNameRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/networks": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Attach a network interface to a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Attach network to a virtual machine", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Network attachment", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.NetworkAttachRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_vm_Network" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/networks/{networkId}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Detach a network interface from a shut-off virtual machine without deleting its MAC object", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Detach network from a virtual machine", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "Network Attachment ID", "name": "networkId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Partially update a network interface attached to a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Update virtual machine network", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "Network Attachment ID", "name": "networkId", "in": "path", "required": true }, { "description": "Network changes", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.NetworkUpdateRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_vm_Network" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/options/boot-order": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Configure whether a virtual machine starts at boot and its relative start order", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine automatic-start configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Automatic-start configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifyBootOrderRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/options/boot-rom": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Select the boot ROM mode for a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine boot ROM configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Boot ROM configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifyBootROMRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/options/clock": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Set the virtual machine clock offset to UTC or local time while it is shut off", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine clock configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Clock configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifyClockRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/options/cloud-init": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace or explicitly clear cloud-init user data, metadata, and network configuration for a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine cloud-init configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Cloud-init configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifyCloudInitDataRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/options/extra-bhyve-options": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Replace custom bhyve arguments for a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine extra bhyve options", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Extra bhyve options", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifyExtraBhyveOptionsRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/options/ignore-umsrs": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Enable or disable ignoring accesses to unimplemented model-specific registers for a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine unknown-MSR handling", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Unknown-MSR configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifyIgnoreUMSRsRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/options/qemu-guest-agent": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Enable or disable the QEMU Guest Agent channel for a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine QEMU Guest Agent configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "QEMU Guest Agent configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifyQemuGuestAgentRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/options/serial-console": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Enable or disable serial-console access for a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine serial-console configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Serial-console configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifySerialConsoleRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/options/shutdown-wait-time": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Set how long a graceful virtual machine shutdown may wait before forced termination", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine shutdown wait time", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Shutdown wait-time configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifyShutdownWaitTimeRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/options/tpm": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Enable or disable TPM emulation for a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine TPM-emulation configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "TPM-emulation configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifyTPMRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/options/wol": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Enable or disable Wake-on-LAN for a virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Replace virtual machine Wake-on-LAN configuration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Wake-on-LAN configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.ModifyWakeOnLanRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/registration": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Remove stale VM registration and runtime metadata by RID while preserving datasets", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Purge an orphaned Virtual Machine registration", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "type": "boolean", "default": true, "description": "Delete unused VM MAC objects", "name": "deletemacs", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_libvirt_VMRemovalResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/snapshots": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the crash-consistent ZFS snapshot records for a virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "List VM snapshots", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_vm_VMSnapshot" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create crash-consistent recursive ZFS snapshots for a virtual machine; roots on different pools are captured sequentially and the guest is not quiesced", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Create a VM snapshot", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Snapshot request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_vm.CreateVMSnapshotRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_vm_VMSnapshot" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/snapshots/{snapshotId}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a VM snapshot from every recorded ZFS root and remove its metadata record while preserving lineage for any child records", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Delete a VM snapshot", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "VM Snapshot ID", "name": "snapshotId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/snapshots/{snapshotId}/rollback": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Stop the VM if needed, roll every recorded VM ZFS root back to the selected snapshot while destroying newer ZFS snapshots, restore the saved configuration, and attempt to restore the prior running state", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Roll back a VM snapshot", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "VM Snapshot ID", "name": "snapshotId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_libvirt_VMSnapshotRollbackResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/stats": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the finest available statistics window and its availability metadata for a virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Get Initial VM Statistics", "parameters": [ { "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_StatsBootstrap-github_com_alchemillahq_sylve_internal_db_models_vm_VMStats" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "VM Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/stats/{step}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve statistics for a virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Get VM Statistics", "parameters": [ { "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "enum": [ "minutely", "hourly", "daily", "weekly", "monthly", "yearly" ], "type": "string", "description": "Statistics resolution", "name": "step", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_vm_VMStats" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "VM Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/storage": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create or import and attach a storage device to a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Attach storage to a virtual machine", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Storage attachment", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageAttachRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_vm_Storage" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/storage/{storageId}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Detach a storage device from a shut-off virtual machine without deleting its underlying dataset or file", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Detach storage from a virtual machine", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "Storage ID", "name": "storageId", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Partially update an attached storage device on a shut-off virtual machine", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Update virtual machine storage", "parameters": [ { "minimum": 1, "type": "integer", "description": "Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "minimum": 1, "type": "integer", "description": "Storage ID", "name": "storageId", "in": "path", "required": true }, { "description": "Storage changes", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageUpdateRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_vm_Storage" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "413": { "description": "Request Entity Too Large", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vm/{rid}/templates": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Validate and queue creation of a VM template from a shut-off source VM without deleting the source VM", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "VM" ], "summary": "Capture a VM as a template", "parameters": [ { "minimum": 1, "type": "integer", "description": "Source Virtual Machine RID", "name": "rid", "in": "path", "required": true }, { "description": "Template capture request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.ConvertToTemplateRequest" } } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_vm_VMTemplateCaptureTaskResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/vnc/{port}": { "get": { "description": "Validate the requested VM-owned VNC port and upgrade to the existing authenticated WebSocket relay. This documents the HTTP handshake, not WebSocket frames.", "tags": [ "VM" ], "summary": "Open a VM VNC WebSocket", "parameters": [ { "maximum": 65535, "minimum": 1, "type": "integer", "description": "VM-owned VNC port", "name": "port", "in": "path", "required": true }, { "type": "string", "description": "Opaque hex-encoded WebSocket authentication payload", "name": "auth", "in": "query", "required": true }, { "type": "boolean", "description": "Take over an existing VNC session", "name": "overtake", "in": "query" } ], "responses": { "101": { "description": "Switching Protocols", "schema": { "type": "string" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "VNC Port Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "502": { "description": "Bad Gateway", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "503": { "description": "Service Unavailable", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/dashboard/history": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves bounded, downsampled pool and ARC telemetry for the ZFS dashboard", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Get ZFS dashboard history", "parameters": [ { "maximum": 6048000, "minimum": 60, "type": "integer", "default": 86400, "description": "History range in seconds", "name": "rangeSeconds", "in": "query" }, { "maximum": 2000, "minimum": 120, "type": "integer", "default": 900, "description": "Maximum points per series", "name": "maxPoints", "in": "query" }, { "type": "string", "description": "Optional pool GUID", "name": "poolGuid", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_zfs_DashboardHistory" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Pool Not Managed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/dashboard/history/delta": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves pool and ARC telemetry newer than the supplied cursors", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Get ZFS dashboard history delta", "parameters": [ { "minimum": 0, "type": "integer", "description": "Last received pool telemetry row ID", "name": "poolAfter", "in": "query", "required": true }, { "minimum": 0, "type": "integer", "description": "Last received ARC telemetry row ID", "name": "arcAfter", "in": "query", "required": true }, { "type": "string", "description": "Optional pool GUID", "name": "poolGuid", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_zfs_DashboardHistory" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Pool Not Managed", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/dashboard/snapshot": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves current pool state, scan and error summaries, logical I/O, and ARC telemetry", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Get the current ZFS dashboard snapshot", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_zfs_DashboardSnapshot" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/datasets": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get all ZFS datasets", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Get all ZFS datasets", "parameters": [ { "enum": [ "ALL", "SNAPSHOT", "FILESYSTEM", "VOLUME" ], "type": "string", "default": "ALL", "description": "Dataset type", "name": "type", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_gzfs_Dataset" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete one or more ZFS datasets using exact name and GUID pairs", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Bulk delete ZFS datasets", "parameters": [ { "type": "array", "items": { "type": "string" }, "collectionFormat": "multi", "description": "Exact dataset name; pair by index with each guid parameter", "name": "name", "in": "query", "required": true }, { "type": "array", "items": { "type": "string" }, "collectionFormat": "multi", "description": "Dataset GUID; pair by index with each name parameter", "name": "guid", "in": "query", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/datasets/filesystem": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a ZFS filesystem", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Create a ZFS filesystem", "parameters": [ { "description": "Create Filesystem Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_zfs.CreateFilesystemRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/datasets/filesystem/{guid}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a ZFS filesystem", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Delete a ZFS filesystem", "parameters": [ { "type": "string", "description": "Filesystem GUID", "name": "guid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Edit a ZFS filesystem", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Edit a ZFS filesystem", "parameters": [ { "type": "string", "description": "Filesystem GUID", "name": "guid", "in": "path", "required": true }, { "description": "Edit Filesystem Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_zfs.EditFilesystemRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/datasets/paginated": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get all ZFS Datasets with Pagination", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Get all ZFS Datasets with Pagination", "parameters": [ { "enum": [ "ALL", "SNAPSHOT", "FILESYSTEM", "VOLUME" ], "type": "string", "description": "Dataset type", "name": "datasetType", "in": "query", "required": true }, { "type": "integer", "default": 1, "description": "Page number", "name": "page", "in": "query" }, { "type": "integer", "default": 25, "description": "Page size", "name": "size", "in": "query" }, { "type": "string", "description": "Search dataset names", "name": "search", "in": "query" }, { "type": "string", "description": "Comma-separated dataset name substrings to exclude", "name": "nameFilter", "in": "query" }, { "enum": [ "name", "used", "referenced" ], "type": "string", "description": "Sort field", "name": "sort[0][field]", "in": "query" }, { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction", "name": "sort[0][dir]", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_zfs_PaginatedDatasetsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/datasets/snapshot": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a ZFS snapshot", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Create a ZFS snapshot", "parameters": [ { "description": "Create Snapshot Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_zfs.CreateSnapshotRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/datasets/snapshot/periodic": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get all periodic ZFS snapshots jobs", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Get all periodic ZFS snapshot jobs", "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_zfs_PeriodicSnapshot" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a periodic ZFS snapshot job", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Create a periodic ZFS snapshot job", "parameters": [ { "description": "Create Periodic Snapshot Job Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.CreatePeriodicSnapshotJobRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/datasets/snapshot/periodic/{id}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a periodic ZFS snapshot job", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Delete a periodic ZFS snapshot job", "parameters": [ { "minimum": 1, "type": "integer", "description": "Periodic snapshot job ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Modify retention of a periodic ZFS snapshot job", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Modify retention of a periodic ZFS snapshot job", "parameters": [ { "minimum": 1, "type": "integer", "description": "Periodic snapshot job ID", "name": "id", "in": "path", "required": true }, { "description": "Modify Periodic Snapshot Retention Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.ModifyPeriodicSnapshotRetentionRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/datasets/snapshot/{guid}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a ZFS snapshot", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Delete a ZFS snapshot", "parameters": [ { "type": "string", "description": "Snapshot GUID", "name": "guid", "in": "path", "required": true }, { "type": "boolean", "default": false, "description": "Recursively delete descendant snapshots", "name": "recursive", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/datasets/snapshot/{guid}/rollback": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Rollback to a ZFS snapshot", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Rollback to a ZFS snapshot", "parameters": [ { "type": "string", "description": "Snapshot GUID", "name": "guid", "in": "path", "required": true }, { "description": "Rollback Snapshot Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_zfs.RollbackSnapshotRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/datasets/volume": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a ZFS volume", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Create a ZFS volume", "parameters": [ { "description": "Create Volume Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_zfs.CreateVolumeRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/datasets/volume/{guid}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a ZFS volume", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Delete a ZFS volume", "parameters": [ { "type": "string", "description": "Volume GUID", "name": "guid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Edit a ZFS volume", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Edit a ZFS volume", "parameters": [ { "type": "string", "description": "Volume GUID", "name": "guid", "in": "path", "required": true }, { "description": "Edit Volume Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.EditVolumeRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/datasets/volume/{guid}/flash": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Flash a ZFS volume with a UUID pointing to a disk iso/img", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Flash a ZFS volume", "parameters": [ { "type": "string", "description": "Volume GUID", "name": "guid", "in": "path", "required": true }, { "description": "Flash Volume Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_zfs.FlashVolumeRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/pools": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get all ZFS pools", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Get Pools", "parameters": [ { "type": "boolean", "default": false, "description": "Include pools that are not configured as usable", "name": "all", "in": "query" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-array_gzfs_ZPool" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new ZFS pool", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Create Pool", "parameters": [ { "description": "Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.CreateZPoolRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/pools/disks-usage": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get the overall disk usage percentage across all ZFS pools", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Get Disk Usage", "responses": { "200": { "description": "Disk usage percentage", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_zfs_SimpleZFSDiskUsage" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/pools/{guid}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a ZFS pool", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Delete Pool", "parameters": [ { "type": "string", "description": "Pool GUID", "name": "guid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Edit a ZFS pool's properties", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Edit Pool", "parameters": [ { "type": "string", "description": "Pool GUID", "name": "guid", "in": "path", "required": true }, { "description": "Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_zfs.PoolEditRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/pools/{guid}/detach": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Detach a device from a mirrored ZFS pool", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Detach Device", "parameters": [ { "type": "string", "description": "Pool GUID", "name": "guid", "in": "path", "required": true }, { "description": "Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_handlers_zfs.DetachRequest" } } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/pools/{guid}/replace-device": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Replace a device in a ZFS pool", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Replace Device", "parameters": [ { "type": "string", "description": "Pool GUID", "name": "guid", "in": "path", "required": true }, { "description": "Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.ReplaceDevice" } } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/pools/{guid}/scrub": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Start a scrub on a ZFS pool", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Scrub Pool", "parameters": [ { "type": "string", "description": "Pool GUID", "name": "guid", "in": "path", "required": true } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } }, "/zfs/pools/{guid}/status": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get the status of a ZFS pool", "produces": [ "application/json" ], "tags": [ "ZFS" ], "summary": "Get Pool Status", "parameters": [ { "type": "string", "description": "Pool GUID", "name": "guid", "in": "path", "required": true } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-gzfs_ZPoolStatusPool" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal.APIResponse-any" } } } } } }, "definitions": { "github_com_alchemillahq_sylve_internal.APIResponse-any": { "type": "object", "properties": { "data": {}, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_PassedThroughIDs": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models.PassedThroughIDs" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_BackupEvent": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.BackupEvent" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_BackupJob": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.BackupJob" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_BackupTarget": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.BackupTarget" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_BackupTargetNodeReadinessStatus": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.BackupTargetNodeReadinessStatus" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_ClusterNode": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.ClusterNode" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_ClusterNote": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.ClusterNote" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_ReplicationEvent": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.ReplicationEvent" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_cluster_ReplicationPolicy": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.ReplicationPolicy" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_info_AuditRecord": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_info.AuditRecord" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_info_CPU": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_info.CPU" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_info_Note": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_info.Note" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_info_RAM": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_info.RAM" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_info_Swap": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_info.Swap" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_iscsi_ISCSIInitiator": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_iscsi.ISCSIInitiator" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_iscsi_ISCSITarget": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_iscsi.ISCSITarget" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_jail_Jail": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.Jail" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_jail_JailSnapshot": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailSnapshot" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_jail_JailStats": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailStats" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_network_DHCPRange": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.DHCPRange" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_network_FirewallNATRule": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.FirewallNATRule" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_network_FirewallTrafficRule": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.FirewallTrafficRule" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_network_Object": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_network_StaticRoute": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.StaticRoute" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_network_WireGuardClient": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.WireGuardClient" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_task_GuestLifecycleTask": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_task.GuestLifecycleTask" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_utilities_CloudInitTemplate": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.CloudInitTemplate" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_utilities_Downloads": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.Downloads" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_vm_VM": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VM" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_vm_VMSnapshot": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMSnapshot" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_vm_VMStats": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMStats" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_db_models_zfs_PeriodicSnapshot": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_zfs.PeriodicSnapshot" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_cluster_NodeResources": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_cluster.NodeResources" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_disk_Disk": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_disk.Disk" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_info_HistoricalNetworkInterface": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_info.HistoricalNetworkInterface" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_jail_BootstrapEntry": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.BootstrapEntry" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_jail_SimpleList": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.SimpleList" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_jail_SimpleTemplateList": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.SimpleTemplateList" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_libvirt_SimpleList": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.SimpleList" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_libvirt_SimpleTemplateList": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.SimpleTemplateList" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_mdns_MdnsRecordWithManaged": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_mdns.MdnsRecordWithManaged" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_network_FirewallNATRuleCounter": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallNATRuleCounter" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_network_FirewallTrafficRuleCounter": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallTrafficRuleCounter" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_network_StaticRouteSuggestion": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.StaticRouteSuggestion" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_system_FileNode": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_system.FileNode" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_interfaces_services_utilities_UTypeGroupedDownload": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.UTypeGroupedDownload" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_auth_ImportableUnixUser": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_auth.ImportableUnixUser" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_auth_PasskeyCredentialInfo": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_auth.PasskeyCredentialInfo" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_certificates_CertificateView": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_certificates.CertificateView" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_disk_SelfTestScheduleView": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_disk.SelfTestScheduleView" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_dynamicdns_EntryView": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_dynamicdns.EntryView" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_zelta_BackupTargetDatasetInfo": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_zelta.BackupTargetDatasetInfo" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_internal_services_zelta_SnapshotInfo": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_zelta.SnapshotInfo" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_pkg_network_iface_Interface": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_network_iface.Interface" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_github_com_alchemillahq_sylve_pkg_system_pciconf_PCIDevice": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_system_pciconf.PCIDevice" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_gzfs_Dataset": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/gzfs.Dataset" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_gzfs_ZPool": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/gzfs.ZPool" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_internal_handlers_auth_PublicGroup": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/internal_handlers_auth.PublicGroup" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_internal_handlers_auth_PublicUser": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/internal_handlers_auth.PublicUser" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_internal_handlers_samba_SambaShareResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/internal_handlers_samba.SambaShareResponse" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-array_uint": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "integer" } }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_StatsBootstrap-github_com_alchemillahq_sylve_internal_db_models_jail_JailStats": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db.StatsBootstrap-github_com_alchemillahq_sylve_internal_db_models_jail_JailStats" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_StatsBootstrap-github_com_alchemillahq_sylve_internal_db_models_vm_VMStats": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db.StatsBootstrap-github_com_alchemillahq_sylve_internal_db_models_vm_VMStats" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_BasicSettings": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models.BasicSettings" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_PassedThroughIDs": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models.PassedThroughIDs" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_cluster_BackupEvent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.BackupEvent" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_cluster_ReplicationEvent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.ReplicationEvent" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_info_Note": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_info.Note" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_jail_Jail": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.Jail" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_jail_JailSnapshot": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailSnapshot" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_jail_JailTemplate": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailTemplate" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_jail_Network": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.Network" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_mdns_MdnsRecord": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_mdns.MdnsRecord" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_mdns_MdnsSettings": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_mdns.MdnsSettings" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_network_DHCPConfig": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.DHCPConfig" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_network_FirewallAdvancedSettings": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.FirewallAdvancedSettings" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_network_WireGuardServer": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.WireGuardServer" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_samba_SambaSettings": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_samba.SambaSettings" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_task_GuestLifecycleTask": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_task.GuestLifecycleTask" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_utilities_CloudInitTemplate": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.CloudInitTemplate" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_utilities_Downloads": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.Downloads" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_vm_Network": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.Network" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_vm_Storage": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.Storage" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_vm_VM": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VM" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_vm_VMSnapshot": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMSnapshot" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_db_models_vm_VMTemplate": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMTemplate" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_cluster_ClusterDetails": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_cluster.ClusterDetails" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_disk_DiskSelfTestInfo": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_disk.DiskSelfTestInfo" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_BasicInfo": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_info.BasicInfo" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_CPUInfo": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_info.CPUInfo" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_NodeInfo": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_info.NodeInfo" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_RAMInfo": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_info.RAMInfo" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_SummaryHistory": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_info.SummaryHistory" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_info_SwapInfo": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_info.SwapInfo" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_BootstrapCreateResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.BootstrapCreateResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_BootstrapDeleteResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.BootstrapDeleteResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_DeleteJailResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.DeleteJailResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_JailHardwareResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.JailHardwareResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_JailNetworkInheritanceResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.JailNetworkInheritanceResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_SimpleList": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.SimpleList" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_jail_State": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.State" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_libvirt_LvDomain": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.LvDomain" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_libvirt_QemuGuestAgentInfo": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.QemuGuestAgentInfo" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_libvirt_SimpleList": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.SimpleList" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_migration_ValidateResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_migration.ValidateResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_network_FirewallLiveHitsResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallLiveHitsResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_network_Leases": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.Leases" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_network_RenderedConfigResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.RenderedConfigResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_samba_AuditLogsResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_samba.AuditLogsResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_CloudInitTemplateIdentity": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.CloudInitTemplateIdentity" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloadDeleteResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloadDeleteResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloadStartResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloadStartResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_DownloaderUploadCompletion": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloaderUploadCompletion" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_utilities_SignedDownloadURLResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.SignedDownloadURLResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_zfs_DashboardHistory": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardHistory" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_zfs_DashboardSnapshot": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardSnapshot" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_zfs_PaginatedDatasetsResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.PaginatedDatasetsResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_interfaces_services_zfs_SimpleZFSDiskUsage": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.SimpleZFSDiskUsage" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_auth_PasskeyCredentialInfo": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_auth.PasskeyCredentialInfo" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_certificates_CertificateView": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_certificates.CertificateView" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_certificates_DomainCheckResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_certificates.DomainCheckResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_cluster_ClusterStateResyncResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_cluster.ClusterStateResyncResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_cluster_GuestIdentityInventoryReport": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_cluster.GuestIdentityInventoryReport" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_cluster_PeerRemovalConflict": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_cluster.PeerRemovalConflict" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_disk_SelfTestScheduleView": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_disk.SelfTestScheduleView" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_dynamicdns_EntryView": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_dynamicdns.EntryView" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_jail_JailSnapshotRollbackResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_jail.JailSnapshotRollbackResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_libvirt_VMRemovalResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_libvirt.VMRemovalResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_libvirt_VMSnapshotRollbackResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_libvirt.VMSnapshotRollbackResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_notifications_RuleConfigView": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.RuleConfigView" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_notifications_TransportConfigView": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.TransportConfigView" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_system_TunablesResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_system.TunablesResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_zelta_BackupEventProgress": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_zelta.BackupEventProgress" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_zelta_BackupEventsResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_zelta.BackupEventsResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_zelta_BackupJailMetadataInfo": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_zelta.BackupJailMetadataInfo" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_zelta_BackupVMMetadataInfo": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_zelta.BackupVMMetadataInfo" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-github_com_alchemillahq_sylve_internal_services_zelta_ReplicationEventProgress": { "type": "object", "properties": { "data": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_zelta.ReplicationEventProgress" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-gzfs_ZPoolStatusPool": { "type": "object", "properties": { "data": { "$ref": "#/definitions/gzfs.ZPoolStatusPool" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_GroupMutationResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_auth.GroupMutationResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_LoginConfig": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_auth.LoginConfig" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_NextUIDResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_auth.NextUIDResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_PasskeyChallengeResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_auth.PasskeyChallengeResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_SuccessfulLogin": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_auth.SuccessfulLogin" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_UserCapabilities": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_auth.UserCapabilities" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_auth_UserMutationResult": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_auth.UserMutationResult" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_cluster_JoinKeyResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_cluster.JoinKeyResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_events_CreateSSETokenResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_events.CreateSSETokenResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_jail_JailActionResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_jail.JailActionResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_jail_JailCreateResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_jail.JailCreateResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_jail_JailLogsResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_jail.JailLogsResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_jail_JailTemplateCaptureTaskResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_jail.JailTemplateCaptureTaskResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_jail_JailTemplateInstantiationTaskResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_jail.JailTemplateInstantiationTaskResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_migration_MigrationTaskResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_migration.MigrationTaskResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_network_ListSwitchResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_network.ListSwitchResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_notifications_NotificationCountResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_notifications.NotificationCountResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_notifications_NotificationDismissAllResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_notifications.NotificationDismissAllResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_notifications_NotificationListResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_notifications.NotificationListResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_system_RemovePassthroughDeviceResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_system.RemovePassthroughDeviceResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_system_ServiceStateResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_system.ServiceStateResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_system_UploadFileResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_system.UploadFileResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_utilities_DownloadPathsResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_utilities.DownloadPathsResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_utilities_DownloaderUploadAbortResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_utilities.DownloaderUploadAbortResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_utilities_DownloaderUploadReceipt": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_utilities.DownloaderUploadReceipt" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_vm_VMActionResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_vm.VMActionResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_vm_VMCreateResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_vm.VMCreateResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_vm_VMLogsResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_vm.VMLogsResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_vm_VMTemplateCaptureTaskResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_vm.VMTemplateCaptureTaskResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-internal_handlers_vm_VMTemplateInstantiationTaskResponse": { "type": "object", "properties": { "data": { "$ref": "#/definitions/internal_handlers_vm.VMTemplateInstantiationTaskResponse" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-map_string_int": { "type": "object", "properties": { "data": { "$ref": "#/definitions/map_string_int" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-map_string_string": { "type": "object", "properties": { "data": { "$ref": "#/definitions/map_string_string" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal.APIResponse-uint": { "type": "object", "properties": { "data": { "type": "integer" }, "error": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db.GFSStep": { "type": "string", "enum": [ "minutely", "hourly", "daily", "weekly", "monthly", "yearly" ], "x-enum-varnames": [ "GFSStepMinutely", "GFSStepHourly", "GFSStepDaily", "GFSStepWeekly", "GFSStepMonthly", "GFSStepYearly" ] }, "github_com_alchemillahq_sylve_internal_db.StatsBootstrap-github_com_alchemillahq_sylve_internal_db_models_jail_JailStats": { "type": "object", "properties": { "historyState": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db.StatsHistoryState" }, "lastSampleAt": { "type": "string" }, "points": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailStats" } }, "resolvedStep": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db.GFSStep" } } }, "github_com_alchemillahq_sylve_internal_db.StatsBootstrap-github_com_alchemillahq_sylve_internal_db_models_vm_VMStats": { "type": "object", "properties": { "historyState": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db.StatsHistoryState" }, "lastSampleAt": { "type": "string" }, "points": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMStats" } }, "resolvedStep": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db.GFSStep" } } }, "github_com_alchemillahq_sylve_internal_db.StatsHistoryState": { "type": "string", "enum": [ "available", "never-recorded", "outside-supported-range" ], "x-enum-varnames": [ "StatsHistoryAvailable", "StatsHistoryNeverRecorded", "StatsHistoryOutsideSupportedRange" ] }, "github_com_alchemillahq_sylve_internal_db_models.AvailableService": { "type": "string", "enum": [ "dhcp-server", "jails", "samba-server", "virtualization", "wol-server", "firewall", "wireguard", "iscsi", "mdns" ], "x-enum-varnames": [ "DHCPServer", "Jails", "SambaServer", "Virtualization", "WoLServer", "Firewall", "WireGuard", "ISCSI", "Mdns" ] }, "github_com_alchemillahq_sylve_internal_db_models.BasicSettings": { "type": "object", "properties": { "id": { "type": "integer" }, "initialized": { "type": "boolean" }, "pools": { "type": "array", "items": { "type": "string" } }, "restarted": { "type": "boolean" }, "services": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models.AvailableService" } } } }, "github_com_alchemillahq_sylve_internal_db_models.CertificateType": { "type": "string", "enum": [ "imported", "self-signed", "lets-encrypt", "sylve-managed", "system-default" ], "x-enum-varnames": [ "CertificateTypeImported", "CertificateTypeSelfSigned", "CertificateTypeLetsEncrypt", "CertificateTypeSylveManaged", "CertificateTypeSystemDefault" ] }, "github_com_alchemillahq_sylve_internal_db_models.ManagedCertificateOperation": { "type": "string", "enum": [ "initial", "renewal" ], "x-enum-varnames": [ "ManagedCertificateOperationInitial", "ManagedCertificateOperationRenewal" ] }, "github_com_alchemillahq_sylve_internal_db_models.Notification": { "type": "object", "properties": { "body": { "type": "string" }, "createdAt": { "type": "string" }, "dismissedAt": { "type": "string" }, "fingerprint": { "type": "string" }, "firstOccurredAt": { "type": "string" }, "id": { "type": "integer" }, "kind": { "type": "string" }, "lastOccurredAt": { "type": "string" }, "metadata": { "type": "object", "additionalProperties": { "type": "string" } }, "occurrenceCount": { "type": "integer" }, "severity": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models.NotificationSeverity" }, "source": { "type": "string" }, "title": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models.NotificationSeverity": { "type": "string", "enum": [ "info", "warning", "error", "critical" ], "x-enum-varnames": [ "NotificationSeverityInfo", "NotificationSeverityWarning", "NotificationSeverityError", "NotificationSeverityCritical" ] }, "github_com_alchemillahq_sylve_internal_db_models.PassedThroughIDs": { "type": "object", "properties": { "deviceID": { "type": "string" }, "domain": { "type": "integer" }, "id": { "type": "integer" }, "oldDriver": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_cluster.BackupEvent": { "type": "object", "properties": { "completedAt": { "type": "string" }, "createdAt": { "type": "string" }, "error": { "type": "string" }, "id": { "type": "integer" }, "jobId": { "type": "integer" }, "mode": { "type": "string" }, "output": { "description": "zelta output", "type": "string" }, "sourceDataset": { "type": "string" }, "startedAt": { "type": "string" }, "status": { "description": "\"queued\", \"running\", \"success\", \"failed\", \"interrupted\"", "type": "string" }, "targetEndpoint": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_cluster.BackupJob": { "type": "object", "properties": { "createdAt": { "type": "string" }, "cronExpr": { "type": "string" }, "destSuffix": { "description": "appended to target's BackupRoot", "type": "string" }, "enabled": { "type": "boolean" }, "encrypted": { "type": "boolean" }, "friendlySrc": { "type": "string" }, "id": { "type": "integer" }, "jailRootDataset": { "description": "for mode=jail", "type": "string" }, "lastError": { "type": "string" }, "lastRunAt": { "type": "string" }, "lastStatus": { "type": "string" }, "mode": { "description": "\"dataset\" or \"jail\"", "type": "string" }, "name": { "type": "string" }, "nextRunAt": { "type": "string" }, "pruneKeepLast": { "type": "integer" }, "pruneTarget": { "type": "boolean" }, "recursive": { "type": "boolean" }, "runnerNodeId": { "type": "string" }, "scheduleRevision": { "type": "integer" }, "sourceDataset": { "description": "for mode=dataset", "type": "string" }, "stopBeforeBackup": { "type": "boolean" }, "target": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.BackupTarget" }, "targetId": { "type": "integer" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_cluster.BackupTarget": { "type": "object", "properties": { "backupRoot": { "description": "target pool/dataset prefix (e.g., tank/Backups)", "type": "string" }, "createBackupRoot": { "type": "boolean" }, "createdAt": { "type": "string" }, "description": { "type": "string" }, "enabled": { "type": "boolean" }, "id": { "type": "integer" }, "jobs": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.BackupJob" } }, "name": { "type": "string" }, "readiness": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.BackupTargetNodeReadinessStatus" } }, "sshHost": { "description": "user@host", "type": "string" }, "sshKeyPath": { "description": "legacy/local execution path; managed paths are derived per node", "type": "string" }, "sshPort": { "description": "SSH port (default 22)", "type": "integer" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_cluster.BackupTargetNodeReadinessStatus": { "type": "object", "properties": { "configurationCurrent": { "type": "boolean" }, "currentVoter": { "type": "boolean" }, "expired": { "type": "boolean" }, "lastError": { "type": "string" }, "lastVerifiedAt": { "type": "string" }, "nodeId": { "type": "string" }, "ready": { "type": "boolean" }, "readyUntil": { "type": "string" }, "revision": { "type": "integer" }, "targetId": { "type": "integer" }, "validationSucceeded": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_db_models_cluster.Cluster": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "id": { "type": "integer" }, "raftBootstrap": { "type": "boolean" }, "raftIP": { "type": "string" }, "raftPort": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_cluster.ClusterNode": { "type": "object", "properties": { "api": { "type": "string" }, "cpu": { "type": "integer" }, "cpuUsage": { "type": "number" }, "createdAt": { "type": "string" }, "disk": { "type": "integer" }, "diskUsage": { "type": "number" }, "guestIDs": { "type": "array", "items": { "type": "integer" } }, "hostname": { "type": "string" }, "id": { "type": "integer" }, "memory": { "type": "integer" }, "memoryUsage": { "type": "number" }, "nodeUUID": { "type": "string" }, "status": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_cluster.ClusterNote": { "type": "object", "properties": { "content": { "type": "string" }, "createdAt": { "type": "string" }, "id": { "type": "integer" }, "title": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_cluster.ReplicationEvent": { "type": "object", "properties": { "completedAt": { "type": "string" }, "createdAt": { "type": "string" }, "error": { "type": "string" }, "eventType": { "type": "string" }, "guestId": { "type": "integer" }, "guestType": { "type": "string" }, "id": { "type": "integer" }, "message": { "type": "string" }, "output": { "type": "string" }, "policyId": { "type": "integer" }, "scope": { "type": "string" }, "sourceNodeId": { "type": "string" }, "startedAt": { "type": "string" }, "status": { "type": "string" }, "targetNodeId": { "type": "string" }, "transitionRunId": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_cluster.ReplicationPolicy": { "type": "object", "properties": { "activeNodeId": { "type": "string" }, "crashRecovery": { "type": "boolean" }, "crashRestartMax": { "type": "integer" }, "createdAt": { "type": "string" }, "cronExpr": { "type": "string" }, "description": { "type": "string" }, "enabled": { "type": "boolean" }, "failbackMode": { "type": "string" }, "failoverMode": { "type": "string" }, "guestId": { "type": "integer" }, "guestType": { "type": "string" }, "haDegraded": { "type": "boolean" }, "haEligible": { "type": "boolean" }, "haReasons": { "type": "array", "items": { "type": "string" } }, "id": { "type": "integer" }, "lastError": { "type": "string" }, "lastRunAt": { "type": "string" }, "lastStatus": { "type": "string" }, "name": { "type": "string" }, "nextRunAt": { "type": "string" }, "ownerEpoch": { "type": "integer" }, "poolCapacityPct": { "type": "integer" }, "poolHealthCheck": { "type": "boolean" }, "protectionState": { "type": "string" }, "scheduleRevision": { "type": "integer" }, "sourceMode": { "type": "string" }, "sourceNodeId": { "type": "string" }, "targets": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.ReplicationPolicyTarget" } }, "transitionAllowUnsafe": { "type": "boolean" }, "transitionCatchupAt": { "type": "string" }, "transitionCompletedAt": { "type": "string" }, "transitionDemotedAt": { "type": "string" }, "transitionError": { "type": "string" }, "transitionGenerationId": { "type": "string" }, "transitionGenerationManifest": { "type": "string" }, "transitionGenerationOwnerEpoch": { "type": "integer" }, "transitionGenerationRootCount": { "type": "integer" }, "transitionMovePinnedSource": { "type": "boolean" }, "transitionOriginalRunning": { "type": "boolean" }, "transitionOriginalSourceNodeId": { "type": "string" }, "transitionOwnerEpoch": { "type": "integer" }, "transitionPromotedAt": { "type": "string" }, "transitionReason": { "type": "string" }, "transitionRecoveryDeadlineAt": { "type": "string" }, "transitionRequestedAt": { "type": "string" }, "transitionRunId": { "type": "string" }, "transitionSourceNodeId": { "type": "string" }, "transitionState": { "type": "string" }, "transitionTargetNodeId": { "type": "string" }, "transitionTriggerValidationRun": { "type": "boolean" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_cluster.ReplicationPolicyTarget": { "type": "object", "properties": { "completedDatasetCount": { "type": "integer" }, "createdAt": { "type": "string" }, "generationId": { "type": "string" }, "id": { "type": "integer" }, "lastError": { "type": "string" }, "lastVerifiedAt": { "type": "string" }, "manifestHash": { "type": "string" }, "nodeId": { "type": "string" }, "ownerEpoch": { "type": "integer" }, "policyId": { "type": "integer" }, "ready": { "type": "boolean" }, "readyUntil": { "type": "string" }, "requiredDatasetCount": { "type": "integer" }, "updatedAt": { "type": "string" }, "weight": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_info.AuditRecord": { "type": "object", "properties": { "action": { "type": "string" }, "asyncJobId": { "type": "integer" }, "asyncJobType": { "type": "string" }, "authType": { "type": "string" }, "createdAt": { "type": "string" }, "duration": { "$ref": "#/definitions/time.Duration" }, "ended": { "type": "string" }, "error": { "type": "string" }, "id": { "type": "integer" }, "node": { "type": "string" }, "started": { "type": "string" }, "status": { "type": "string" }, "updatedAt": { "type": "string" }, "user": { "type": "string" }, "userId": { "type": "integer" }, "version": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_info.CPU": { "type": "object", "properties": { "createdAt": { "type": "string" }, "id": { "type": "integer" }, "usage": { "type": "number" } } }, "github_com_alchemillahq_sylve_internal_db_models_info.Note": { "type": "object", "properties": { "content": { "type": "string" }, "createdAt": { "type": "string" }, "id": { "type": "integer" }, "title": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_info.RAM": { "type": "object", "properties": { "createdAt": { "type": "string" }, "id": { "type": "integer" }, "usage": { "type": "number" } } }, "github_com_alchemillahq_sylve_internal_db_models_info.Swap": { "type": "object", "properties": { "createdAt": { "type": "string" }, "id": { "type": "integer" }, "usage": { "type": "number" } } }, "github_com_alchemillahq_sylve_internal_db_models_iscsi.ISCSIInitiator": { "type": "object", "properties": { "authMethod": { "type": "string" }, "chapName": { "type": "string" }, "createdAt": { "type": "string" }, "id": { "type": "integer" }, "initiatorName": { "type": "string" }, "nickname": { "type": "string" }, "targetAddress": { "type": "string" }, "targetName": { "type": "string" }, "tgtChapName": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_iscsi.ISCSITarget": { "type": "object", "properties": { "alias": { "type": "string" }, "authMethod": { "type": "string" }, "chapName": { "type": "string" }, "createdAt": { "type": "string" }, "id": { "type": "integer" }, "luns": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_iscsi.ISCSITargetLUN" } }, "mutualChapName": { "type": "string" }, "portals": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_iscsi.ISCSITargetPortal" } }, "targetName": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_iscsi.ISCSITargetLUN": { "type": "object", "properties": { "createdAt": { "type": "string" }, "id": { "type": "integer" }, "lunNumber": { "type": "integer" }, "targetId": { "type": "integer" }, "updatedAt": { "type": "string" }, "zvol": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_iscsi.ISCSITargetPortal": { "type": "object", "properties": { "address": { "type": "string" }, "createdAt": { "type": "string" }, "id": { "type": "integer" }, "port": { "type": "integer" }, "targetId": { "type": "integer" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_jail.Jail": { "type": "object", "properties": { "additionalOptions": { "type": "string" }, "allowedOptions": { "type": "array", "items": { "type": "string" } }, "cleanEnvironment": { "type": "boolean" }, "cores": { "type": "integer" }, "cpuSet": { "type": "array", "items": { "type": "integer" } }, "createdAt": { "type": "string" }, "ctId": { "type": "integer" }, "description": { "type": "string" }, "devfsRuleset": { "type": "string" }, "fstab": { "type": "string" }, "hostname": { "type": "string" }, "id": { "type": "integer" }, "inheritIPv4": { "type": "boolean" }, "inheritIPv6": { "type": "boolean" }, "intentionallyStopped": { "type": "boolean" }, "jailHooks": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailHooks" } }, "memory": { "type": "integer" }, "metadataEnv": { "type": "string" }, "metadataMeta": { "type": "string" }, "name": { "type": "string" }, "networks": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.Network" } }, "resolvConf": { "type": "string" }, "resourceLimits": { "type": "boolean" }, "snapshots": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailSnapshot" } }, "startAtBoot": { "type": "boolean" }, "startLogs": { "type": "string" }, "startOrder": { "type": "integer" }, "startedAt": { "type": "string" }, "stopLogs": { "type": "string" }, "stoppedAt": { "type": "string" }, "storages": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.Storage" } }, "type": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailType" }, "updatedAt": { "type": "string" }, "wol": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_db_models_jail.JailHookPhase": { "type": "string", "enum": [ "prestart", "start", "poststart", "prestop", "stop", "poststop" ], "x-enum-varnames": [ "JailHookPhasePreStart", "JailHookPhaseStart", "JailHookPhasePostStart", "JailHookPhasePreStop", "JailHookPhaseStop", "JailHookPhasePostStop" ] }, "github_com_alchemillahq_sylve_internal_db_models_jail.JailHooks": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "id": { "type": "integer" }, "jid": { "type": "integer" }, "phase": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailHookPhase" }, "script": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_jail.JailSnapshot": { "type": "object", "properties": { "createdAt": { "type": "string" }, "ctId": { "type": "integer" }, "description": { "type": "string" }, "id": { "type": "integer" }, "jid": { "type": "integer" }, "name": { "type": "string" }, "parentSnapshotId": { "type": "integer" }, "rootDataset": { "type": "string" }, "snapshotName": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_jail.JailStats": { "type": "object", "properties": { "cpuUsage": { "type": "number" }, "createdAt": { "type": "string" }, "id": { "type": "integer" }, "jid": { "type": "integer" }, "memoryUsage": { "type": "number" } } }, "github_com_alchemillahq_sylve_internal_db_models_jail.JailTemplate": { "type": "object", "properties": { "additionalOptions": { "type": "string" }, "allowedOptions": { "type": "array", "items": { "type": "string" } }, "cleanEnvironment": { "type": "boolean" }, "cores": { "type": "integer" }, "createdAt": { "type": "string" }, "devfsRuleset": { "type": "string" }, "fstab": { "type": "string" }, "hooks": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailTemplateHook" } }, "id": { "type": "integer" }, "inheritIPv4": { "type": "boolean" }, "inheritIPv6": { "type": "boolean" }, "memory": { "type": "integer" }, "metadataEnv": { "type": "string" }, "metadataMeta": { "type": "string" }, "name": { "type": "string" }, "networks": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailTemplateNetwork" } }, "pool": { "type": "string" }, "resolvConf": { "type": "string" }, "resourceLimits": { "type": "boolean" }, "rootDataset": { "type": "string" }, "sourceJailCtid": { "type": "integer" }, "sourceJailName": { "type": "string" }, "type": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailType" }, "updatedAt": { "type": "string" }, "wol": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_db_models_jail.JailTemplateHook": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "phase": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailHookPhase" }, "script": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_jail.JailTemplateNetwork": { "type": "object", "properties": { "defaultGateway": { "type": "boolean" }, "dhcp": { "type": "boolean" }, "name": { "type": "string" }, "slaac": { "type": "boolean" }, "switchId": { "type": "integer" }, "switchType": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_jail.JailType": { "type": "string", "enum": [ "freebsd", "linux" ], "x-enum-varnames": [ "JailTypeFreeBSD", "JailTypeLinux" ] }, "github_com_alchemillahq_sylve_internal_db_models_jail.Network": { "type": "object", "properties": { "defaultGateway": { "type": "boolean" }, "dhcp": { "type": "boolean" }, "id": { "type": "integer" }, "ipv4GwId": { "type": "integer" }, "ipv4GwObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "ipv4Id": { "type": "integer" }, "ipv4Obj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "ipv6GwId": { "type": "integer" }, "ipv6GwObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "ipv6Id": { "type": "integer" }, "ipv6Obj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "jid": { "type": "integer" }, "macId": { "type": "integer" }, "macObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "manualSwitch": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.ManualSwitch" }, "name": { "type": "string" }, "slaac": { "type": "boolean" }, "standardSwitch": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.StandardSwitch" }, "switchId": { "type": "integer" }, "switchType": { "type": "string" }, "vlan": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_jail.Storage": { "type": "object", "properties": { "guid": { "type": "string" }, "id": { "type": "integer" }, "isBase": { "type": "boolean" }, "jid": { "type": "integer" }, "name": { "type": "string" }, "pool": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_mdns.MdnsRecord": { "type": "object", "properties": { "createdAt": { "type": "string" }, "id": { "type": "integer" }, "interfaces": { "type": "string" }, "name": { "type": "string" }, "port": { "type": "integer" }, "txt": { "type": "object", "additionalProperties": { "type": "string" } }, "type": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_mdns.MdnsSettings": { "type": "object", "properties": { "hostname": { "type": "string" }, "id": { "type": "integer" }, "interfaces": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.DHCPConfig": { "type": "object", "properties": { "createdAt": { "type": "string" }, "dnsServers": { "type": "array", "items": { "type": "string" } }, "domain": { "type": "string" }, "expandHosts": { "type": "boolean" }, "id": { "type": "integer" }, "manualSwitches": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.ManualSwitch" } }, "standardSwitches": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.StandardSwitch" } }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.DHCPRange": { "type": "object", "properties": { "createdAt": { "type": "string" }, "endIp": { "type": "string" }, "expiry": { "type": "integer" }, "id": { "type": "integer" }, "manualSwitch": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.ManualSwitch" }, "manualSwitchId": { "type": "integer" }, "raOnly": { "type": "boolean" }, "slaac": { "type": "boolean" }, "standardSwitch": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.StandardSwitch" }, "standardSwitchId": { "type": "integer" }, "startIp": { "type": "string" }, "type": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.DHCPStaticLease": { "type": "object", "properties": { "comments": { "type": "string" }, "createdAt": { "type": "string" }, "dhcpRange": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.DHCPRange" }, "dhcpRangeId": { "type": "integer" }, "duidObject": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "duidObjectId": { "type": "integer" }, "expiry": { "type": "integer" }, "hostname": { "type": "string" }, "id": { "type": "integer" }, "ipObject": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "ipObjectId": { "description": "Per-range uniqueness on each object reference (Postgres \u0026 MySQL allow multiple NULLs)", "type": "integer" }, "macObject": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "macObjectId": { "type": "integer" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.FirewallAdvancedSettings": { "type": "object", "properties": { "createdAt": { "type": "string" }, "id": { "type": "integer" }, "postNatDecl": { "type": "string" }, "postRules": { "type": "string" }, "postTrafficAnchor": { "type": "string" }, "preNatDecl": { "type": "string" }, "preRules": { "type": "string" }, "preTrafficAnchor": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.FirewallNATRule": { "type": "object", "properties": { "createdAt": { "type": "string" }, "description": { "type": "string" }, "destObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "destObjId": { "type": "integer" }, "destRaw": { "type": "string" }, "dnatTargetObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "dnatTargetObjId": { "type": "integer" }, "dnatTargetRaw": { "type": "string" }, "dstPortObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "dstPortObjId": { "type": "integer" }, "dstPortsRaw": { "type": "string" }, "egressInterfaces": { "description": "on style match", "type": "array", "items": { "type": "string" } }, "enabled": { "type": "boolean" }, "family": { "description": "any|inet|inet6", "type": "string" }, "id": { "type": "integer" }, "ingressInterfaces": { "description": "received-on style match", "type": "array", "items": { "type": "string" } }, "log": { "type": "boolean" }, "name": { "type": "string" }, "natType": { "description": "snat|dnat|binat", "type": "string" }, "policyRouteGateway": { "type": "string" }, "policyRoutingEnabled": { "type": "boolean" }, "priority": { "type": "integer" }, "protocol": { "description": "any|tcp|udp|icmp", "type": "string" }, "redirectPortObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "redirectPortObjId": { "type": "integer" }, "redirectPortsRaw": { "type": "string" }, "sourceObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "sourceObjId": { "type": "integer" }, "sourceRaw": { "type": "string" }, "translateMode": { "description": "interface|address", "type": "string" }, "translateToObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "translateToObjId": { "type": "integer" }, "translateToRaw": { "type": "string" }, "updatedAt": { "type": "string" }, "visible": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.FirewallTrafficRule": { "type": "object", "properties": { "action": { "description": "pass|block", "type": "string" }, "createdAt": { "type": "string" }, "description": { "type": "string" }, "destObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "destObjId": { "type": "integer" }, "destRaw": { "type": "string" }, "direction": { "type": "string" }, "dstPortObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "dstPortObjId": { "type": "integer" }, "dstPortsRaw": { "type": "string" }, "egressInterfaces": { "type": "array", "items": { "type": "string" } }, "enabled": { "type": "boolean" }, "family": { "description": "any|inet|inet6", "type": "string" }, "id": { "type": "integer" }, "ingressInterfaces": { "type": "array", "items": { "type": "string" } }, "log": { "type": "boolean" }, "name": { "type": "string" }, "priority": { "type": "integer" }, "protocol": { "description": "any|tcp|udp|tcp_udp|icmp", "type": "string" }, "quick": { "type": "boolean" }, "sourceObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "sourceObjId": { "type": "integer" }, "sourceRaw": { "type": "string" }, "srcPortObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "srcPortObjId": { "type": "integer" }, "srcPortsRaw": { "type": "string" }, "updatedAt": { "type": "string" }, "visible": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.ManualSwitch": { "type": "object", "properties": { "bridge": { "type": "string" }, "createdAt": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.NetworkPort": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "switch": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.StandardSwitch" }, "switchId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.Object": { "type": "object", "properties": { "autoUpdate": { "type": "boolean" }, "createdAt": { "type": "string" }, "description": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.ObjectEntry" } }, "id": { "type": "integer" }, "isUsed": { "type": "boolean" }, "isUsedBy": { "description": "\"\", \"dhcp\" for now", "type": "string" }, "lastRefreshAt": { "type": "string" }, "lastRefreshError": { "type": "string" }, "name": { "type": "string" }, "refreshIntervalSeconds": { "type": "integer" }, "resolutionChecksum": { "type": "string" }, "resolutions": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.ObjectResolution" } }, "sourceChecksum": { "type": "string" }, "type": { "description": "\"Host\", \"Mac\", \"Network\", \"Port\", \"Country\", \"List\", \"FQDN\", \"DUID\"", "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.ObjectEntry": { "type": "object", "properties": { "createdAt": { "type": "string" }, "id": { "type": "integer" }, "objectId": { "type": "integer" }, "updatedAt": { "type": "string" }, "value": { "description": "IP, CIDR, port, country code, FQDN, etc.", "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.ObjectResolution": { "type": "object", "properties": { "createdAt": { "type": "string" }, "id": { "type": "integer" }, "objectId": { "type": "integer" }, "resolvedIp": { "description": "deprecated mirror for resolved IP entries", "type": "string" }, "resolvedValue": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.StandardSwitch": { "type": "object", "properties": { "address": { "type": "string" }, "address6": { "type": "string" }, "address6Id": { "type": "integer" }, "address6Obj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "addressId": { "type": "integer" }, "addressObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "bridgeName": { "type": "string" }, "createdAt": { "type": "string" }, "defaultRoute": { "type": "boolean" }, "dhcp": { "type": "boolean" }, "disableBridgeOffloads": { "description": "DisableBridgeOffloads keeps FreeBSD from changing bridge-member\ncapabilities as transient tap and epair interfaces come and go.\nSorts flapping issues (Please tell @hayzam if you faced flapping before/after enabling this option).", "type": "boolean" }, "disableIPv6": { "type": "boolean" }, "gateway6AddressId": { "type": "integer" }, "gateway6AddressObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "gateway6Manual": { "type": "string" }, "gatewayAddressId": { "type": "integer" }, "gatewayAddressObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "gatewayManual": { "type": "string" }, "id": { "type": "integer" }, "mtu": { "type": "integer" }, "name": { "type": "string" }, "network6Id": { "type": "integer" }, "network6Manual": { "type": "string" }, "network6Obj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "networkId": { "type": "integer" }, "networkManual": { "type": "string" }, "networkObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "ports": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.NetworkPort" } }, "private": { "type": "boolean" }, "slaac": { "type": "boolean" }, "updatedAt": { "type": "string" }, "vlan": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.StaticRoute": { "type": "object", "properties": { "createdAt": { "type": "string" }, "description": { "type": "string" }, "destination": { "type": "string" }, "destinationObjId": { "type": "integer" }, "destinationRaw": { "type": "string" }, "destinationType": { "description": "host|network", "type": "string" }, "enabled": { "type": "boolean" }, "family": { "description": "inet|inet6", "type": "string" }, "fib": { "type": "integer" }, "gateway": { "type": "string" }, "gatewayObjId": { "type": "integer" }, "gatewayRaw": { "type": "string" }, "gatewayZone": { "description": "IPv6 link-local scope interface (zone id)", "type": "string" }, "id": { "type": "integer" }, "interface": { "type": "string" }, "name": { "type": "string" }, "nextHopMode": { "description": "gateway|interface", "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.WireGuardClient": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" } }, "allowedIPs": { "type": "array", "items": { "type": "string" } }, "createdAt": { "type": "string" }, "enabled": { "type": "boolean" }, "endpointHost": { "type": "string" }, "endpointPort": { "type": "integer" }, "fib": { "type": "integer" }, "id": { "type": "integer" }, "lastHandshake": { "type": "string" }, "listenPort": { "type": "integer" }, "metric": { "type": "integer" }, "mtu": { "type": "integer" }, "name": { "type": "string" }, "peerPublicKey": { "type": "string" }, "persistentKeepalive": { "type": "boolean" }, "preSharedKey": { "type": "string" }, "privateKey": { "type": "string" }, "publicKey": { "type": "string" }, "restartedAt": { "type": "string" }, "routeAllowedIPs": { "type": "boolean" }, "rx": { "type": "integer" }, "tx": { "type": "integer" }, "updatedAt": { "type": "string" }, "uptime": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.WireGuardServer": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" } }, "allowWireGuardPort": { "type": "boolean" }, "createdAt": { "type": "string" }, "enabled": { "type": "boolean" }, "id": { "type": "integer" }, "lastHandshake": { "type": "string" }, "masqueradeIPv4Interface": { "type": "string" }, "masqueradeIPv6Interface": { "type": "string" }, "metric": { "type": "integer" }, "mtu": { "type": "integer" }, "peers": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.WireGuardServerPeer" } }, "port": { "type": "integer" }, "privateKey": { "type": "string" }, "publicKey": { "type": "string" }, "restartedAt": { "type": "string" }, "rx": { "type": "integer" }, "tx": { "type": "integer" }, "updatedAt": { "type": "string" }, "uptime": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_network.WireGuardServerPeer": { "type": "object", "properties": { "clientIPs": { "type": "array", "items": { "type": "string" } }, "createdAt": { "type": "string" }, "enabled": { "type": "boolean" }, "id": { "type": "integer" }, "lastHandshake": { "type": "string" }, "name": { "type": "string" }, "persistentKeepalive": { "type": "boolean" }, "preSharedKey": { "type": "string" }, "privateKey": { "type": "string" }, "publicKey": { "type": "string" }, "routableIPs": { "type": "array", "items": { "type": "string" } }, "routeIPs": { "type": "boolean" }, "rx": { "type": "integer" }, "tx": { "type": "integer" }, "updatedAt": { "type": "string" }, "wireguardServerId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_samba.SambaAuditLog": { "type": "object", "properties": { "action": { "type": "string" }, "client": { "type": "string" }, "createdAt": { "type": "string" }, "folder": { "type": "string" }, "id": { "type": "integer" }, "ip": { "type": "string" }, "occurrences": { "type": "integer" }, "path": { "type": "string" }, "result": { "type": "string" }, "retentionDays": { "type": "integer" }, "share": { "type": "string" }, "shareId": { "type": "integer" }, "target": { "type": "string" }, "user": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_samba.SambaSettings": { "type": "object", "properties": { "advertiseMdns": { "type": "boolean" }, "appleExtensions": { "type": "boolean" }, "bindInterfacesOnly": { "type": "boolean" }, "id": { "type": "integer" }, "interfaces": { "type": "string" }, "serverString": { "type": "string" }, "unixCharset": { "type": "string" }, "workgroup": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_task.GuestLifecycleTask": { "type": "object", "properties": { "action": { "type": "string" }, "createdAt": { "type": "string" }, "error": { "type": "string" }, "finishedAt": { "type": "string" }, "guestId": { "type": "integer" }, "guestType": { "type": "string" }, "id": { "type": "integer" }, "message": { "type": "string" }, "overrideRequested": { "type": "boolean" }, "payload": { "type": "string" }, "requestedBy": { "type": "string" }, "source": { "type": "string" }, "startedAt": { "type": "string" }, "status": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_utilities.CloudInitTemplate": { "type": "object", "properties": { "createdAt": { "type": "string" }, "id": { "type": "integer" }, "meta": { "type": "string" }, "name": { "type": "string" }, "networkConfig": { "type": "string" }, "updatedAt": { "type": "string" }, "user": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadStatus": { "type": "string", "enum": [ "pending", "processing", "done", "failed" ], "x-enum-varnames": [ "DownloadStatusPending", "DownloadStatusProcessing", "DownloadStatusDone", "DownloadStatusFailed" ] }, "github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadType": { "type": "string", "enum": [ "http", "torrent", "path" ], "x-enum-varnames": [ "DownloadTypeHTTP", "DownloadTypeTorrent", "DownloadTypePath" ] }, "github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadUType": { "type": "string", "enum": [ "base-rootfs", "cloud-init", "uncategorized" ], "x-enum-varnames": [ "DownloadUTypeBase", "DownloadUTypeCloudInit", "DownloadUTypeOther" ] }, "github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadedFile": { "type": "object", "properties": { "download": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.Downloads" }, "downloadId": { "type": "integer" }, "id": { "type": "integer" }, "name": { "type": "string" }, "size": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_utilities.Downloads": { "type": "object", "properties": { "automaticExtraction": { "type": "boolean" }, "automaticRawConversion": { "type": "boolean" }, "createdAt": { "type": "string" }, "error": { "type": "string" }, "extractedPath": { "type": "string" }, "files": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadedFile" } }, "id": { "type": "integer" }, "ignoreTLS": { "type": "boolean" }, "name": { "type": "string" }, "path": { "type": "string" }, "progress": { "type": "integer" }, "size": { "type": "integer" }, "status": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadStatus" }, "type": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadType" }, "uType": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadUType" }, "updatedAt": { "type": "string" }, "url": { "type": "string" }, "uuid": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_utilities.UploadStatus": { "type": "string", "enum": [ "staged", "completed" ], "x-enum-varnames": [ "UploadStatusStaged", "UploadStatusCompleted" ] }, "github_com_alchemillahq_sylve_internal_db_models_vm.Network": { "type": "object", "properties": { "emulation": { "type": "string" }, "enable": { "type": "boolean" }, "id": { "type": "integer" }, "mac": { "type": "string" }, "macId": { "type": "integer" }, "macObj": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.Object" }, "manualSwitch": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.ManualSwitch" }, "standardSwitch": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.StandardSwitch" }, "switchId": { "type": "integer" }, "switchType": { "type": "string" }, "vmId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_vm.Storage": { "type": "object", "properties": { "bootOrder": { "type": "integer" }, "dataset": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMStorageDataset" }, "datasetId": { "type": "integer" }, "emulation": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMStorageEmulationType" }, "enable": { "type": "boolean" }, "filesystemTarget": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" }, "pool": { "type": "string" }, "readOnly": { "type": "boolean" }, "recordSize": { "type": "integer" }, "size": { "type": "integer" }, "type": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMStorageType" }, "uuid": { "type": "string" }, "vmId": { "type": "integer" }, "volBlockSize": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_vm.TimeOffset": { "type": "string", "enum": [ "utc", "localtime" ], "x-enum-varnames": [ "TimeOffsetUTC", "TimeOffsetLocal" ] }, "github_com_alchemillahq_sylve_internal_db_models_vm.VM": { "type": "object", "properties": { "acpi": { "type": "boolean" }, "apic": { "type": "boolean" }, "bootRom": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMBootROM" }, "cloudInitData": { "type": "string" }, "cloudInitMetaData": { "type": "string" }, "cloudInitNetworkConfig": { "type": "string" }, "cpuCores": { "type": "integer" }, "cpuPinning": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMCPUPinning" } }, "cpuSockets": { "type": "integer" }, "cpuThreads": { "type": "integer" }, "createdAt": { "type": "string" }, "description": { "type": "string" }, "extraBhyveOptions": { "type": "array", "items": { "type": "string" } }, "id": { "type": "integer" }, "ignoreUMSR": { "type": "boolean" }, "intentionallyStopped": { "type": "boolean" }, "name": { "type": "string" }, "networks": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.Network" } }, "pciDevices": { "type": "array", "items": { "type": "integer" } }, "qemuGuestAgent": { "type": "boolean" }, "ram": { "type": "integer" }, "rid": { "type": "integer" }, "serial": { "type": "boolean" }, "shutdownWaitTime": { "type": "integer" }, "snapshots": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMSnapshot" } }, "startAtBoot": { "type": "boolean" }, "startOrder": { "type": "integer" }, "startedAt": { "type": "string" }, "state": { "$ref": "#/definitions/libvirt.DomainState" }, "stoppedAt": { "type": "string" }, "storages": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.Storage" } }, "timeOffset": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.TimeOffset" }, "tpmEmulation": { "type": "boolean" }, "updatedAt": { "type": "string" }, "vncBind": { "type": "string" }, "vncEnabled": { "type": "boolean" }, "vncPassword": { "type": "string" }, "vncPort": { "type": "integer" }, "vncResolution": { "type": "string" }, "vncWait": { "type": "boolean" }, "wol": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_db_models_vm.VMBootROM": { "type": "string", "enum": [ "uefi", "uboot", "none" ], "x-enum-varnames": [ "VMBootROMUEFI", "VMBootROMUBoot", "VMBootROMNone" ] }, "github_com_alchemillahq_sylve_internal_db_models_vm.VMCPUPinning": { "type": "object", "properties": { "hostCpu": { "type": "array", "items": { "type": "integer" } }, "hostSocket": { "type": "integer" }, "id": { "type": "integer" }, "vmId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_vm.VMSnapshot": { "type": "object", "properties": { "createdAt": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" }, "parentSnapshotId": { "type": "integer" }, "rid": { "type": "integer" }, "rootDatasets": { "type": "array", "items": { "type": "string" } }, "snapshotName": { "type": "string" }, "updatedAt": { "type": "string" }, "vmId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_vm.VMStats": { "type": "object", "properties": { "cpuUsage": { "type": "number" }, "createdAt": { "type": "string" }, "id": { "type": "integer" }, "memoryUsage": { "type": "number" }, "memoryUsed": { "type": "number" }, "vmId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_vm.VMStorageDataset": { "type": "object", "properties": { "guid": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" }, "pool": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_vm.VMStorageEmulationType": { "type": "string", "enum": [ "virtio-blk", "virtio-9p", "ahci-hd", "ahci-cd", "nvme" ], "x-enum-varnames": [ "VirtIOStorageEmulation", "VirtIO9PStorageEmulation", "AHCIHDStorageEmulation", "AHCICDStorageEmulation", "NVMEStorageEmulation" ] }, "github_com_alchemillahq_sylve_internal_db_models_vm.VMStorageType": { "type": "string", "enum": [ "raw", "zvol", "image", "filesystem" ], "x-enum-varnames": [ "VMStorageTypeRaw", "VMStorageTypeZVol", "VMStorageTypeDiskImage", "VMStorageTypeFilesystem" ] }, "github_com_alchemillahq_sylve_internal_db_models_vm.VMTemplate": { "type": "object", "properties": { "acpi": { "type": "boolean" }, "apic": { "type": "boolean" }, "bootRom": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMBootROM" }, "cloudInitData": { "type": "string" }, "cloudInitMetaData": { "type": "string" }, "cloudInitNetworkConfig": { "type": "string" }, "cpuCores": { "type": "integer" }, "cpuSockets": { "type": "integer" }, "cpuThreads": { "type": "integer" }, "createdAt": { "type": "string" }, "description": { "type": "string" }, "extraBhyveOptions": { "type": "array", "items": { "type": "string" } }, "id": { "type": "integer" }, "ignoreUMSR": { "type": "boolean" }, "name": { "type": "string" }, "networks": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMTemplateNetwork" } }, "qemuGuestAgent": { "type": "boolean" }, "ram": { "type": "integer" }, "serial": { "type": "boolean" }, "shutdownWaitTime": { "type": "integer" }, "sourceVmName": { "type": "string" }, "sourceVmRid": { "type": "integer" }, "startAtBoot": { "type": "boolean" }, "startOrder": { "type": "integer" }, "storages": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMTemplateStorage" } }, "timeOffset": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.TimeOffset" }, "tpmEmulation": { "type": "boolean" }, "updatedAt": { "type": "string" }, "vncBind": { "type": "string" }, "vncEnabled": { "type": "boolean" }, "vncResolution": { "type": "string" }, "vncWait": { "type": "boolean" }, "wol": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_db_models_vm.VMTemplateNetwork": { "type": "object", "properties": { "emulation": { "type": "string" }, "name": { "type": "string" }, "switchName": { "type": "string" }, "switchType": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_db_models_vm.VMTemplateStorage": { "type": "object", "properties": { "bootOrder": { "type": "integer" }, "emulation": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMStorageEmulationType" }, "enable": { "type": "boolean" }, "estimatedBytes": { "type": "integer" }, "pool": { "type": "string" }, "recordSize": { "type": "integer" }, "size": { "type": "integer" }, "sourceStorageId": { "type": "integer" }, "templateDataset": { "type": "string" }, "type": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMStorageType" }, "volBlockSize": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_db_models_zfs.PeriodicSnapshot": { "type": "object", "properties": { "createdAt": { "type": "string" }, "cronExpr": { "type": "string" }, "guid": { "type": "string" }, "id": { "type": "integer" }, "interval": { "type": "integer" }, "keepDaily": { "description": "e.g., keep 7 daily", "type": "integer" }, "keepHourly": { "description": "GFS Retention", "type": "integer" }, "keepLast": { "description": "Simple Retention", "type": "integer" }, "keepMonthly": { "description": "e.g., keep 12 monthly", "type": "integer" }, "keepWeekly": { "description": "e.g., keep 4 weekly", "type": "integer" }, "keepYearly": { "description": "e.g., keep 3 yearly", "type": "integer" }, "lastRunAt": { "type": "string" }, "maxAgeDays": { "description": "e.g., 30 (delete older than 30 days)", "type": "integer" }, "pool": { "type": "string" }, "prefix": { "type": "string" }, "recursive": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_cluster.BackupJobReq": { "type": "object", "required": [ "mode", "name", "targetId" ], "properties": { "cronExpr": { "type": "string" }, "enabled": { "type": "boolean" }, "jailRootDataset": { "type": "string" }, "mode": { "type": "string" }, "name": { "type": "string", "minLength": 2 }, "pruneKeepLast": { "type": "integer" }, "pruneTarget": { "type": "boolean" }, "recursive": { "type": "boolean" }, "runnerNodeId": { "type": "string" }, "sourceDataset": { "type": "string" }, "stopBeforeBackup": { "type": "boolean" }, "targetId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_cluster.BackupTargetReq": { "type": "object", "required": [ "backupRoot", "name", "sshHost" ], "properties": { "backupRoot": { "type": "string", "minLength": 2 }, "createBackupRoot": { "type": "boolean" }, "description": { "type": "string" }, "enabled": { "type": "boolean" }, "id": { "type": "integer" }, "name": { "type": "string", "minLength": 2 }, "sshHost": { "type": "string", "minLength": 3 }, "sshKey": { "type": "string" }, "sshPort": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_cluster.ClusterDetails": { "type": "object", "properties": { "cluster": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.Cluster" }, "leaderAddress": { "type": "string" }, "leaderId": { "type": "string" }, "nodeId": { "type": "string" }, "nodes": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_cluster.RaftNode" } }, "partial": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_cluster.NodeHealthSync": { "type": "object", "properties": { "api": { "type": "string" }, "cpu": { "type": "integer" }, "cpuUsage": { "type": "number" }, "disk": { "type": "integer" }, "diskUsage": { "type": "number" }, "guestIds": { "type": "array", "items": { "type": "integer" } }, "hostname": { "type": "string" }, "memory": { "type": "integer" }, "memoryUsage": { "type": "number" }, "nodeUuid": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_cluster.NodeResources": { "type": "object", "properties": { "hostname": { "type": "string" }, "jailTemplates": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.SimpleTemplateList" } }, "jails": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.SimpleList" } }, "nodeUUID": { "type": "string" }, "vmTemplates": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.SimpleTemplateList" } }, "vms": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.SimpleList" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_cluster.RaftNode": { "type": "object", "properties": { "address": { "type": "string" }, "guestIDs": { "type": "array", "items": { "type": "integer" } }, "id": { "type": "string" }, "isLeader": { "type": "boolean" }, "suffrage": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_cluster.ReplicationPolicyReq": { "type": "object", "required": [ "guestId", "guestType", "name", "targets" ], "properties": { "crashRecovery": { "type": "boolean" }, "crashRestartMax": { "type": "integer" }, "cronExpr": { "type": "string" }, "description": { "type": "string" }, "enabled": { "type": "boolean" }, "failbackMode": { "type": "string" }, "failoverMode": { "type": "string" }, "guestId": { "type": "integer" }, "guestType": { "type": "string" }, "name": { "type": "string", "minLength": 2 }, "poolCapacityPct": { "type": "integer" }, "poolHealthCheck": { "type": "boolean" }, "sourceMode": { "type": "string" }, "sourceNodeId": { "type": "string" }, "targets": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_cluster.ReplicationPolicyTargetReq" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_cluster.ReplicationPolicyTargetReq": { "type": "object", "required": [ "nodeId" ], "properties": { "nodeId": { "type": "string" }, "weight": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_disk.Disk": { "type": "object", "properties": { "device": { "type": "string" }, "gpt": { "type": "boolean" }, "identityStable": { "type": "boolean" }, "model": { "type": "string" }, "partitions": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_disk.Partition" } }, "selfTestLog": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_disk.DiskSelfTestLog" }, "serial": { "type": "string" }, "size": { "type": "integer" }, "smartData": {}, "type": { "type": "string" }, "usage": { "type": "string" }, "uuid": { "type": "string" }, "wearOut": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_disk.DiskSelfTestCapabilities": { "type": "object", "properties": { "abort": { "type": "boolean" }, "conveyance": { "type": "boolean" }, "conveyance_captive": { "type": "boolean" }, "conveyance_duration_minutes": { "type": "integer" }, "default": { "type": "boolean" }, "execution_support_known": { "type": "boolean" }, "extended": { "type": "boolean" }, "extended_captive": { "type": "boolean" }, "extended_duration_minutes": { "type": "integer" }, "namespace_id": { "type": "integer" }, "offline": { "type": "boolean" }, "offline_duration_minutes": { "type": "integer" }, "progress": { "type": "boolean" }, "protocol": { "type": "string" }, "result_log": { "type": "boolean" }, "scope": { "type": "string" }, "selective": { "type": "boolean" }, "selective_captive": { "type": "boolean" }, "short": { "type": "boolean" }, "short_captive": { "type": "boolean" }, "short_duration_minutes": { "type": "integer" }, "single_operation": { "type": "boolean" }, "supported": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_disk.DiskSelfTestEntry": { "type": "object", "properties": { "lba": { "type": "integer" }, "lba_valid": { "type": "boolean" }, "lifetime_hours": { "type": "integer" }, "nsid": { "type": "integer" }, "nsid_valid": { "type": "boolean" }, "remaining_pct": { "type": "integer" }, "status": { "type": "string" }, "type": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_disk.DiskSelfTestInfo": { "type": "object", "properties": { "capabilities": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_disk.DiskSelfTestCapabilities" }, "device": { "type": "string" }, "status": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_disk.DiskSelfTestState" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_disk.DiskSelfTestLog": { "type": "object", "properties": { "checksum_valid": { "type": "boolean" }, "entries": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_disk.DiskSelfTestEntry" } }, "in_progress": { "type": "boolean" }, "progress_pct": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_disk.DiskSelfTestResult": { "type": "object", "properties": { "asc": { "type": "integer" }, "ascq": { "type": "integer" }, "checkpoint": { "type": "integer" }, "lba": { "type": "integer" }, "lba_exact": { "type": "string" }, "lba_valid": { "type": "boolean" }, "lifetime_hours": { "type": "integer" }, "lifetime_hours_exact": { "type": "string" }, "mode": { "type": "string" }, "nsid": { "type": "integer" }, "nsid_valid": { "type": "boolean" }, "outcome": { "type": "string" }, "parameter_code": { "type": "integer" }, "protocol": { "type": "string" }, "remaining_pct": { "type": "integer" }, "segment_num": { "type": "integer" }, "sense_key": { "type": "integer" }, "started_at": { "type": "string" }, "status": { "type": "string" }, "status_code": { "type": "integer" }, "status_code_type": { "type": "integer" }, "status_code_type_valid": { "type": "boolean" }, "status_code_valid": { "type": "boolean" }, "type": { "type": "string" }, "vendor_specific": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_disk.DiskSelfTestState": { "type": "object", "properties": { "checksum_valid": { "type": "boolean" }, "estimated_duration_minutes": { "type": "integer" }, "execution_status": { "type": "string" }, "namespace_id": { "type": "integer" }, "offline_collection_running": { "type": "boolean" }, "offline_collection_status": { "type": "string" }, "progress_known": { "type": "boolean" }, "progress_pct": { "type": "integer" }, "protocol": { "type": "string" }, "remaining_known": { "type": "boolean" }, "remaining_pct": { "type": "integer" }, "results": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_disk.DiskSelfTestResult" } }, "running": { "type": "boolean" }, "state": { "type": "string" }, "type": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_disk.Partition": { "type": "object", "properties": { "name": { "type": "string" }, "size": { "type": "integer" }, "usage": { "type": "string" }, "uuid": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_info.Architecture": { "type": "string", "enum": [ "amd64", "386", "arm", "arm64", "riscv64", "ppc64", "ppc64le", "s390x", "wasm", "loong64" ], "x-enum-varnames": [ "ArchAMD64", "Arch386", "ArchARM", "ArchARM64", "ArchRISCV64", "ArchPPC64", "ArchPPC64LE", "ArchS390X", "ArchWASM", "ArchLOONG64" ] }, "github_com_alchemillahq_sylve_internal_interfaces_services_info.BasicInfo": { "type": "object", "properties": { "bootMode": { "type": "string" }, "devFSDisabled": { "type": "boolean" }, "hostname": { "type": "string" }, "loadAverage": { "type": "string" }, "os": { "type": "string" }, "sylveCommit": { "type": "string" }, "sylveVersion": { "type": "string" }, "uptime": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_info.CPUInfo": { "type": "object", "properties": { "architecture": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_info.Architecture" }, "cache": { "type": "object", "properties": { "l1d": { "type": "integer" }, "l1i": { "type": "integer" }, "l2": { "type": "integer" }, "l3": { "type": "integer" } } }, "cacheLine": { "type": "integer" }, "family": { "type": "integer" }, "features": { "type": "array", "items": { "type": "string" } }, "frequency": { "type": "integer" }, "logicalCores": { "type": "integer" }, "model": { "type": "integer" }, "name": { "type": "string" }, "physicalCores": { "type": "integer" }, "sockets": { "type": "integer" }, "threadsPerCore": { "type": "integer" }, "usage": { "type": "number" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_info.HistoricalNetworkInterface": { "type": "object", "properties": { "createdAt": { "type": "string" }, "receivedBytes": { "type": "integer" }, "sentBytes": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_info.NodeInfo": { "type": "object", "properties": { "cpuUsage": { "type": "number" }, "diskTotal": { "type": "integer" }, "diskUsage": { "type": "number" }, "guestIds": { "type": "array", "items": { "type": "integer" } }, "hostname": { "type": "string" }, "logicalCores": { "type": "integer" }, "ramTotal": { "type": "integer" }, "ramUsage": { "type": "number" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_info.RAMInfo": { "type": "object", "properties": { "free": { "type": "integer" }, "total": { "type": "integer" }, "usedPercent": { "type": "number" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_info.SummaryHistory": { "type": "object", "properties": { "cpu": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_info.CPU" } }, "cursors": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_info.SummaryHistoryCursors" }, "network": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_info.SummaryHistoryNetworkPoint" } }, "ram": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_info.RAM" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_info.SummaryHistoryCursors": { "type": "object", "properties": { "cpu": { "type": "integer" }, "network": { "type": "integer" }, "ram": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_info.SummaryHistoryNetworkPoint": { "type": "object", "properties": { "createdAt": { "type": "string" }, "id": { "type": "integer" }, "receivedBytes": { "type": "integer" }, "sentBytes": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_info.SwapInfo": { "type": "object", "properties": { "free": { "type": "integer" }, "total": { "type": "integer" }, "usedPercent": { "type": "number" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.AddJailNetworkRequest": { "type": "object", "required": [ "name", "switchName" ], "properties": { "defaultGateway": { "type": "boolean" }, "dhcp": { "type": "boolean" }, "ip4": { "type": "integer" }, "ip4Raw": { "type": "string" }, "ip4gw": { "type": "integer" }, "ip4gwRaw": { "type": "string" }, "ip6": { "type": "integer" }, "ip6Raw": { "type": "string" }, "ip6gw": { "type": "integer" }, "ip6gwRaw": { "type": "string" }, "macId": { "type": "integer" }, "macRaw": { "type": "string" }, "name": { "type": "string" }, "slaac": { "type": "boolean" }, "switchName": { "type": "string" }, "vlan": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.BootstrapCreateResult": { "type": "object", "properties": { "name": { "type": "string" }, "outcome": { "type": "string" }, "pool": { "type": "string" }, "status": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.BootstrapDeleteResult": { "type": "object", "properties": { "datasetDeleted": { "type": "boolean" }, "name": { "type": "string" }, "outcome": { "type": "string" }, "pool": { "type": "string" }, "recordDeleted": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.BootstrapEntry": { "type": "object", "properties": { "dataset": { "type": "string" }, "error": { "type": "string" }, "exists": { "type": "boolean" }, "label": { "type": "string" }, "major": { "type": "integer" }, "minor": { "type": "integer" }, "mountPoint": { "type": "string" }, "name": { "type": "string" }, "phase": { "type": "string" }, "pool": { "type": "string" }, "status": { "type": "string" }, "type": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.BootstrapRequest": { "type": "object", "required": [ "major", "pool", "type" ], "properties": { "major": { "type": "integer" }, "minor": { "type": "integer" }, "pool": { "type": "string" }, "type": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.CreateJailRequest": { "type": "object", "required": [ "ctId", "name", "pool", "type" ], "properties": { "additionalOptions": { "type": "string" }, "allowedOptions": { "type": "array", "items": { "type": "string" } }, "base": { "type": "string" }, "bootstrapName": { "type": "string" }, "cleanEnvironment": { "type": "boolean" }, "cores": { "type": "integer" }, "ctId": { "type": "integer" }, "description": { "type": "string" }, "devfsRuleset": { "type": "string" }, "dhcp": { "type": "boolean" }, "fstab": { "type": "string" }, "hooks": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.Hooks" }, "hostname": { "type": "string" }, "inheritIPv4": { "type": "boolean" }, "inheritIPv6": { "type": "boolean" }, "ipv4": { "type": "integer" }, "ipv4Gw": { "type": "integer" }, "ipv4GwRaw": { "type": "string" }, "ipv4Raw": { "type": "string" }, "ipv6": { "type": "integer" }, "ipv6Gw": { "type": "integer" }, "ipv6GwRaw": { "type": "string" }, "ipv6Raw": { "type": "string" }, "mac": { "type": "integer" }, "macRaw": { "type": "string" }, "memory": { "type": "integer" }, "metadataEnv": { "type": "string" }, "metadataMeta": { "type": "string" }, "name": { "type": "string" }, "pool": { "type": "string" }, "resolvConf": { "type": "string" }, "resourceLimits": { "type": "boolean" }, "slaac": { "type": "boolean" }, "startAtBoot": { "type": "boolean" }, "startOrder": { "type": "integer" }, "switchName": { "type": "string" }, "type": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_jail.JailType" }, "vlan": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.DeleteJailResult": { "type": "object", "properties": { "retainedDatasets": { "type": "array", "items": { "type": "string" } }, "warnings": { "type": "array", "items": { "type": "string" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.EditJailNetworkRequest": { "type": "object", "properties": { "defaultGateway": { "type": "boolean" }, "dhcp": { "type": "boolean" }, "ip4": { "type": "integer" }, "ip4Raw": { "type": "string" }, "ip4gw": { "type": "integer" }, "ip4gwRaw": { "type": "string" }, "ip6": { "type": "integer" }, "ip6Raw": { "type": "string" }, "ip6gw": { "type": "integer" }, "ip6gwRaw": { "type": "string" }, "macId": { "type": "integer" }, "macRaw": { "type": "string" }, "name": { "type": "string" }, "slaac": { "type": "boolean" }, "switchName": { "type": "string" }, "vlan": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.HookPhase": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "script": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.Hooks": { "type": "object", "properties": { "poststart": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.HookPhase" }, "poststop": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.HookPhase" }, "prestart": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.HookPhase" }, "prestop": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.HookPhase" }, "start": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.HookPhase" }, "stop": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_jail.HookPhase" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.JailHardwareResult": { "type": "object", "properties": { "cores": { "type": "integer" }, "cpuSet": { "type": "array", "items": { "type": "integer" } }, "ctId": { "type": "integer" }, "memory": { "type": "integer" }, "resourceLimits": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.JailNetworkInheritanceResult": { "type": "object", "properties": { "ctId": { "type": "integer" }, "inheritIPv4": { "type": "boolean" }, "inheritIPv6": { "type": "boolean" }, "removedNetworkIds": { "type": "array", "items": { "type": "integer" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.SimpleList": { "type": "object", "properties": { "cores": { "type": "integer" }, "ctId": { "type": "integer" }, "id": { "type": "integer" }, "memory": { "type": "integer" }, "name": { "type": "string" }, "resourceLimits": { "type": "boolean" }, "state": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.SimpleTemplateList": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "sourceJailName": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_jail.State": { "type": "object", "properties": { "ctId": { "type": "integer" }, "memory": { "type": "integer" }, "overrideRequested": { "type": "boolean" }, "pcpu": { "type": "number" }, "pendingAction": { "type": "string" }, "state": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.CPUPinning": { "type": "object", "required": [ "cores", "socket" ], "properties": { "cores": { "type": "array", "minItems": 1, "items": { "type": "integer" } }, "socket": { "type": "integer", "minimum": 0 } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.ConvertToTemplateRequest": { "type": "object", "properties": { "name": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.CreateFromTemplateRequest": { "type": "object", "properties": { "cloudInitPrefix": { "type": "string" }, "count": { "type": "integer" }, "mode": { "type": "string" }, "name": { "type": "string" }, "namePrefix": { "type": "string" }, "rewriteCloudInitIdentity": { "type": "boolean" }, "rid": { "type": "integer" }, "startRid": { "type": "integer" }, "storagePools": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.VMTemplateStoragePoolAssignment" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.CreateVMRequest": { "type": "object", "required": [ "cpuCores", "cpuSockets", "cpuThreads", "name", "ram", "rid", "timeOffset" ], "properties": { "acpi": { "type": "boolean" }, "apic": { "type": "boolean" }, "bootRom": { "type": "string" }, "cloudInit": { "type": "boolean" }, "cloudInitData": { "type": "string" }, "cloudInitMetaData": { "type": "string" }, "cloudInitNetworkConfig": { "type": "string" }, "cpuCores": { "type": "integer" }, "cpuPinning": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.CPUPinning" } }, "cpuSockets": { "type": "integer" }, "cpuThreads": { "type": "integer" }, "description": { "type": "string" }, "extraBhyveOptions": { "type": "array", "items": { "type": "string" } }, "ignoreUMSR": { "type": "boolean" }, "iso": { "type": "string" }, "macId": { "type": "integer" }, "name": { "type": "string" }, "pciDevices": { "type": "array", "items": { "type": "integer" } }, "qemuGuestAgent": { "type": "boolean" }, "ram": { "type": "integer" }, "rid": { "type": "integer" }, "serial": { "type": "boolean" }, "startAtBoot": { "type": "boolean" }, "startOrder": { "type": "integer" }, "storageEmulationType": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageEmulationType" }, "storagePool": { "type": "string" }, "storageSize": { "type": "integer" }, "storageType": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageType" }, "switchEmulationType": { "type": "string" }, "switchName": { "type": "string" }, "timeOffset": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.TimeOffset" }, "tpmEmulation": { "type": "boolean" }, "vncBind": { "type": "string" }, "vncEnabled": { "type": "boolean" }, "vncPassword": { "type": "string" }, "vncPort": { "type": "integer" }, "vncResolution": { "type": "string" }, "vncWait": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.LvDomain": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "overrideRequested": { "type": "boolean" }, "pendingAction": { "type": "string" }, "status": { "type": "string" }, "uuid": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.ModifyCPURequest": { "type": "object", "required": [ "cpuCores", "cpuSockets", "cpuThreads" ], "properties": { "cpuCores": { "type": "integer" }, "cpuPinning": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.CPUPinning" } }, "cpuSockets": { "type": "integer" }, "cpuThreads": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.ModifyVNCRequest": { "type": "object", "required": [ "vncEnabled", "vncResolution", "vncWait" ], "properties": { "vncBind": { "type": "string" }, "vncEnabled": { "type": "boolean" }, "vncPassword": { "type": "string" }, "vncPort": { "type": "integer" }, "vncResolution": { "type": "string" }, "vncWait": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.NetworkAttachRequest": { "type": "object", "required": [ "emulation", "switchName" ], "properties": { "emulation": { "type": "string" }, "macId": { "type": "integer" }, "switchName": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.NetworkUpdateRequest": { "type": "object", "properties": { "emulation": { "type": "string" }, "enable": { "type": "boolean" }, "macId": { "type": "integer" }, "switchName": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.QGANetworkIPAddress": { "type": "object", "properties": { "ip-address": { "type": "string" }, "ip-address-type": { "type": "string" }, "prefix": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.QGANetworkInterface": { "type": "object", "properties": { "hardware-address": { "type": "string" }, "ip-addresses": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.QGANetworkIPAddress" } }, "name": { "type": "string" }, "statistics": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.QGANetworkStatistics" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.QGANetworkStatistics": { "type": "object", "properties": { "rx-bytes": { "type": "integer" }, "rx-dropped": { "type": "integer" }, "rx-errs": { "type": "integer" }, "rx-packets": { "type": "integer" }, "tx-bytes": { "type": "integer" }, "tx-dropped": { "type": "integer" }, "tx-errs": { "type": "integer" }, "tx-packets": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.QGAOSInfo": { "type": "object", "properties": { "id": { "type": "string" }, "kernel-release": { "type": "string" }, "kernel-version": { "type": "string" }, "machine": { "type": "string" }, "name": { "type": "string" }, "pretty-name": { "type": "string" }, "version": { "type": "string" }, "version-id": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.QemuGuestAgentInfo": { "type": "object", "properties": { "interfaces": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.QGANetworkInterface" } }, "osInfo": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.QGAOSInfo" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.SimpleList": { "type": "object", "properties": { "cpuPinning": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_vm.VMCPUPinning" } }, "hasEnabledFilesystemStorage": { "type": "boolean" }, "id": { "type": "integer" }, "name": { "type": "string" }, "rid": { "type": "integer" }, "state": { "$ref": "#/definitions/libvirt.DomainState" }, "vncPort": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.SimpleTemplateList": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "sourceVmName": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageAttachRequest": { "type": "object", "required": [ "attachType", "emulation", "storageType" ], "properties": { "attachType": { "enum": [ "import", "new" ], "allOf": [ { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageAttachType" } ] }, "bootOrder": { "type": "integer" }, "dataset": { "type": "string" }, "downloadUUID": { "type": "string" }, "emulation": { "enum": [ "virtio-blk", "virtio-9p", "ahci-hd", "ahci-cd", "nvme" ], "allOf": [ { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageEmulationType" } ] }, "filesystemTarget": { "type": "string" }, "name": { "type": "string" }, "pool": { "type": "string" }, "rawPath": { "type": "string" }, "readOnly": { "type": "boolean" }, "recordSize": { "type": "integer" }, "size": { "type": "integer" }, "storageType": { "enum": [ "raw", "zvol", "image", "filesystem" ], "allOf": [ { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageType" } ] }, "volBlockSize": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageAttachType": { "type": "string", "enum": [ "import", "new" ], "x-enum-varnames": [ "StorageAttachTypeImport", "StorageAttachTypeNew" ] }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageEmulationType": { "type": "string", "enum": [ "virtio-blk", "virtio-9p", "ahci-hd", "ahci-cd", "nvme" ], "x-enum-varnames": [ "VirtIOStorageEmulation", "VirtIO9PStorageEmulation", "AHCIHDStorageEmulation", "AHCICDStorageEmulation", "NVMEStorageEmulation" ] }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageType": { "type": "string", "enum": [ "raw", "zvol", "image", "filesystem", "none" ], "x-enum-varnames": [ "StorageTypeRaw", "StorageTypeZVOL", "StorageTypeDiskImage", "StorageTypeFilesystem", "StorageTypeNone" ] }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageUpdateRequest": { "type": "object", "properties": { "bootOrder": { "type": "integer" }, "emulation": { "enum": [ "virtio-blk", "virtio-9p", "ahci-hd", "ahci-cd", "nvme" ], "allOf": [ { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.StorageEmulationType" } ] }, "enable": { "type": "boolean" }, "filesystemTarget": { "type": "string" }, "name": { "type": "string" }, "readOnly": { "type": "boolean" }, "size": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.TimeOffset": { "type": "string", "enum": [ "utc", "localtime" ], "x-enum-varnames": [ "TimeOffsetUTC", "TimeOffsetLocal" ] }, "github_com_alchemillahq_sylve_internal_interfaces_services_libvirt.VMTemplateStoragePoolAssignment": { "type": "object", "properties": { "pool": { "type": "string" }, "sourceStorageId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_mdns.MdnsRecordWithManaged": { "type": "object", "properties": { "active": { "type": "boolean" }, "createdAt": { "type": "string" }, "id": { "type": "integer" }, "interfaces": { "type": "string" }, "managed": { "type": "boolean" }, "name": { "type": "string" }, "port": { "type": "integer" }, "source": { "type": "string" }, "txt": { "type": "object", "additionalProperties": { "type": "string" } }, "type": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_migration.ValidateResult": { "type": "object", "properties": { "allowed": { "type": "boolean" }, "reasons": { "type": "array", "items": { "type": "string" } }, "warnings": { "type": "array", "items": { "type": "string" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.BulkDeleteFirewallNATRulesRequest": { "type": "object", "required": [ "ids" ], "properties": { "ids": { "type": "array", "maxItems": 1024, "minItems": 1, "uniqueItems": true, "items": { "type": "integer" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.BulkDeleteFirewallTrafficRulesRequest": { "type": "object", "required": [ "ids" ], "properties": { "ids": { "type": "array", "maxItems": 1024, "minItems": 1, "uniqueItems": true, "items": { "type": "integer" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.CreateDHCPRangeRequest": { "type": "object", "required": [ "expiry", "type" ], "properties": { "endIp": { "type": "string" }, "expiry": { "type": "integer" }, "manualSwitch": { "type": "integer" }, "raOnly": { "type": "boolean" }, "slaac": { "type": "boolean" }, "standardSwitch": { "type": "integer" }, "startIp": { "type": "string" }, "type": { "type": "string", "enum": [ "ipv4", "ipv6" ] } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.CreateStaticMapRequest": { "type": "object", "required": [ "dhcpRangeId" ], "properties": { "comments": { "type": "string" }, "dhcpRangeId": { "type": "integer" }, "duidId": { "type": "integer" }, "hostname": { "type": "string" }, "ipId": { "type": "integer" }, "macId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.DeleteDynamicLeaseRequest": { "type": "object", "required": [ "identifier", "ip" ], "properties": { "identifier": { "type": "string" }, "ip": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.FileLeases": { "type": "object", "properties": { "clientId": { "type": "string" }, "duid": { "type": "string" }, "expiry": { "type": "integer" }, "hostname": { "type": "string" }, "iaid": { "type": "string" }, "ip": { "type": "string" }, "mac": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallAdvancedRequest": { "type": "object", "properties": { "postNatDecl": { "type": "string", "maxLength": 262144 }, "postRules": { "type": "string", "maxLength": 262144 }, "postTrafficAnchor": { "type": "string", "maxLength": 262144 }, "preNatDecl": { "type": "string", "maxLength": 262144 }, "preRules": { "type": "string", "maxLength": 262144 }, "preTrafficAnchor": { "type": "string", "maxLength": 262144 } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallLiveHitEvent": { "type": "object", "properties": { "action": { "type": "string" }, "bytes": { "type": "integer" }, "cursor": { "type": "integer" }, "direction": { "type": "string" }, "interface": { "type": "string" }, "rawLine": { "type": "string" }, "ruleId": { "type": "integer" }, "ruleName": { "type": "string" }, "ruleType": { "description": "traffic|nat", "type": "string" }, "timestamp": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallLiveHitsResponse": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallLiveHitEvent" } }, "nextCursor": { "type": "integer" }, "sourceError": { "type": "string" }, "sourceStatus": { "description": "ok|unavailable", "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallNATRuleCounter": { "type": "object", "properties": { "bytes": { "type": "integer" }, "id": { "type": "integer" }, "packets": { "type": "integer" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallReorderRequest": { "type": "object", "required": [ "id", "priority" ], "properties": { "id": { "type": "integer" }, "priority": { "type": "integer", "maximum": 1024 } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.FirewallTrafficRuleCounter": { "type": "object", "properties": { "bytes": { "type": "integer" }, "id": { "type": "integer" }, "packets": { "type": "integer" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.Leases": { "type": "object", "properties": { "db": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.DHCPStaticLease" } }, "file": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_network.FileLeases" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.ModifyDHCPConfigRequest": { "type": "object", "properties": { "dnsServers": { "type": "array", "items": { "type": "string" } }, "domain": { "type": "string" }, "expandHosts": { "type": "boolean" }, "manualSwitches": { "type": "array", "items": { "type": "integer" } }, "standardSwitches": { "type": "array", "items": { "type": "integer" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.ModifyDHCPRangeRequest": { "type": "object", "required": [ "expiry", "type" ], "properties": { "endIp": { "type": "string" }, "expiry": { "type": "integer" }, "manualSwitch": { "type": "integer" }, "raOnly": { "type": "boolean" }, "slaac": { "type": "boolean" }, "standardSwitch": { "type": "integer" }, "startIp": { "type": "string" }, "type": { "type": "string", "enum": [ "ipv4", "ipv6" ] } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.ModifyStaticMapRequest": { "type": "object", "required": [ "dhcpRangeId" ], "properties": { "comments": { "type": "string" }, "dhcpRangeId": { "type": "integer" }, "duidId": { "type": "integer" }, "hostname": { "type": "string" }, "ipId": { "type": "integer" }, "macId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.RenderedConfigResponse": { "type": "object", "properties": { "natRules": { "type": "string" }, "objectTables": { "type": "string" }, "pfConf": { "type": "string" }, "trafficRules": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.StaticRouteSuggestion": { "type": "object", "properties": { "description": { "type": "string" }, "destination": { "type": "string" }, "destinationType": { "type": "string" }, "enabled": { "type": "boolean" }, "family": { "type": "string" }, "fib": { "type": "integer" }, "gateway": { "type": "string" }, "gatewayZone": { "type": "string" }, "interface": { "type": "string" }, "name": { "type": "string" }, "nextHopMode": { "type": "string" }, "sourceHint": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.UpsertFirewallNATRuleRequest": { "type": "object", "required": [ "egressInterfaces", "family", "ingressInterfaces", "name", "natType", "protocol" ], "properties": { "description": { "type": "string", "maxLength": 2048 }, "destObjId": { "type": "integer" }, "destRaw": { "type": "string", "maxLength": 2048 }, "dnatTargetObjId": { "type": "integer" }, "dnatTargetRaw": { "type": "string", "maxLength": 2048 }, "dstPortObjId": { "type": "integer" }, "dstPortsRaw": { "type": "string", "maxLength": 2048 }, "egressInterfaces": { "type": "array", "maxItems": 64, "uniqueItems": true, "items": { "type": "string" } }, "enabled": { "type": "boolean" }, "family": { "type": "string", "enum": [ "any", "inet", "inet6" ] }, "ingressInterfaces": { "type": "array", "maxItems": 64, "uniqueItems": true, "items": { "type": "string" } }, "log": { "type": "boolean" }, "name": { "type": "string", "maxLength": 128 }, "natType": { "type": "string", "enum": [ "snat", "dnat", "binat" ] }, "policyRouteGateway": { "type": "string", "maxLength": 64 }, "policyRoutingEnabled": { "type": "boolean" }, "priority": { "type": "integer", "maximum": 1000000 }, "protocol": { "type": "string", "enum": [ "any", "tcp", "udp", "icmp" ] }, "redirectPortObjId": { "type": "integer" }, "redirectPortsRaw": { "type": "string", "maxLength": 2048 }, "sourceObjId": { "type": "integer" }, "sourceRaw": { "type": "string", "maxLength": 2048 }, "translateMode": { "type": "string", "enum": [ "interface", "address" ] }, "translateToObjId": { "type": "integer" }, "translateToRaw": { "type": "string", "maxLength": 2048 } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.UpsertFirewallTrafficRuleRequest": { "type": "object", "required": [ "action", "direction", "egressInterfaces", "family", "ingressInterfaces", "name", "protocol" ], "properties": { "action": { "type": "string", "enum": [ "pass", "block" ] }, "description": { "type": "string", "maxLength": 2048 }, "destObjId": { "type": "integer" }, "destRaw": { "type": "string", "maxLength": 2048 }, "direction": { "type": "string", "enum": [ "in", "out" ] }, "dstPortObjId": { "type": "integer" }, "dstPortsRaw": { "type": "string", "maxLength": 2048 }, "egressInterfaces": { "type": "array", "maxItems": 64, "uniqueItems": true, "items": { "type": "string" } }, "enabled": { "type": "boolean" }, "family": { "type": "string", "enum": [ "any", "inet", "inet6" ] }, "ingressInterfaces": { "type": "array", "maxItems": 64, "uniqueItems": true, "items": { "type": "string" } }, "log": { "type": "boolean" }, "name": { "type": "string", "maxLength": 128 }, "priority": { "type": "integer", "maximum": 1000000 }, "protocol": { "type": "string", "enum": [ "any", "tcp", "udp", "tcp_udp", "icmp" ] }, "quick": { "type": "boolean" }, "sourceObjId": { "type": "integer" }, "sourceRaw": { "type": "string", "maxLength": 2048 }, "srcPortObjId": { "type": "integer" }, "srcPortsRaw": { "type": "string", "maxLength": 2048 } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_network.UpsertStaticRouteRequest": { "type": "object", "required": [ "destinationType", "family", "name", "nextHopMode" ], "properties": { "description": { "type": "string", "maxLength": 2048 }, "destination": { "type": "string", "maxLength": 256 }, "destinationObjId": { "type": "integer" }, "destinationRaw": { "type": "string", "maxLength": 256 }, "destinationType": { "type": "string", "enum": [ "host", "network" ] }, "enabled": { "type": "boolean" }, "family": { "type": "string", "enum": [ "inet", "inet6" ] }, "fib": { "type": "integer" }, "gateway": { "type": "string", "maxLength": 256 }, "gatewayObjId": { "type": "integer" }, "gatewayRaw": { "type": "string", "maxLength": 256 }, "gatewayZone": { "type": "string", "maxLength": 64 }, "interface": { "type": "string", "maxLength": 64 }, "name": { "type": "string", "maxLength": 128 }, "nextHopMode": { "type": "string", "enum": [ "gateway", "interface" ] } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_samba.AuditLogsResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_samba.SambaAuditLog" } }, "last_page": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_system.FileNode": { "type": "object", "properties": { "date": { "type": "string" }, "id": { "type": "string" }, "lazy": { "type": "boolean" }, "size": { "type": "integer" }, "type": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_system.FileTransferItem": { "type": "object", "required": [ "destination", "source" ], "properties": { "destination": { "type": "string" }, "source": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_system.InitializeRequest": { "type": "object", "properties": { "pools": { "type": "array", "items": { "type": "string" } }, "services": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models.AvailableService" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.CloudInitTemplateIdentity": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.CloudInitTemplateRequest": { "type": "object", "required": [ "meta", "name", "networkConfig", "user" ], "properties": { "meta": { "type": "string" }, "name": { "type": "string", "maxLength": 255, "minLength": 1 }, "networkConfig": { "type": "string" }, "user": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.CompleteDownloaderUploadRequest": { "type": "object", "properties": { "automaticExtraction": { "type": "boolean" }, "automaticRawConversion": { "type": "boolean" }, "downloadType": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadUType" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloadDeleteFailure": { "type": "object", "properties": { "code": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" }, "retainedPaths": { "type": "array", "items": { "type": "string" } }, "type": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadType" }, "uuid": { "type": "string" }, "vmReferences": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloadDeleteVMReference" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloadDeleteItem": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "type": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadType" }, "uuid": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloadDeleteResult": { "type": "object", "properties": { "deleted": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloadDeleteItem" } }, "failed": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloadDeleteFailure" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloadDeleteVMReference": { "type": "object", "properties": { "storageId": { "type": "integer" }, "vmId": { "type": "integer" }, "vmName": { "type": "string" }, "vmRid": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloadFileRequest": { "type": "object", "required": [ "url" ], "properties": { "automaticExtraction": { "type": "boolean" }, "automaticRawConversion": { "type": "boolean" }, "downloadType": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadUType" }, "filename": { "type": "string" }, "ignoreTLS": { "type": "boolean" }, "url": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloadStartResult": { "type": "object", "properties": { "id": { "type": "integer" }, "status": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadStatus" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.DownloaderUploadCompletion": { "type": "object", "properties": { "downloadId": { "type": "integer" }, "status": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.UploadStatus" }, "uploadId": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.SignedDownloadURLResult": { "type": "object", "properties": { "expiresAt": { "type": "string" }, "url": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.UTypeGroupedDownload": { "type": "object", "properties": { "label": { "type": "string" }, "uType": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadUType" }, "uuid": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_utilities.UpdateDownloadRequest": { "type": "object", "properties": { "automaticExtraction": { "type": "boolean" }, "automaticRawConversion": { "type": "boolean" }, "name": { "type": "string" }, "uType": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.DownloadUType" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.CreatePeriodicSnapshotJobRequest": { "type": "object", "required": [ "guid", "prefix" ], "properties": { "cronExpr": { "type": "string" }, "guid": { "type": "string" }, "interval": { "type": "integer" }, "keepDaily": { "type": "integer" }, "keepHourly": { "type": "integer" }, "keepLast": { "type": "integer" }, "keepMonthly": { "type": "integer" }, "keepWeekly": { "type": "integer" }, "keepYearly": { "type": "integer" }, "maxAgeDays": { "type": "integer" }, "prefix": { "type": "string" }, "recursive": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.CreateZPoolRequest": { "type": "object", "required": [ "name" ], "properties": { "createForce": { "type": "boolean" }, "mountpoint": { "type": "string" }, "name": { "type": "string", "maxLength": 24, "minLength": 1 }, "properties": { "type": "object", "additionalProperties": { "type": "string" } }, "spares": { "type": "array", "items": { "type": "string" } }, "vdevs": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.Vdev" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardARCPoint": { "type": "object", "properties": { "compressedSize": { "type": "integer" }, "dataSize": { "type": "integer" }, "demandHitRatio": { "type": "number" }, "evictNotEnoughEvents": { "type": "integer" }, "evictionsPerSecond": { "type": "number" }, "headerSize": { "type": "integer" }, "hitRatio": { "type": "number" }, "id": { "type": "integer" }, "l2Allocated": { "type": "integer" }, "l2DeviceCount": { "type": "integer" }, "l2HitRatio": { "type": "number" }, "l2ReadBytesPerSecond": { "type": "integer" }, "l2Size": { "type": "integer" }, "l2WriteBytesPerSecond": { "type": "integer" }, "maxSize": { "type": "integer" }, "memoryThrottleEvents": { "type": "integer" }, "metadataSize": { "type": "integer" }, "minSize": { "type": "integer" }, "otherSize": { "type": "integer" }, "prefetchHitRatio": { "type": "number" }, "size": { "type": "integer" }, "targetSize": { "type": "integer" }, "time": { "type": "integer" }, "uncompressedSize": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardCursors": { "type": "object", "properties": { "arc": { "type": "integer" }, "pool": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardHistory": { "type": "object", "properties": { "arc": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardARCPoint" } }, "cursors": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardCursors" }, "generatedAt": { "type": "integer" }, "pools": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardPoolSeries" } }, "resetRequired": { "type": "boolean" }, "resolutionSeconds": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardIOStats": { "type": "object", "properties": { "intervalSeconds": { "type": "integer" }, "latencyAvailable": { "type": "boolean" }, "readBytesPerSecond": { "type": "integer" }, "readIOPS": { "type": "integer" }, "readLatencyNanos": { "type": "integer" }, "sampledAt": { "type": "integer" }, "valid": { "type": "boolean" }, "writeBytesPerSecond": { "type": "integer" }, "writeIOPS": { "type": "integer" }, "writeLatencyNanos": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardPoolErrors": { "type": "object", "properties": { "checksum": { "type": "integer" }, "read": { "type": "integer" }, "scan": { "type": "integer" }, "write": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardPoolScan": { "type": "object", "properties": { "endTime": { "type": "string" }, "errors": { "type": "integer" }, "examined": { "type": "integer" }, "function": { "type": "string" }, "issued": { "type": "integer" }, "processed": { "type": "integer" }, "progressPercent": { "type": "number" }, "startTime": { "type": "string" }, "state": { "type": "string" }, "toExamine": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardPoolSeries": { "type": "object", "properties": { "guid": { "type": "string" }, "name": { "type": "string" }, "points": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.PoolStatPoint" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardPoolSnapshot": { "type": "object", "properties": { "action": { "type": "string" }, "allocated": { "type": "integer" }, "dedupRatio": { "type": "number" }, "errors": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardPoolErrors" }, "fragmentation": { "type": "number" }, "free": { "type": "integer" }, "guid": { "type": "string" }, "io": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardIOStats" }, "name": { "type": "string" }, "scan": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardPoolScan" }, "size": { "type": "integer" }, "state": { "type": "string" }, "status": { "type": "string" }, "statusAvailable": { "type": "boolean" }, "topology": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardPoolTopology" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardPoolTopology": { "type": "object", "properties": { "cache": { "type": "integer" }, "dataVdevs": { "type": "integer" }, "dedup": { "type": "integer" }, "disks": { "type": "integer" }, "logs": { "type": "integer" }, "spares": { "type": "integer" }, "special": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardSnapshot": { "type": "object", "properties": { "arc": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardARCPoint" }, "generatedAt": { "type": "integer" }, "pools": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.DashboardPoolSnapshot" } }, "sampledAt": { "type": "integer" }, "stale": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.EditVolumeRequest": { "type": "object", "required": [ "properties" ], "properties": { "properties": { "type": "object", "additionalProperties": { "type": "string" } } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.ModifyPeriodicSnapshotRetentionRequest": { "type": "object", "properties": { "keepDaily": { "type": "integer" }, "keepHourly": { "type": "integer" }, "keepLast": { "type": "integer" }, "keepMonthly": { "type": "integer" }, "keepWeekly": { "type": "integer" }, "keepYearly": { "type": "integer" }, "maxAgeDays": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.PaginatedDatasetsResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/gzfs.Dataset" } }, "last_page": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.PoolStatPoint": { "type": "object", "properties": { "allocated": { "type": "integer" }, "dedupRatio": { "type": "number" }, "fragmentation": { "type": "number" }, "free": { "type": "integer" }, "health": { "type": "string" }, "id": { "type": "integer" }, "intervalSeconds": { "type": "integer" }, "maxReadBytesPerSecond": { "type": "integer" }, "maxReadIOPS": { "type": "integer" }, "maxReadLatencyNanos": { "type": "integer" }, "maxWriteBytesPerSecond": { "type": "integer" }, "maxWriteIOPS": { "type": "integer" }, "maxWriteLatencyNanos": { "type": "integer" }, "readBytesPerSecond": { "type": "integer" }, "readIOPS": { "type": "integer" }, "readLatencyNanos": { "type": "integer" }, "sampleCount": { "type": "integer" }, "size": { "type": "integer" }, "time": { "type": "integer" }, "worstHealth": { "type": "string" }, "writeBytesPerSecond": { "type": "integer" }, "writeIOPS": { "type": "integer" }, "writeLatencyNanos": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.RaidType": { "type": "string", "enum": [ "stripe", "mirror", "raidz", "raidz2", "raidz3" ], "x-enum-varnames": [ "RaidTypeStripe", "RaidTypeMirror", "RaidTypeRaidZ", "RaidTypeRaidZ2", "RaidTypeRaidZ3" ] }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.ReplaceDevice": { "type": "object", "required": [ "new", "old" ], "properties": { "new": { "type": "string", "maxLength": 24, "minLength": 1 }, "old": { "type": "string", "maxLength": 24, "minLength": 1 } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.SimpleZFSDiskUsage": { "type": "object", "properties": { "total": { "type": "number" }, "usage": { "type": "number" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.Vdev": { "type": "object", "properties": { "devices": { "type": "array", "items": { "type": "string" } }, "name": { "type": "string" }, "raidType": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.RaidType" }, "type": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_zfs.VdevType" } } }, "github_com_alchemillahq_sylve_internal_interfaces_services_zfs.VdevType": { "type": "string", "enum": [ "data", "log", "cache", "special", "dedup" ], "x-enum-varnames": [ "VdevTypeData", "VdevTypeLog", "VdevTypeCache", "VdevTypeSpecial", "VdevTypeDedup" ] }, "github_com_alchemillahq_sylve_internal_services_auth.ImportableUnixUser": { "type": "object", "properties": { "fullName": { "type": "string" }, "gid": { "type": "integer" }, "homeDirectory": { "type": "string" }, "shell": { "type": "string" }, "uid": { "type": "integer" }, "username": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_auth.PasskeyCredentialInfo": { "type": "object", "properties": { "createdAt": { "type": "string" }, "credentialId": { "type": "string" }, "id": { "type": "integer" }, "label": { "type": "string" }, "updatedAt": { "type": "string" }, "userId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_services_certificates.CertificateInput": { "type": "object", "properties": { "certificate": { "type": "string" }, "domain": { "type": "string" }, "dynamicDnsEntryId": { "type": "integer" }, "name": { "type": "string" }, "privateKey": { "type": "string" }, "staging": { "type": "boolean" }, "type": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models.CertificateType" }, "validateDomain": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_services_certificates.CertificateView": { "type": "object", "properties": { "active": { "type": "boolean" }, "domain": { "type": "string" }, "dynamicDnsEntryId": { "type": "integer" }, "fingerprint": { "type": "string" }, "id": { "type": "integer" }, "issuanceError": { "type": "string" }, "issuanceOperation": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models.ManagedCertificateOperation" }, "issuanceRetryAt": { "type": "string" }, "issuanceStatus": { "type": "string" }, "name": { "type": "string" }, "notAfter": { "type": "string" }, "notBefore": { "type": "string" }, "pending": { "type": "boolean" }, "ready": { "type": "boolean" }, "renewable": { "type": "boolean" }, "staging": { "type": "boolean" }, "type": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models.CertificateType" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_certificates.DomainCheckResult": { "type": "object", "properties": { "domain": { "type": "string" }, "matches": { "type": "boolean" }, "publicAddresses": { "type": "array", "items": { "type": "string" } }, "resolved": { "type": "array", "items": { "type": "string" } }, "warning": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_cluster.ClusterStateMemberResult": { "type": "object", "properties": { "address": { "type": "string" }, "appliedIndex": { "type": "integer" }, "digest": { "type": "string" }, "error": { "type": "string" }, "nodeId": { "type": "string" }, "status": { "type": "string" }, "suffrage": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_cluster.ClusterStateResyncResult": { "type": "object", "properties": { "leaderNodeId": { "type": "string" }, "members": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_cluster.ClusterStateMemberResult" } }, "referenceAppliedIndex": { "type": "integer" }, "referenceDigest": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_cluster.GuestIdentityInventoryConflict": { "type": "object", "properties": { "entries": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_cluster.GuestIdentityInventoryEntry" } }, "guestId": { "type": "integer" }, "reason": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_cluster.GuestIdentityInventoryEntry": { "type": "object", "properties": { "guestId": { "type": "integer" }, "guestType": { "type": "string" }, "name": { "type": "string" }, "nodeId": { "type": "string" }, "recordId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_services_cluster.GuestIdentityInventoryReport": { "type": "object", "properties": { "conflicts": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_cluster.GuestIdentityInventoryConflict" } }, "digest": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_cluster.GuestIdentityInventoryEntry" } } } }, "github_com_alchemillahq_sylve_internal_services_cluster.PeerRemovalConflict": { "type": "object", "properties": { "dependencies": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_cluster.PeerRemovalDependency" } }, "nodeId": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_cluster.PeerRemovalDependency": { "type": "object", "properties": { "id": { "type": "string" }, "kind": { "type": "string" }, "name": { "type": "string" }, "role": { "type": "string" }, "state": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_disk.SelfTestScheduleInput": { "type": "object", "required": [ "cronExpr", "device", "testType" ], "properties": { "cronExpr": { "type": "string" }, "device": { "type": "string" }, "enabled": { "type": "boolean" }, "testType": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_disk.SelfTestScheduleView": { "type": "object", "properties": { "cronExpr": { "type": "string" }, "device": { "type": "string" }, "diskKey": { "type": "string" }, "enabled": { "type": "boolean" }, "estimatedMinutes": { "type": "integer" }, "id": { "type": "integer" }, "lastError": { "type": "string" }, "lastRunAt": { "type": "string" }, "lastStatus": { "type": "string" }, "model": { "type": "string" }, "nextRunAt": { "type": "string" }, "progressKnown": { "type": "boolean" }, "progressPct": { "type": "integer" }, "queuedAt": { "type": "string" }, "serial": { "type": "string" }, "testType": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_dynamicdns.EntryInput": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "hostname": { "type": "string" }, "intervalMinutes": { "type": "integer" }, "provider": { "type": "string" }, "providerSettings": { "type": "object", "additionalProperties": { "type": "string" } }, "recordType": { "type": "string" }, "sourceSettings": { "type": "object", "additionalProperties": { "type": "string" } }, "sourceType": { "type": "string" }, "token": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_dynamicdns.EntryView": { "type": "object", "properties": { "consecutiveFailures": { "type": "integer" }, "createdAt": { "type": "string" }, "credentialConfigured": { "type": "boolean" }, "enabled": { "type": "boolean" }, "hostname": { "type": "string" }, "id": { "type": "integer" }, "intervalMinutes": { "type": "integer" }, "ipv4Error": { "type": "string" }, "ipv4Status": { "type": "string" }, "ipv6Error": { "type": "string" }, "ipv6Status": { "type": "string" }, "lastError": { "type": "string" }, "lastIPv4": { "type": "string" }, "lastIPv6": { "type": "string" }, "lastStatus": { "type": "string" }, "lastSuccessAt": { "type": "string" }, "lastSyncAt": { "type": "string" }, "nextRetryAt": { "type": "string" }, "provider": { "type": "string" }, "providerSettings": { "type": "object", "additionalProperties": { "type": "string" } }, "recordType": { "type": "string" }, "sourceSettings": { "type": "object", "additionalProperties": { "type": "string" } }, "sourceType": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_jail.ConvertToTemplateRequest": { "type": "object", "properties": { "name": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_jail.CreateFromTemplateRequest": { "type": "object", "properties": { "count": { "type": "integer" }, "ctid": { "type": "integer" }, "mode": { "type": "string" }, "name": { "type": "string" }, "namePrefix": { "type": "string" }, "pool": { "type": "string" }, "startCtid": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_services_jail.JailSnapshotRollbackResult": { "type": "object", "properties": { "restarted": { "type": "boolean" }, "warnings": { "type": "array", "items": { "type": "string" } }, "wasRunning": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_services_libvirt.VMRemovalResult": { "type": "object", "properties": { "retainedDatasets": { "type": "array", "items": { "type": "string" } }, "warnings": { "type": "array", "items": { "type": "string" } } } }, "github_com_alchemillahq_sylve_internal_services_libvirt.VMSnapshotRollbackResult": { "type": "object", "properties": { "restarted": { "type": "boolean" }, "warnings": { "type": "array", "items": { "type": "string" } }, "wasRunning": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_services_network.InitWireGuardServerRequest": { "type": "object", "required": [ "port" ], "properties": { "addresses": { "type": "array", "items": { "type": "string" } }, "allowWireGuardPort": { "type": "boolean" }, "masqueradeIPv4Interface": { "type": "string" }, "masqueradeIPv6Interface": { "type": "string" }, "mtu": { "type": "integer", "maximum": 9000, "minimum": 576 }, "port": { "type": "integer", "maximum": 65535, "minimum": 1 }, "privateKey": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_network.WireGuardClientEnabledRequest": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_services_network.WireGuardClientRequest": { "type": "object", "required": [ "addresses", "allowedIPs", "endpointHost", "endpointPort", "name", "peerPublicKey", "privateKey" ], "properties": { "addresses": { "type": "array", "maxItems": 256, "minItems": 1, "items": { "type": "string" } }, "allowedIPs": { "type": "array", "maxItems": 256, "minItems": 1, "items": { "type": "string" } }, "enabled": { "type": "boolean" }, "endpointHost": { "type": "string", "maxLength": 253 }, "endpointPort": { "type": "integer", "maximum": 65535, "minimum": 1 }, "fib": { "type": "integer" }, "listenPort": { "type": "integer", "maximum": 65535 }, "metric": { "type": "integer" }, "mtu": { "type": "integer", "maximum": 9000, "minimum": 576 }, "name": { "type": "string", "maxLength": 128 }, "peerPublicKey": { "type": "string" }, "persistentKeepalive": { "type": "boolean" }, "preSharedKey": { "type": "string" }, "privateKey": { "type": "string" }, "routeAllowedIPs": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_services_network.WireGuardServerEnabledRequest": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_services_network.WireGuardServerPeerEnabledRequest": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_services_network.WireGuardServerPeerRequest": { "type": "object", "required": [ "clientIPs", "name" ], "properties": { "clientIPs": { "type": "array", "maxItems": 256, "minItems": 1, "items": { "type": "string" } }, "enabled": { "type": "boolean" }, "name": { "type": "string", "maxLength": 128 }, "persistentKeepalive": { "type": "boolean" }, "preSharedKey": { "type": "string" }, "privateKey": { "type": "string" }, "routableIPs": { "type": "array", "maxItems": 256, "items": { "type": "string" } }, "routeIPs": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.DiscordTransportConfigUpdate": { "type": "object", "properties": { "webhookUrl": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.DiscordTransportConfigView": { "type": "object", "properties": { "webhookUrl": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.EmailTransportConfigUpdate": { "type": "object", "properties": { "recipients": { "type": "array", "items": { "type": "string" } }, "smtpFrom": { "type": "string" }, "smtpHost": { "type": "string" }, "smtpPassword": { "type": "string" }, "smtpPort": { "type": "integer" }, "smtpUseTls": { "type": "boolean" }, "smtpUsername": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.EmailTransportConfigView": { "type": "object", "properties": { "hasPassword": { "type": "boolean" }, "recipients": { "type": "array", "items": { "type": "string" } }, "smtpFrom": { "type": "string" }, "smtpHost": { "type": "string" }, "smtpPort": { "type": "integer" }, "smtpUseTls": { "type": "boolean" }, "smtpUsername": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.NtfyTransportConfigUpdate": { "type": "object", "properties": { "authToken": { "type": "string" }, "baseUrl": { "type": "string" }, "topic": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.NtfyTransportConfigView": { "type": "object", "properties": { "baseUrl": { "type": "string" }, "hasAuthToken": { "type": "boolean" }, "topic": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.RuleConfigEntryUpdate": { "type": "object", "properties": { "discordEnabled": { "type": "boolean" }, "emailEnabled": { "type": "boolean" }, "id": { "type": "integer" }, "kind": { "type": "string" }, "ntfyEnabled": { "type": "boolean" }, "pool": { "type": "string" }, "targetKey": { "type": "string" }, "templateKey": { "type": "string" }, "uiEnabled": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.RuleConfigEntryView": { "type": "object", "properties": { "active": { "type": "boolean" }, "config": { "type": "string" }, "discordEnabled": { "type": "boolean" }, "emailEnabled": { "type": "boolean" }, "id": { "type": "integer" }, "kind": { "type": "string" }, "ntfyEnabled": { "type": "boolean" }, "targetKey": { "type": "string" }, "targetLabel": { "type": "string" }, "templateKey": { "type": "string" }, "templateLabel": { "type": "string" }, "uiEnabled": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.RuleConfigUpdate": { "type": "object", "properties": { "rules": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.RuleConfigEntryUpdate" } } } }, "github_com_alchemillahq_sylve_internal_services_notifications.RuleConfigView": { "type": "object", "properties": { "rules": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.RuleConfigEntryView" } }, "templates": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.RuleTemplateView" } } } }, "github_com_alchemillahq_sylve_internal_services_notifications.RuleCreateInput": { "type": "object", "properties": { "discordEnabled": { "type": "boolean" }, "emailEnabled": { "type": "boolean" }, "ntfyEnabled": { "type": "boolean" }, "targetKey": { "type": "string" }, "templateKey": { "type": "string" }, "uiEnabled": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.RuleTemplateTargetView": { "type": "object", "properties": { "key": { "type": "string" }, "label": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.RuleTemplateView": { "type": "object", "properties": { "defaultConfig": { "type": "string" }, "description": { "type": "string" }, "key": { "type": "string" }, "label": { "type": "string" }, "targetType": { "type": "string" }, "targets": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.RuleTemplateTargetView" } } } }, "github_com_alchemillahq_sylve_internal_services_notifications.RuleUpdateInput": { "type": "object", "properties": { "config": { "type": "string" }, "discordEnabled": { "type": "boolean" }, "emailEnabled": { "type": "boolean" }, "ntfyEnabled": { "type": "boolean" }, "uiEnabled": { "type": "boolean" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.TestRuleInput": { "type": "object", "properties": { "condition": { "type": "string" }, "severity": { "type": "string" }, "targetKey": { "type": "string" }, "templateKey": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.TransportConfigEntryView": { "type": "object", "properties": { "discord": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.DiscordTransportConfigView" }, "email": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.EmailTransportConfigView" }, "enabled": { "type": "boolean" }, "id": { "type": "integer" }, "name": { "type": "string" }, "ntfy": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.NtfyTransportConfigView" }, "type": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_notifications.TransportConfigView": { "type": "object", "properties": { "transports": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.TransportConfigEntryView" } } } }, "github_com_alchemillahq_sylve_internal_services_notifications.TransportInput": { "type": "object", "properties": { "discord": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.DiscordTransportConfigUpdate" }, "email": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.EmailTransportConfigUpdate" }, "enabled": { "type": "boolean" }, "name": { "type": "string" }, "ntfy": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_notifications.NtfyTransportConfigUpdate" }, "type": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_system.TunablesResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_utils_sysctl.Tunable" } }, "last_page": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_services_zelta.BackupEventProgress": { "type": "object", "properties": { "event": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.BackupEvent" }, "movedBytes": { "type": "integer" }, "phase": { "type": "string" }, "progressDataset": { "type": "string" }, "progressPercent": { "type": "number" }, "totalBytes": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_services_zelta.BackupEventsResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.BackupEvent" } }, "last_page": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_services_zelta.BackupJailMetadataInfo": { "type": "object", "properties": { "basePool": { "type": "string" }, "ctId": { "type": "integer" }, "name": { "type": "string" } } }, "github_com_alchemillahq_sylve_internal_services_zelta.BackupTargetDatasetInfo": { "type": "object", "properties": { "baseSuffix": { "type": "string" }, "encrypted": { "type": "boolean" }, "jailCtId": { "type": "integer" }, "kind": { "description": "\"dataset\" | \"jail\" | \"vm\"", "type": "string" }, "lineage": { "description": "\"active\" | \"rotated\" | \"other\"", "type": "string" }, "name": { "description": "full remote dataset path", "type": "string" }, "outOfBand": { "type": "boolean" }, "snapshotCount": { "type": "integer" }, "suffix": { "type": "string" }, "vmRid": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_services_zelta.BackupVMMetadataInfo": { "type": "object", "properties": { "name": { "type": "string" }, "pools": { "type": "array", "items": { "type": "string" } }, "rid": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_services_zelta.ReplicationEventProgress": { "type": "object", "properties": { "event": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_cluster.ReplicationEvent" }, "movedBytes": { "type": "integer" }, "progressPercent": { "type": "number" }, "totalBytes": { "type": "integer" } } }, "github_com_alchemillahq_sylve_internal_services_zelta.SnapshotInfo": { "type": "object", "properties": { "childCount": { "description": "number of child datasets on the target", "type": "integer" }, "committed": { "description": "verified c1 commit marker is present", "type": "boolean" }, "creation": { "description": "creation timestamp", "type": "string" }, "dataset": { "description": "dataset portion (without @snap)", "type": "string" }, "encrypted": { "type": "boolean" }, "guid": { "type": "string" }, "legacy": { "description": "restore point predates commit manifests", "type": "boolean" }, "lineage": { "description": "\"active\" | \"rotated\" | \"other\"", "type": "string" }, "name": { "description": "full dataset@snap name", "type": "string" }, "outOfBand": { "description": "true when snapshot is outside the active lineage", "type": "boolean" }, "refer": { "description": "referenced size", "type": "string" }, "shortName": { "description": "just the @snap portion", "type": "string" }, "used": { "description": "space used", "type": "string" } } }, "github_com_alchemillahq_sylve_pkg_network_iface.BridgeMember": { "type": "object", "properties": { "flags": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_network_iface.Flags" }, "ifmaxaddr": { "type": "integer" }, "name": { "type": "string" }, "pathCost": { "type": "integer" }, "port": { "type": "integer" }, "priority": { "type": "integer" }, "state": { "type": "integer" } } }, "github_com_alchemillahq_sylve_pkg_network_iface.Capabilities": { "type": "object", "properties": { "enabled": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_network_iface.Flags" }, "supported": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_network_iface.Flags" } } }, "github_com_alchemillahq_sylve_pkg_network_iface.Flags": { "type": "object", "properties": { "desc": { "type": "array", "items": { "type": "string" } }, "raw": { "type": "integer" } } }, "github_com_alchemillahq_sylve_pkg_network_iface.IPv4": { "type": "object", "properties": { "broadcast": { "type": "array", "items": { "type": "integer" } }, "ip": { "type": "array", "items": { "type": "integer" } }, "netmask": { "type": "string" } } }, "github_com_alchemillahq_sylve_pkg_network_iface.IPv6": { "type": "object", "properties": { "autoConf": { "type": "boolean" }, "deprecated": { "type": "boolean" }, "detached": { "type": "boolean" }, "ip": { "type": "array", "items": { "type": "integer" } }, "lifeTimes": { "type": "object", "properties": { "preferred": { "type": "integer" }, "valid": { "type": "integer" } } }, "prefixLength": { "type": "integer" }, "scopeId": { "type": "integer" } } }, "github_com_alchemillahq_sylve_pkg_network_iface.Interface": { "type": "object", "properties": { "bridgeId": { "type": "string" }, "bridgeMembers": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_network_iface.BridgeMember" } }, "capabilities": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_network_iface.Capabilities" }, "description": { "type": "string" }, "driver": { "type": "string" }, "ether": { "type": "string" }, "flags": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_network_iface.Flags" }, "groups": { "type": "array", "items": { "type": "string" } }, "hwaddr": { "type": "string" }, "ipv4": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_network_iface.IPv4" } }, "ipv6": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_network_iface.IPv6" } }, "maxaddr": { "type": "integer" }, "media": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_network_iface.Media" }, "metric": { "type": "integer" }, "model": { "type": "string" }, "mtu": { "type": "integer" }, "name": { "type": "string" }, "nd6": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_network_iface.ND6" }, "stp": { "$ref": "#/definitions/github_com_alchemillahq_sylve_pkg_network_iface.STP" }, "timeout": { "type": "integer" } } }, "github_com_alchemillahq_sylve_pkg_network_iface.Media": { "type": "object", "properties": { "mode": { "type": "string" }, "options": { "type": "array", "items": { "type": "string" } }, "rawActive": { "type": "integer" }, "rawCurrent": { "type": "integer" }, "status": { "type": "string" }, "subtype": { "type": "string" }, "type": { "type": "string" } } }, "github_com_alchemillahq_sylve_pkg_network_iface.ND6": { "type": "object", "properties": { "desc": { "type": "array", "items": { "type": "string" } }, "raw": { "type": "integer" } } }, "github_com_alchemillahq_sylve_pkg_network_iface.STP": { "type": "object", "properties": { "fwddelay": { "type": "integer" }, "hellotime": { "type": "integer" }, "holdcnt": { "type": "integer" }, "ifcost": { "type": "integer" }, "maxage": { "type": "integer" }, "port": { "type": "integer" }, "priority": { "type": "integer" }, "proto": { "type": "string" }, "rootId": { "type": "string" }, "rootPriority": { "type": "integer" } } }, "github_com_alchemillahq_sylve_pkg_system_pciconf.PCIDevice": { "type": "object", "properties": { "bus": { "type": "integer" }, "class": { "type": "integer" }, "device": { "type": "integer" }, "domain": { "type": "integer" }, "function": { "type": "integer" }, "hdr": { "type": "integer" }, "name": { "type": "string" }, "names": { "type": "object", "properties": { "class": { "type": "string" }, "device": { "type": "string" }, "subclass": { "type": "string" }, "vendor": { "type": "string" } } }, "rev": { "type": "integer" }, "subDevice": { "type": "integer" }, "subVendor": { "type": "integer" }, "unit": { "type": "integer" }, "vendor": { "type": "integer" } } }, "github_com_alchemillahq_sylve_pkg_utils_sysctl.Tunable": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string" }, "value": { "type": "string" }, "writable": { "type": "boolean" } } }, "gzfs.Dataset": { "type": "object", "properties": { "available": { "type": "integer" }, "compressratio": { "type": "number" }, "createtxg": { "type": "string" }, "guid": { "type": "string" }, "mountpoint": { "type": "string" }, "name": { "type": "string" }, "pool": { "type": "string" }, "properties": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZFSProperty" } }, "referenced": { "type": "integer" }, "type": { "$ref": "#/definitions/gzfs.DatasetType" }, "used": { "type": "integer" } } }, "gzfs.DatasetType": { "type": "string", "enum": [ "ALL", "FILESYSTEM", "VOLUME", "SNAPSHOT" ], "x-enum-varnames": [ "DatasetTypeAll", "DatasetTypeFilesystem", "DatasetTypeVolume", "DatasetTypeSnapshot" ] }, "gzfs.ZFSProperty": { "type": "object", "properties": { "source": { "$ref": "#/definitions/gzfs.ZFSPropertySource" }, "value": { "type": "string" } } }, "gzfs.ZFSPropertySource": { "type": "object", "properties": { "data": { "type": "string" }, "type": { "type": "string" } } }, "gzfs.ZPool": { "type": "object", "properties": { "allocated": { "type": "integer" }, "dedup": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolVDEV" } }, "dedup_ratio": { "type": "number" }, "fragmentation": { "type": "number" }, "free": { "type": "integer" }, "l2cache": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolVDEV" } }, "logs": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolVDEV" } }, "name": { "type": "string" }, "pool_guid": { "type": "string" }, "properties": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZFSProperty" } }, "size": { "type": "integer" }, "spa_version": { "type": "string" }, "spares": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolVDEV" } }, "special": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolVDEV" } }, "state": { "$ref": "#/definitions/gzfs.ZPoolState" }, "txg": { "type": "string" }, "type": { "type": "string" }, "zpl_version": { "type": "string" } } }, "gzfs.ZPoolState": { "type": "string", "enum": [ "ONLINE", "DEGRADED", "FAULTED", "OFFLINE", "REMOVED", "UNAVAIL", "CORRUPT_DATA", "UNKNOWN" ], "x-enum-varnames": [ "ZPoolStateOnline", "ZPoolStateDegraded", "ZPoolStateFaulted", "ZPoolStateOffline", "ZPoolStateRemoved", "ZPoolStateUnavailible", "ZPoolStateCorruptData", "ZPoolStateUnknown" ] }, "gzfs.ZPoolStatusPool": { "type": "object", "properties": { "action": { "type": "string" }, "dedup": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolStatusVDEV" } }, "l2cache": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolStatusVDEV" } }, "logs": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolStatusVDEV" } }, "name": { "type": "string" }, "pool_guid": { "type": "string" }, "scan_stats": { "$ref": "#/definitions/gzfs.ZPoolStatusScanStats" }, "spa_version": { "type": "string" }, "spares": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolStatusVDEV" } }, "special": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolStatusVDEV" } }, "state": { "type": "string" }, "status": { "type": "string" }, "txg": { "type": "string" }, "vdevs": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolStatusVDEV" } }, "zpl_version": { "type": "string" } } }, "gzfs.ZPoolStatusScanStats": { "type": "object", "properties": { "bytes_per_scan": { "type": "string" }, "end_time": { "type": "string" }, "errors": { "type": "string" }, "examined": { "type": "string" }, "function": { "type": "string" }, "issued": { "type": "string" }, "issued_bytes_per_scan": { "type": "string" }, "pass_start": { "type": "string" }, "processed": { "type": "string" }, "scrub_pause": { "type": "string" }, "scrub_spent_paused": { "type": "string" }, "skipped": { "type": "string" }, "start_time": { "type": "string" }, "state": { "type": "string" }, "to_examine": { "type": "string" } } }, "gzfs.ZPoolStatusVDEV": { "type": "object", "properties": { "alloc_space": { "type": "string" }, "checksum_errors": { "type": "string" }, "class": { "type": "string" }, "def_space": { "type": "string" }, "guid": { "type": "string" }, "name": { "type": "string" }, "path": { "type": "string" }, "read_errors": { "type": "string" }, "rep_dev_size": { "type": "string" }, "state": { "type": "string" }, "total_space": { "type": "string" }, "vdev_type": { "type": "string" }, "vdevs": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolStatusVDEV" } }, "write_errors": { "type": "string" } } }, "gzfs.ZPoolVDEV": { "type": "object", "properties": { "allocated": { "type": "integer" }, "class": { "type": "string" }, "fragmentation": { "type": "number" }, "free": { "type": "integer" }, "guid": { "type": "string" }, "name": { "type": "string" }, "path": { "type": "string" }, "phys_path": { "type": "string" }, "properties": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZFSProperty" } }, "size": { "type": "integer" }, "state": { "type": "string" }, "vdev_type": { "type": "string" }, "vdevs": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gzfs.ZPoolVDEV" } } } }, "internal.BulkDeleteRequest": { "type": "object", "required": [ "ids" ], "properties": { "ids": { "type": "array", "items": { "type": "integer" } } } }, "internal.BulkUpdateRulesRequest": { "type": "object", "required": [ "ids" ], "properties": { "discordEnabled": { "type": "boolean" }, "emailEnabled": { "type": "boolean" }, "ids": { "type": "array", "items": { "type": "integer" } }, "ntfyEnabled": { "type": "boolean" }, "uiEnabled": { "type": "boolean" } } }, "internal.NoteRequest": { "type": "object", "required": [ "content", "title" ], "properties": { "content": { "type": "string", "minLength": 3 }, "title": { "type": "string", "maxLength": 128, "minLength": 3 } } }, "internal_handlers_auth.BeginPasskeyRegistrationRequest": { "type": "object", "required": [ "userId" ], "properties": { "userId": { "type": "integer" } } }, "internal_handlers_auth.CreateGroupRequest": { "type": "object", "required": [ "members", "name" ], "properties": { "members": { "type": "array", "items": { "type": "string" } }, "name": { "type": "string" } } }, "internal_handlers_auth.CreatePamUserRequest": { "type": "object", "required": [ "admin", "homeDirPerms", "password", "uid", "username" ], "properties": { "admin": { "type": "boolean" }, "auxGroupIds": { "type": "array", "items": { "type": "integer" } }, "createSamba": { "type": "boolean" }, "disablePassword": { "type": "boolean" }, "doasEnabled": { "type": "boolean" }, "email": { "type": "string" }, "fullName": { "type": "string" }, "homeDirPerms": { "type": "integer", "maximum": 511, "minimum": 1 }, "homeDirectory": { "type": "string" }, "locked": { "type": "boolean" }, "newPrimaryGroup": { "type": "boolean" }, "password": { "type": "string", "maxLength": 128, "minLength": 8 }, "primaryGroupId": { "type": "integer" }, "shell": { "type": "string" }, "sshPublicKey": { "type": "string" }, "uid": { "type": "integer", "maximum": 65533, "minimum": 1000 }, "username": { "type": "string", "maxLength": 128, "minLength": 3 } } }, "internal_handlers_auth.CreateUserRequest": { "type": "object", "required": [ "admin", "username" ], "properties": { "admin": { "type": "boolean" }, "auxGroupIds": { "type": "array", "items": { "type": "integer" } }, "disablePassword": { "type": "boolean" }, "doasEnabled": { "type": "boolean" }, "email": { "type": "string" }, "fullName": { "type": "string" }, "homeDirPerms": { "type": "integer" }, "homeDirectory": { "type": "string" }, "locked": { "type": "boolean" }, "newPrimaryGroup": { "type": "boolean" }, "password": { "type": "string" }, "primaryGroupId": { "type": "integer" }, "shell": { "type": "string" }, "sshPublicKey": { "type": "string" }, "uid": { "type": "integer" }, "username": { "type": "string", "maxLength": 128, "minLength": 3 } } }, "internal_handlers_auth.EditUserRequest": { "type": "object", "required": [ "admin" ], "properties": { "admin": { "type": "boolean" }, "auxGroupIds": { "type": "array", "items": { "type": "integer" } }, "disablePassword": { "type": "boolean" }, "doasEnabled": { "type": "boolean" }, "email": { "type": "string" }, "fullName": { "type": "string" }, "homeDirPerms": { "type": "integer" }, "homeDirectory": { "type": "string" }, "locked": { "type": "boolean" }, "newPrimaryGroup": { "type": "boolean" }, "password": { "type": "string" }, "primaryGroupId": { "type": "integer" }, "sambaAction": { "type": "string", "enum": [ "keep", "upsert", "remove" ] }, "shell": { "type": "string" }, "sshPublicKey": { "type": "string" }, "uid": { "type": "integer" }, "username": { "type": "string" } } }, "internal_handlers_auth.FinishPasskeyLoginRequest": { "type": "object", "required": [ "credential", "requestId" ], "properties": { "credential": { "type": "array", "items": { "type": "integer" } }, "remember": { "type": "boolean" }, "requestId": { "type": "string" } } }, "internal_handlers_auth.FinishPasskeyRegistrationRequest": { "type": "object", "required": [ "credential", "requestId" ], "properties": { "credential": { "type": "array", "items": { "type": "integer" } }, "label": { "type": "string" }, "requestId": { "type": "string" } } }, "internal_handlers_auth.GroupMutationResult": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } } }, "internal_handlers_auth.ImportUserRequest": { "type": "object", "required": [ "admin", "username" ], "properties": { "admin": { "type": "boolean" }, "password": { "type": "string", "maxLength": 128, "minLength": 8 }, "username": { "type": "string", "maxLength": 128, "minLength": 3 } } }, "internal_handlers_auth.LoginConfig": { "type": "object", "properties": { "pamEnabled": { "type": "boolean" } } }, "internal_handlers_auth.LoginRequest": { "type": "object", "required": [ "authType", "password", "username" ], "properties": { "authType": { "type": "string", "enum": [ "sylve", "pam" ] }, "password": { "type": "string", "maxLength": 128, "minLength": 3 }, "remember": { "type": "boolean" }, "username": { "type": "string", "maxLength": 128, "minLength": 3 } } }, "internal_handlers_auth.NextUIDResult": { "type": "object", "properties": { "nextUID": { "type": "integer" } } }, "internal_handlers_auth.PasskeyChallengeResponse": { "type": "object", "properties": { "publicKey": {}, "requestId": { "type": "string" } } }, "internal_handlers_auth.PublicGroup": { "type": "object", "properties": { "createdAt": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" }, "notes": { "type": "string" }, "updatedAt": { "type": "string" }, "users": { "type": "array", "items": { "$ref": "#/definitions/internal_handlers_auth.PublicUser" } } } }, "internal_handlers_auth.PublicGroupSummary": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "notes": { "type": "string" } } }, "internal_handlers_auth.PublicUser": { "type": "object", "properties": { "admin": { "type": "boolean" }, "createdAt": { "type": "string" }, "disablePassword": { "type": "boolean" }, "doasEnabled": { "type": "boolean" }, "email": { "type": "string" }, "fullName": { "type": "string" }, "groups": { "type": "array", "items": { "$ref": "#/definitions/internal_handlers_auth.PublicGroupSummary" } }, "homeDirPerms": { "type": "integer" }, "homeDirectory": { "type": "string" }, "id": { "type": "integer" }, "lastLoginTime": { "type": "string" }, "locked": { "type": "boolean" }, "notes": { "type": "string" }, "passkeyEligible": { "type": "boolean" }, "primaryGroupId": { "type": "integer" }, "shell": { "type": "string" }, "source": { "type": "string" }, "sshPublicKey": { "type": "string" }, "uid": { "type": "integer" }, "updatedAt": { "type": "string" }, "username": { "type": "string" } } }, "internal_handlers_auth.ReplaceGroupMembersRequest": { "type": "object", "required": [ "usernames" ], "properties": { "usernames": { "type": "array", "items": { "type": "string" } } } }, "internal_handlers_auth.SuccessfulLogin": { "type": "object", "properties": { "basicSettings": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models.BasicSettings" }, "hostname": { "type": "string" }, "nodeId": { "type": "string" }, "token": { "type": "string" } } }, "internal_handlers_auth.UserCapabilities": { "type": "object", "properties": { "doasAvailable": { "type": "boolean" } } }, "internal_handlers_auth.UserMutationResult": { "type": "object", "properties": { "id": { "type": "integer" }, "username": { "type": "string" } } }, "internal_handlers_cluster.AcceptJoinRequest": { "type": "object", "required": [ "nodeId", "nodeIp", "nodeVersion" ], "properties": { "inventory": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_services_cluster.GuestIdentityInventoryReport" }, "nodeId": { "type": "string" }, "nodeIp": { "type": "string" }, "nodeVersion": { "type": "string" }, "preflight": { "type": "boolean" } } }, "internal_handlers_cluster.CreateClusterRequest": { "type": "object", "required": [ "ip" ], "properties": { "ip": { "type": "string" } } }, "internal_handlers_cluster.JoinClusterRequest": { "type": "object", "required": [ "clusterKey", "leaderIp", "nodeId", "nodeIp" ], "properties": { "clusterKey": { "type": "string" }, "leaderIp": { "type": "string" }, "nodeId": { "type": "string" }, "nodeIp": { "type": "string" } } }, "internal_handlers_cluster.JoinKeyResponse": { "type": "object", "properties": { "key": { "type": "string" } } }, "internal_handlers_cluster.RemovePeerRequest": { "type": "object", "required": [ "nodeId" ], "properties": { "nodeId": { "type": "string" } } }, "internal_handlers_cluster.ReplicationFailoverRequest": { "type": "object", "properties": { "confirmDataLoss": { "type": "boolean" }, "mode": { "type": "string" }, "movePinnedSource": { "type": "boolean" }, "targetNodeId": { "type": "string" } } }, "internal_handlers_cluster.RestoreBackupJobRequest": { "type": "object", "properties": { "encryptionKey": { "type": "string" }, "encryptionKeyFormat": { "type": "string" }, "snapshot": { "type": "string" } } }, "internal_handlers_cluster.RestoreBackupTargetRequest": { "type": "object", "properties": { "destinationDataset": { "type": "string" }, "encryptionKey": { "type": "string" }, "encryptionKeyFormat": { "type": "string" }, "operationId": { "type": "string" }, "remoteDataset": { "type": "string" }, "restoreNetwork": { "type": "boolean" }, "restoreNodeId": { "type": "string" }, "snapshot": { "type": "string" } } }, "internal_handlers_disk.DiskActionRequest": { "type": "object", "required": [ "device" ], "properties": { "device": { "type": "string", "minLength": 2 } } }, "internal_handlers_disk.DiskPartitionRequest": { "type": "object", "required": [ "sizes" ], "properties": { "sizes": { "type": "array", "maxItems": 128, "minItems": 1, "items": { "type": "integer" } } } }, "internal_handlers_disk.DiskSelfTestRequest": { "type": "object", "required": [ "device", "testType" ], "properties": { "device": { "type": "string", "minLength": 2 }, "testType": { "type": "string" } } }, "internal_handlers_events.CreateSSETokenResponse": { "type": "object", "properties": { "expiresIn": { "type": "integer" }, "token": { "type": "string" } } }, "internal_handlers_iscsi.ISCSIInitiatorRequest": { "type": "object", "properties": { "authMethod": { "type": "string" }, "chapName": { "type": "string" }, "chapSecret": { "type": "string" }, "initiatorName": { "type": "string" }, "nickname": { "type": "string" }, "targetAddress": { "type": "string" }, "targetName": { "type": "string" }, "tgtChapName": { "type": "string" }, "tgtChapSecret": { "type": "string" } } }, "internal_handlers_iscsi.ISCSITargetLUNRequest": { "type": "object", "properties": { "lunNumber": { "type": "integer" }, "zvol": { "type": "string" } } }, "internal_handlers_iscsi.ISCSITargetPortalRequest": { "type": "object", "properties": { "address": { "type": "string" }, "port": { "type": "integer" } } }, "internal_handlers_iscsi.ISCSITargetRequest": { "type": "object", "properties": { "alias": { "type": "string" }, "authMethod": { "type": "string" }, "chapName": { "type": "string" }, "chapSecret": { "type": "string" }, "mutualChapName": { "type": "string" }, "mutualChapSecret": { "type": "string" }, "targetName": { "type": "string" } } }, "internal_handlers_jail.CreateJailSnapshotRequest": { "type": "object", "required": [ "name" ], "properties": { "description": { "type": "string", "maxLength": 4096 }, "name": { "type": "string", "maxLength": 128 } } }, "internal_handlers_jail.JailActionResponse": { "type": "object", "properties": { "action": { "type": "string" }, "ctId": { "type": "integer" }, "outcome": { "type": "string" }, "taskId": { "type": "integer" } } }, "internal_handlers_jail.JailCreateResponse": { "type": "object", "properties": { "ctId": { "type": "integer" }, "name": { "type": "string" } } }, "internal_handlers_jail.JailEditDescRequest": { "type": "object", "required": [ "description" ], "properties": { "description": { "type": "string" } } }, "internal_handlers_jail.JailEditNameRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" } } }, "internal_handlers_jail.JailLogsResponse": { "type": "object", "properties": { "logs": { "type": "string" } } }, "internal_handlers_jail.JailTemplateCaptureTaskResponse": { "type": "object", "properties": { "action": { "type": "string" }, "outcome": { "type": "string" }, "sourceCtid": { "type": "integer" }, "taskId": { "type": "integer" } } }, "internal_handlers_jail.JailTemplateInstantiationTaskResponse": { "type": "object", "properties": { "action": { "type": "string" }, "outcome": { "type": "string" }, "taskId": { "type": "integer" }, "templateId": { "type": "integer" } } }, "internal_handlers_jail.JailUpdateCPURequest": { "type": "object", "required": [ "cores" ], "properties": { "cores": { "type": "integer" } } }, "internal_handlers_jail.JailUpdateMemoryRequest": { "type": "object", "required": [ "memory" ], "properties": { "memory": { "type": "integer" } } }, "internal_handlers_jail.JailUpdateResourceLimitsRequest": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } } }, "internal_handlers_jail.ModifyAdditionalOptionsRequest": { "type": "object", "required": [ "additionalOptions" ], "properties": { "additionalOptions": { "type": "string" } } }, "internal_handlers_jail.ModifyAllowedOptionsRequest": { "type": "object", "required": [ "allowedOptions" ], "properties": { "allowedOptions": { "type": "array", "items": { "type": "string" } } } }, "internal_handlers_jail.ModifyBootOrderRequest": { "type": "object", "required": [ "bootOrder", "startAtBoot" ], "properties": { "bootOrder": { "type": "integer" }, "startAtBoot": { "type": "boolean" } } }, "internal_handlers_jail.ModifyDevFSRulesRequest": { "type": "object", "required": [ "devFSRules" ], "properties": { "devFSRules": { "type": "string" } } }, "internal_handlers_jail.ModifyFstabRequest": { "type": "object", "required": [ "fstab" ], "properties": { "fstab": { "type": "string" } } }, "internal_handlers_jail.ModifyLifecycleHookPhaseRequest": { "type": "object", "required": [ "enabled", "script" ], "properties": { "enabled": { "type": "boolean" }, "script": { "type": "string" } } }, "internal_handlers_jail.ModifyLifecycleHooksPayload": { "type": "object", "required": [ "poststart", "poststop", "prestart", "prestop", "start", "stop" ], "properties": { "poststart": { "$ref": "#/definitions/internal_handlers_jail.ModifyLifecycleHookPhaseRequest" }, "poststop": { "$ref": "#/definitions/internal_handlers_jail.ModifyLifecycleHookPhaseRequest" }, "prestart": { "$ref": "#/definitions/internal_handlers_jail.ModifyLifecycleHookPhaseRequest" }, "prestop": { "$ref": "#/definitions/internal_handlers_jail.ModifyLifecycleHookPhaseRequest" }, "start": { "$ref": "#/definitions/internal_handlers_jail.ModifyLifecycleHookPhaseRequest" }, "stop": { "$ref": "#/definitions/internal_handlers_jail.ModifyLifecycleHookPhaseRequest" } } }, "internal_handlers_jail.ModifyLifecycleHooksRequest": { "type": "object", "required": [ "hooks" ], "properties": { "hooks": { "$ref": "#/definitions/internal_handlers_jail.ModifyLifecycleHooksPayload" } } }, "internal_handlers_jail.ModifyMetadataRequest": { "type": "object", "required": [ "env", "metadata" ], "properties": { "env": { "type": "string" }, "metadata": { "type": "string" } } }, "internal_handlers_jail.ModifyResolvConfRequest": { "type": "object", "required": [ "resolvConf" ], "properties": { "resolvConf": { "type": "string" } } }, "internal_handlers_jail.ModifyWakeOnLanRequest": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } } }, "internal_handlers_jail.SetInheritanceRequest": { "type": "object", "required": [ "ipv4", "ipv6" ], "properties": { "ipv4": { "type": "boolean" }, "ipv6": { "type": "boolean" } } }, "internal_handlers_mdns.MdnsRecordRequest": { "type": "object", "properties": { "interfaces": { "type": "string" }, "name": { "type": "string" }, "port": { "type": "integer" }, "txt": { "type": "object", "additionalProperties": { "type": "string" } }, "type": { "type": "string" } } }, "internal_handlers_mdns.MdnsSettingsRequest": { "type": "object", "properties": { "hostname": { "type": "string" }, "interfaces": { "type": "string" } } }, "internal_handlers_migration.MigrateGuestRequest": { "type": "object", "properties": { "targetNodeUuid": { "type": "string" } } }, "internal_handlers_migration.MigrationTaskResponse": { "type": "object", "properties": { "guestId": { "type": "integer" }, "outcome": { "type": "string" }, "taskId": { "type": "integer" } } }, "internal_handlers_network.BulkDeleteNetworkObjectsRequest": { "type": "object", "required": [ "ids" ], "properties": { "ids": { "type": "array", "maxItems": 1024, "minItems": 1, "uniqueItems": true, "items": { "type": "integer" } } } }, "internal_handlers_network.CreateManualSwitchRequest": { "type": "object", "required": [ "bridge", "name" ], "properties": { "bridge": { "type": "string" }, "name": { "type": "string" } } }, "internal_handlers_network.CreateOrEditNetworkObjectRequest": { "type": "object", "required": [ "name", "type", "values" ], "properties": { "name": { "type": "string", "maxLength": 128 }, "type": { "type": "string" }, "values": { "type": "array", "maxItems": 1024, "minItems": 1, "items": { "type": "string" } } } }, "internal_handlers_network.CreateStandardSwitchRequest": { "type": "object", "required": [ "name", "private" ], "properties": { "defaultRoute": { "type": "boolean" }, "dhcp": { "type": "boolean" }, "disableBridgeOffloads": { "type": "boolean" }, "disableIPv6": { "type": "boolean" }, "gateway4": { "type": "integer" }, "gateway4Manual": { "type": "string" }, "gateway6": { "type": "integer" }, "gateway6Manual": { "type": "string" }, "mtu": { "type": "integer" }, "name": { "type": "string" }, "network4": { "type": "integer" }, "network4Manual": { "type": "string" }, "network6": { "type": "integer" }, "network6Manual": { "type": "string" }, "ports": { "type": "array", "items": { "type": "string" } }, "private": { "type": "boolean" }, "slaac": { "type": "boolean" }, "vlan": { "type": "integer" } } }, "internal_handlers_network.ListSwitchResponse": { "type": "object", "properties": { "manual": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.ManualSwitch" } }, "standard": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_network.StandardSwitch" } } } }, "internal_handlers_network.UpdateStandardSwitchRequest": { "type": "object", "required": [ "private" ], "properties": { "defaultRoute": { "type": "boolean" }, "dhcp": { "type": "boolean" }, "disableBridgeOffloads": { "type": "boolean" }, "disableIPv6": { "type": "boolean" }, "gateway4": { "type": "integer" }, "gateway4Manual": { "type": "string" }, "gateway6": { "type": "integer" }, "gateway6Manual": { "type": "string" }, "mtu": { "type": "integer" }, "network4": { "type": "integer" }, "network4Manual": { "type": "string" }, "network6": { "type": "integer" }, "network6Manual": { "type": "string" }, "ports": { "type": "array", "items": { "type": "string" } }, "private": { "type": "boolean" }, "slaac": { "type": "boolean" }, "vlan": { "type": "integer" } } }, "internal_handlers_notifications.NotificationCountResponse": { "type": "object", "properties": { "active": { "type": "integer" } } }, "internal_handlers_notifications.NotificationDismissAllResponse": { "type": "object", "properties": { "dismissed": { "type": "integer" } } }, "internal_handlers_notifications.NotificationListResponse": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models.Notification" } }, "total": { "type": "integer" } } }, "internal_handlers_samba.CreateSambaShareRequest": { "type": "object", "properties": { "auditEnabled": { "type": "boolean" }, "auditRetentionDays": { "type": "integer" }, "auditedOperations": { "type": "array", "items": { "type": "string" } }, "createMask": { "type": "string" }, "dataset": { "type": "string" }, "directoryMask": { "type": "string" }, "enabled": { "type": "boolean" }, "guest": { "$ref": "#/definitions/internal_handlers_samba.SambaGuestRequest" }, "name": { "type": "string" }, "permissions": { "$ref": "#/definitions/internal_handlers_samba.SambaPermissionsRequest" }, "timeMachine": { "type": "boolean" }, "timeMachineMaxSize": { "type": "integer" } } }, "internal_handlers_samba.SambaConfigRequest": { "type": "object", "properties": { "advertiseMdns": { "type": "boolean" }, "appleExtensions": { "type": "boolean" }, "bindInterfacesOnly": { "type": "boolean" }, "interfaces": { "type": "string" }, "serverString": { "type": "string" }, "unixCharset": { "type": "string" }, "workgroup": { "type": "string" } } }, "internal_handlers_samba.SambaGuestRequest": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "writeable": { "type": "boolean" } } }, "internal_handlers_samba.SambaGuestResponse": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "writeable": { "type": "boolean" } } }, "internal_handlers_samba.SambaPermissionsRequest": { "type": "object", "properties": { "read": { "$ref": "#/definitions/internal_handlers_samba.SambaPrincipalIDsRequest" }, "write": { "$ref": "#/definitions/internal_handlers_samba.SambaPrincipalIDsRequest" } } }, "internal_handlers_samba.SambaPermissionsResponse": { "type": "object", "properties": { "read": { "$ref": "#/definitions/internal_handlers_samba.SambaPrincipalSetResponse" }, "write": { "$ref": "#/definitions/internal_handlers_samba.SambaPrincipalSetResponse" } } }, "internal_handlers_samba.SambaPrincipalGroupResponse": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } } }, "internal_handlers_samba.SambaPrincipalIDsRequest": { "type": "object", "properties": { "groupIds": { "type": "array", "items": { "type": "integer" } }, "userIds": { "type": "array", "items": { "type": "integer" } } } }, "internal_handlers_samba.SambaPrincipalSetResponse": { "type": "object", "properties": { "groups": { "type": "array", "items": { "$ref": "#/definitions/internal_handlers_samba.SambaPrincipalGroupResponse" } }, "users": { "type": "array", "items": { "$ref": "#/definitions/internal_handlers_samba.SambaPrincipalUserResponse" } } } }, "internal_handlers_samba.SambaPrincipalUserResponse": { "type": "object", "properties": { "id": { "type": "integer" }, "username": { "type": "string" } } }, "internal_handlers_samba.SambaShareResponse": { "type": "object", "properties": { "auditEnabled": { "type": "boolean" }, "auditRetentionDays": { "type": "integer" }, "auditedOperations": { "type": "array", "items": { "type": "string" } }, "createMask": { "type": "string" }, "createdAt": { "type": "string" }, "dataset": { "type": "string" }, "directoryMask": { "type": "string" }, "enabled": { "type": "boolean" }, "guest": { "$ref": "#/definitions/internal_handlers_samba.SambaGuestResponse" }, "id": { "type": "integer" }, "name": { "type": "string" }, "permissions": { "$ref": "#/definitions/internal_handlers_samba.SambaPermissionsResponse" }, "timeMachine": { "type": "boolean" }, "timeMachineMaxSize": { "type": "integer" }, "updatedAt": { "type": "string" } } }, "internal_handlers_samba.SetSambaShareEnabledRequest": { "type": "object", "properties": { "enabled": { "type": "boolean" } } }, "internal_handlers_samba.UpdateSambaShareRequest": { "type": "object", "properties": { "auditEnabled": { "type": "boolean" }, "auditRetentionDays": { "type": "integer" }, "auditedOperations": { "type": "array", "items": { "type": "string" } }, "createMask": { "type": "string" }, "dataset": { "type": "string" }, "directoryMask": { "type": "string" }, "enabled": { "type": "boolean" }, "guest": { "$ref": "#/definitions/internal_handlers_samba.SambaGuestRequest" }, "name": { "type": "string" }, "permissions": { "$ref": "#/definitions/internal_handlers_samba.SambaPermissionsRequest" }, "timeMachine": { "type": "boolean" }, "timeMachineMaxSize": { "type": "integer" } } }, "internal_handlers_system.AddFileOrFolderRequest": { "type": "object", "required": [ "isFolder", "name", "path" ], "properties": { "isFolder": { "type": "boolean" }, "name": { "type": "string" }, "path": { "type": "string" } } }, "internal_handlers_system.AddPassthroughDeviceRequest": { "type": "object", "required": [ "deviceID", "domain" ], "properties": { "deviceID": { "type": "string", "maxLength": 16 }, "domain": { "type": "string", "maxLength": 3 } } }, "internal_handlers_system.CopyOrMoveFilesOrFoldersRequest": { "type": "object", "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_interfaces_services_system.FileTransferItem" } }, "move": { "type": "boolean" } } }, "internal_handlers_system.DeleteFilesOrFoldersRequest": { "type": "object", "required": [ "paths" ], "properties": { "paths": { "type": "array", "items": { "type": "string" } } } }, "internal_handlers_system.DeleteUploadRequest": { "type": "object", "properties": { "data": { "type": "object", "properties": { "uploadId": { "type": "string" } } } } }, "internal_handlers_system.RemovePassthroughDeviceResponse": { "type": "object", "properties": { "rebootRequired": { "type": "boolean" } } }, "internal_handlers_system.RenameFileOrFolderRequest": { "type": "object", "required": [ "id", "newName" ], "properties": { "id": { "type": "string" }, "newName": { "type": "string" } } }, "internal_handlers_system.ServiceStateResponse": { "type": "object", "properties": { "changed": { "type": "boolean" }, "enabled": { "type": "boolean" }, "service": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models.AvailableService" } } }, "internal_handlers_system.SetServiceStateRequest": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } } }, "internal_handlers_system.SetTunableRequest": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string" }, "value": { "type": "string" } } }, "internal_handlers_system.UploadFileResponse": { "type": "object", "properties": { "bytes": { "type": "integer" }, "path": { "type": "string" }, "uploadId": { "type": "string" } } }, "internal_handlers_utilities.BulkDeleteDownloadRequest": { "type": "object", "required": [ "ids" ], "properties": { "ids": { "type": "array", "minItems": 1, "items": { "type": "integer" } } } }, "internal_handlers_utilities.DownloadPathsResponse": { "type": "object", "properties": { "http": { "type": "string" }, "path": { "type": "string" } } }, "internal_handlers_utilities.DownloaderUploadAbortResponse": { "type": "object", "properties": { "status": { "type": "string" }, "uploadId": { "type": "string" } } }, "internal_handlers_utilities.DownloaderUploadReceipt": { "type": "object", "properties": { "bytes": { "type": "integer" }, "name": { "type": "string" }, "status": { "$ref": "#/definitions/github_com_alchemillahq_sylve_internal_db_models_utilities.UploadStatus" }, "uploadId": { "type": "string" } } }, "internal_handlers_utilities.SignedURLRequest": { "type": "object", "required": [ "name", "parentUUID" ], "properties": { "name": { "type": "string" }, "parentUUID": { "type": "string" } } }, "internal_handlers_vm.CreateVMSnapshotRequest": { "type": "object", "required": [ "name" ], "properties": { "description": { "type": "string", "maxLength": 4096 }, "name": { "type": "string", "maxLength": 128 } } }, "internal_handlers_vm.ModifyBootOrderRequest": { "type": "object", "required": [ "bootOrder", "startAtBoot" ], "properties": { "bootOrder": { "type": "integer" }, "startAtBoot": { "type": "boolean" } } }, "internal_handlers_vm.ModifyBootROMRequest": { "type": "object", "required": [ "bootRom" ], "properties": { "bootRom": { "type": "string" } } }, "internal_handlers_vm.ModifyClockRequest": { "type": "object", "required": [ "timeOffset" ], "properties": { "timeOffset": { "type": "string" } } }, "internal_handlers_vm.ModifyCloudInitDataRequest": { "type": "object", "required": [ "data", "metadata", "networkConfig" ], "properties": { "data": { "type": "string" }, "metadata": { "type": "string" }, "networkConfig": { "type": "string" } } }, "internal_handlers_vm.ModifyExtraBhyveOptionsRequest": { "type": "object", "required": [ "extraBhyveOptions" ], "properties": { "extraBhyveOptions": { "type": "array", "items": { "type": "string" } } } }, "internal_handlers_vm.ModifyIgnoreUMSRsRequest": { "type": "object", "required": [ "ignoreUMSRs" ], "properties": { "ignoreUMSRs": { "type": "boolean" } } }, "internal_handlers_vm.ModifyPassthroughRequest": { "type": "object", "required": [ "pciDevices" ], "properties": { "pciDevices": { "type": "array", "items": { "type": "integer" } } } }, "internal_handlers_vm.ModifyQemuGuestAgentRequest": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } } }, "internal_handlers_vm.ModifyRAMRequest": { "type": "object", "required": [ "ram" ], "properties": { "ram": { "type": "integer" } } }, "internal_handlers_vm.ModifySerialConsoleRequest": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } } }, "internal_handlers_vm.ModifyShutdownWaitTimeRequest": { "type": "object", "required": [ "waitTime" ], "properties": { "waitTime": { "type": "integer" } } }, "internal_handlers_vm.ModifyTPMRequest": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } } }, "internal_handlers_vm.ModifyWakeOnLanRequest": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } } }, "internal_handlers_vm.VMActionResponse": { "type": "object", "properties": { "action": { "type": "string" }, "outcome": { "type": "string" }, "rid": { "type": "integer" }, "taskId": { "type": "integer" } } }, "internal_handlers_vm.VMCreateResponse": { "type": "object", "properties": { "name": { "type": "string" }, "rid": { "type": "integer" } } }, "internal_handlers_vm.VMEditDescRequest": { "type": "object", "properties": { "description": { "type": "string" } } }, "internal_handlers_vm.VMEditNameRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" } } }, "internal_handlers_vm.VMLogsResponse": { "type": "object", "properties": { "logs": { "type": "string" } } }, "internal_handlers_vm.VMTemplateCaptureTaskResponse": { "type": "object", "properties": { "action": { "type": "string" }, "outcome": { "type": "string" }, "sourceRid": { "type": "integer" }, "taskId": { "type": "integer" } } }, "internal_handlers_vm.VMTemplateInstantiationTaskResponse": { "type": "object", "properties": { "action": { "type": "string" }, "outcome": { "type": "string" }, "taskId": { "type": "integer" }, "templateId": { "type": "integer" } } }, "internal_handlers_zfs.CreateFilesystemRequest": { "type": "object", "required": [ "name", "parent" ], "properties": { "name": { "type": "string" }, "parent": { "type": "string" }, "properties": { "type": "object", "additionalProperties": { "type": "string" } } } }, "internal_handlers_zfs.CreateSnapshotRequest": { "type": "object", "required": [ "guid", "name" ], "properties": { "guid": { "type": "string" }, "name": { "type": "string" }, "recursive": { "type": "boolean" } } }, "internal_handlers_zfs.CreateVolumeRequest": { "type": "object", "required": [ "name", "parent" ], "properties": { "name": { "type": "string" }, "parent": { "type": "string" }, "properties": { "type": "object", "additionalProperties": { "type": "string" } } } }, "internal_handlers_zfs.DetachRequest": { "type": "object", "required": [ "device" ], "properties": { "device": { "type": "string" } } }, "internal_handlers_zfs.EditFilesystemRequest": { "type": "object", "required": [ "properties" ], "properties": { "properties": { "type": "object", "additionalProperties": { "type": "string" } } } }, "internal_handlers_zfs.FlashVolumeRequest": { "type": "object", "required": [ "uuid" ], "properties": { "uuid": { "type": "string" } } }, "internal_handlers_zfs.PoolEditRequest": { "type": "object", "properties": { "properties": { "type": "object", "additionalProperties": { "type": "string" } }, "spares": { "type": "array", "items": { "type": "string" } } } }, "internal_handlers_zfs.RollbackSnapshotRequest": { "type": "object", "properties": { "destroyMoreRecent": { "type": "boolean" } } }, "libvirt.DomainState": { "type": "integer", "format": "int32", "enum": [ 0, 1, 2, 3, 4, 5, 6, 7 ], "x-enum-varnames": [ "DomainNostate", "DomainRunning", "DomainBlocked", "DomainPaused", "DomainShutdown", "DomainShutoff", "DomainCrashed", "DomainPmsuspended" ] }, "map_string_int": { "type": "object", "additionalProperties": { "type": "integer" } }, "map_string_string": { "type": "object", "additionalProperties": { "type": "string" } }, "time.Duration": { "type": "integer", "format": "int64", "enum": [ -9223372036854775808, 9223372036854775807, 1, 1000, 1000000, 1000000000, 60000000000, 3600000000000 ], "x-enum-varnames": [ "minDuration", "maxDuration", "Nanosecond", "Microsecond", "Millisecond", "Second", "Minute", "Hour" ] } }, "securityDefinitions": { "BearerAuth": { "description": "Type \"Bearer\" followed by a space and JWT token.", "type": "apiKey", "name": "Authorization", "in": "header" }, "ClusterKeyAuth": { "description": "Exact enabled cluster join key.", "type": "apiKey", "name": "X-Cluster-Key", "in": "header" }, "ClusterTokenAuth": { "description": "Short-lived server-issued cluster token.", "type": "apiKey", "name": "X-Cluster-Token", "in": "header" } } }