gns3-server/docs/openapi.json
YueGuobin 7e8c515a3c
api: expose installed netmiko device types for the web UI
New GET /v3/netmiko/device_types endpoint returns the device types
supported by the netmiko library installed on the server, including
the gns3-copilot custom drivers, so the web UI can populate the
netmiko_device_type dropdown on templates and nodes.

The list is read at runtime from netmiko's ssh_dispatcher.CLASS_MAPPER
registry (the same table ConnectHandler dispatches on), filtered to
drop the '_ssh' aliases and the 'autodetect' pseudo type, and cached
for the process lifetime. Returns 501 when netmiko is not installed
(ai-features extra).
2026-08-21 21:41:42 +08:00

1 line
303 KiB
JSON

{"openapi": "3.1.0", "info": {"title": "GNS3 controller API", "description": "This page describes the public controller API for GNS3", "version": "3.0.0"}, "paths": {"/v3/version": {"get": {"tags": ["Controller"], "summary": "Get Version", "description": "Return the server version number.", "operationId": "get_version_v3_version_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Version"}}}}}}, "post": {"tags": ["Controller"], "summary": "Check Version", "description": "Check if version is the same as the server.", "operationId": "check_version_v3_version_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Version"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Version"}}}}, "409": {"description": "Invalid version", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/reload": {"post": {"tags": ["Controller"], "summary": "Reload", "description": "Reload the controller", "operationId": "reload_v3_reload_post", "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/shutdown": {"post": {"tags": ["Controller"], "summary": "Shutdown", "description": "Shutdown the server", "operationId": "shutdown_v3_shutdown_post", "responses": {"204": {"description": "Successful Response"}, "403": {"description": "Server shutdown not allowed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/iou_license": {"get": {"tags": ["Controller"], "summary": "Get Iou License", "description": "Return the IOU license settings", "operationId": "get_iou_license_v3_iou_license_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IOULicense"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}, "put": {"tags": ["Controller"], "summary": "Update Iou License", "description": "Update the IOU license settings.", "operationId": "update_iou_license_v3_iou_license_put", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IOULicense"}}}, "required": true}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IOULicense"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/statistics": {"get": {"tags": ["Controller"], "summary": "Statistics", "description": "Return server statistics including compute resources, projects, and nodes.", "operationId": "statistics_v3_statistics_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"additionalProperties": true, "type": "object", "title": "Response Statistics V3 Statistics Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/notifications": {"get": {"tags": ["Controller"], "summary": "Controller Http Notifications", "description": "Receive controller notifications about the controller from HTTP stream.", "operationId": "controller_http_notifications_v3_notifications_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/access/users/login": {"post": {"tags": ["Users"], "summary": "Login", "description": "Default user login method using forms (x-www-form-urlencoded).\nExample: curl -X POST http://host:port/v3/access/users/login -H \"Content-Type: application/x-www-form-urlencoded\" -d \"username=admin&password=admin\"", "operationId": "login_v3_access_users_login_post", "requestBody": {"content": {"application/x-www-form-urlencoded": {"schema": {"$ref": "#/components/schemas/Body_login_v3_access_users_login_post"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Token"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/users/authenticate": {"post": {"tags": ["Users"], "summary": "Authenticate", "description": "Alternative authentication method using json.\nExample: curl -X POST http://host:port/v3/access/users/authenticate -d '{\"username\": \"admin\", \"password\": \"admin\"}' -H \"Content-Type: application/json\"", "operationId": "authenticate_v3_access_users_authenticate_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Credentials"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Token"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/users/refresh": {"post": {"tags": ["Users"], "summary": "Refresh Access Token", "description": "Exchange a refresh token for a new access token.\n\nPublic endpoint \u2014 the refresh token itself proves identity. Respects the\nuser's token_version, so logout (which increments it) invalidates all\noutstanding refresh tokens. Refresh tokens are stateless JWTs with a\nlonger expiry (default 30 days). Stolen tokens remain valid until their\n`exp` or until logout \u2014 no replay protection without a server-side table.", "operationId": "refresh_access_token_v3_access_users_refresh_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RefreshTokenRequest"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Token"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/users/logout": {"post": {"tags": ["Users"], "summary": "Logout", "description": "Logout the current user by revoking all existing tokens.", "operationId": "logout_v3_access_users_logout_post", "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/access/users/me": {"get": {"tags": ["Users"], "summary": "Get Logged In User", "description": "Get the current active user.", "operationId": "get_logged_in_user_v3_access_users_me_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}, "put": {"tags": ["Users"], "summary": "Update Logged In User", "description": "Update the current active user.", "operationId": "update_logged_in_user_v3_access_users_me_put", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoggedInUserUpdate"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/access/users": {"get": {"tags": ["Users"], "summary": "Get Users", "description": "Get all users.\n\nRequired privilege: User.Audit", "operationId": "get_users_v3_access_users_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/User"}, "type": "array", "title": "Response Get Users V3 Access Users Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}, "post": {"tags": ["Users"], "summary": "Create User", "description": "Create a new user.\n\nRequired privilege: User.Allocate", "operationId": "create_user_v3_access_users_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserCreate"}}}, "required": true}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/access/users/{user_id}": {"get": {"tags": ["Users"], "summary": "Get User", "description": "Get a user.\n\nRequired privilege: User.Audit", "operationId": "get_user_v3_access_users__user_id__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Users"], "summary": "Update User", "description": "Update a user.\n\nRequired privilege: User.Modify", "operationId": "update_user_v3_access_users__user_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Users"], "summary": "Delete User", "description": "Delete a user.\n\nRequired privilege: User.Allocate", "operationId": "delete_user_v3_access_users__user_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/users/{user_id}/groups": {"get": {"tags": ["Users"], "summary": "Get User Memberships", "description": "Get user memberships.\n\nRequired privilege: Group.Audit", "operationId": "get_user_memberships_v3_access_users__user_id__groups_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/UserGroup"}, "title": "Response Get User Memberships V3 Access Users User Id Groups Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/groups": {"get": {"tags": ["Users groups"], "summary": "Get User Groups", "description": "Get all user groups.\n\nRequired privilege: Group.Audit", "operationId": "get_user_groups_v3_access_groups_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/UserGroup"}, "type": "array", "title": "Response Get User Groups V3 Access Groups Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}, "post": {"tags": ["Users groups"], "summary": "Create User Group", "description": "Create a new user group.\n\nRequired privilege: Group.Allocate", "operationId": "create_user_group_v3_access_groups_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserGroupCreate"}}}, "required": true}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserGroup"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/access/groups/{user_group_id}": {"get": {"tags": ["Users groups"], "summary": "Get User Group", "description": "Get a user group.\n\nRequired privilege: Group.Audit", "operationId": "get_user_group_v3_access_groups__user_group_id__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_group_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Group Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserGroup"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Users groups"], "summary": "Update User Group", "description": "Update a user group.\n\nRequired privilege: Group.Modify", "operationId": "update_user_group_v3_access_groups__user_group_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_group_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Group Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserGroupUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserGroup"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Users groups"], "summary": "Delete User Group", "description": "Delete a user group.\n\nRequired privilege: Group.Allocate", "operationId": "delete_user_group_v3_access_groups__user_group_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_group_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Group Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/groups/{user_group_id}/members": {"get": {"tags": ["Users groups"], "summary": "Get User Group Members", "description": "Get all user group members.\n\nRequired privilege: Group.Audit", "operationId": "get_user_group_members_v3_access_groups__user_group_id__members_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_group_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Group Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/User"}, "title": "Response Get User Group Members V3 Access Groups User Group Id Members Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/groups/{user_group_id}/members/{user_id}": {"put": {"tags": ["Users groups"], "summary": "Add Member To Group", "description": "Add member to a user group.\n\nRequired privilege: Group.Modify", "operationId": "add_member_to_group_v3_access_groups__user_group_id__members__user_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_group_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Group Id"}}, {"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Users groups"], "summary": "Remove Member From Group", "description": "Remove member from a user group.\n\nRequired privilege: Group.Modify", "operationId": "remove_member_from_group_v3_access_groups__user_group_id__members__user_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_group_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Group Id"}}, {"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/roles": {"get": {"tags": ["Roles"], "summary": "Get Roles", "description": "Get all roles.\n\nRequired privilege: Role.Audit", "operationId": "get_roles_v3_access_roles_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/Role"}, "type": "array", "title": "Response Get Roles V3 Access Roles Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}, "post": {"tags": ["Roles"], "summary": "Create Role", "description": "Create a new role.\n\nRequired privilege: Role.Allocate", "operationId": "create_role_v3_access_roles_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleCreate"}}}, "required": true}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/access/roles/{role_id}": {"get": {"tags": ["Roles"], "summary": "Get Role", "description": "Get a role.\n\nRequired privilege: Role.Audit", "operationId": "get_role_v3_access_roles__role_id__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "role_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Role Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Roles"], "summary": "Update Role", "description": "Update a role.\n\nRequired privilege: Role.Modify", "operationId": "update_role_v3_access_roles__role_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "role_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Role Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Roles"], "summary": "Delete Role", "description": "Delete a role.\n\nRequired privilege: Role.Allocate", "operationId": "delete_role_v3_access_roles__role_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "role_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Role Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/roles/{role_id}/privileges": {"get": {"tags": ["Roles"], "summary": "Get Role Privileges", "description": "Get all role privileges.\n\nRequired privilege: Role.Audit", "operationId": "get_role_privileges_v3_access_roles__role_id__privileges_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "role_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Role Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Privilege"}, "title": "Response Get Role Privileges V3 Access Roles Role Id Privileges Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/roles/{role_id}/privileges/{privilege_id}": {"put": {"tags": ["Roles"], "summary": "Add Privilege To Role", "description": "Add a privilege to a role.\n\nRequired privilege: Role.Modify", "operationId": "add_privilege_to_role_v3_access_roles__role_id__privileges__privilege_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "role_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Role Id"}}, {"name": "privilege_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Privilege Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Roles"], "summary": "Remove Privilege From Role", "description": "Remove privilege from a role.\n\nRequired privilege: Role.Modify", "operationId": "remove_privilege_from_role_v3_access_roles__role_id__privileges__privilege_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "role_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Role Id"}}, {"name": "privilege_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Privilege Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/privileges": {"get": {"tags": ["Privileges"], "summary": "Get Privileges", "description": "Get all privileges.\n\nRequired privilege: None", "operationId": "get_privileges_v3_access_privileges_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/Privilege"}, "type": "array", "title": "Response Get Privileges V3 Access Privileges Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/access/acl/endpoints": {"get": {"tags": ["ACL"], "summary": "Endpoints", "description": "List all endpoints to be used in ACL entries.", "operationId": "endpoints_v3_access_acl_endpoints_get", "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"additionalProperties": true, "type": "object"}, "type": "array", "title": "Response Endpoints V3 Access Acl Endpoints Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/access/acl": {"get": {"tags": ["ACL"], "summary": "Get Aces", "description": "Get all ACL entries.\n\nRequired privilege: ACE.Audit", "operationId": "get_aces_v3_access_acl_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ACE"}, "type": "array", "title": "Response Get Aces V3 Access Acl Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}, "post": {"tags": ["ACL"], "summary": "Create Ace", "description": "Create a new ACL entry.\n\nRequired privilege: ACE.Allocate", "operationId": "create_ace_v3_access_acl_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ACECreate"}}}, "required": true}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ACE"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/access/acl/{ace_id}": {"get": {"tags": ["ACL"], "summary": "Get Ace", "description": "Get an ACL entry.\n\nRequired privilege: ACE.Audit", "operationId": "get_ace_v3_access_acl__ace_id__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "ace_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Ace Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ACE"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["ACL"], "summary": "Update Ace", "description": "Update an ACL entry.\n\nRequired privilege: ACE.Modify", "operationId": "update_ace_v3_access_acl__ace_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "ace_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Ace Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ACEUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ACE"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["ACL"], "summary": "Delete Ace", "description": "Delete an ACL entry.\n\nRequired privilege: ACE.Allocate", "operationId": "delete_ace_v3_access_acl__ace_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "ace_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Ace Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/images/qemu/{image_path}": {"post": {"tags": ["Images"], "summary": "Create Qemu Image", "description": "Create a new blank Qemu image.\n\nRequired privilege: Image.Allocate", "operationId": "create_qemu_image_v3_images_qemu__image_path__post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "image_path", "in": "path", "required": true, "schema": {"type": "string", "title": "Image Path"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/QemuDiskImageCreate"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Image"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/images": {"get": {"tags": ["Images"], "summary": "Get Images", "description": "Return all images.\n\nRequired privilege: Image.Audit", "operationId": "get_images_v3_images_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "image_type", "in": "query", "required": false, "schema": {"anyOf": [{"$ref": "#/components/schemas/ImageType"}, {"type": "null"}], "title": "Image Type"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Image"}, "title": "Response Get Images V3 Images Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/images/upload/{image_path}": {"post": {"tags": ["Images"], "summary": "Upload Image", "description": "Upload an image.\n\nExample: curl -X POST http://host:port/v3/images/upload/my_image_name.qcow2 -H 'Authorization: Bearer <token>' --data-binary @\"/path/to/image.qcow2\"\n\nRequired privilege: Image.Allocate", "operationId": "upload_image_v3_images_upload__image_path__post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "image_path", "in": "path", "required": true, "schema": {"type": "string", "title": "Image Path"}}, {"name": "install_appliances", "in": "query", "required": false, "schema": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Install Appliances"}}], "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Image"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/images/prune": {"delete": {"tags": ["Images"], "summary": "Prune Images", "description": "Prune images not attached to any template.\n\nRequired privilege: Image.Allocate", "operationId": "prune_images_v3_images_prune_delete", "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/images/install": {"post": {"tags": ["Images"], "summary": "Install Images", "description": "Attempt to automatically create templates based on image checksums.\n\nRequired privilege: Image.Allocate", "operationId": "install_images_v3_images_install_post", "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/images/{image_path}": {"get": {"tags": ["Images"], "summary": "Get Image", "description": "Return an image.\n\nRequired privilege: Image.Audit", "operationId": "get_image_v3_images__image_path__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "image_path", "in": "path", "required": true, "schema": {"type": "string", "title": "Image Path"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Image"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Images"], "summary": "Delete Image", "description": "Delete an image.\n\nRequired privilege: Image.Allocate", "operationId": "delete_image_v3_images__image_path__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "image_path", "in": "path", "required": true, "schema": {"type": "string", "title": "Image Path"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/templates": {"post": {"tags": ["Templates"], "summary": "Create Template", "description": "Create a new template.\n\nRequired privilege: Template.Allocate", "operationId": "create_template_v3_templates_post", "security": [{"OAuth2PasswordBearer": []}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateCreate"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Template"}}}}, "404": {"description": "Could not find template", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "get": {"tags": ["Templates"], "summary": "Get Templates", "description": "Return all templates.\n\nRequired privilege: Template.Audit\n\nQuery Parameters:\n- tags: Filter by tags. Multiple tags are ANDed together.\n Example: ?tags=vendor:cisco&tags=model:7200", "operationId": "get_templates_v3_templates_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "tags", "in": "query", "required": false, "schema": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "null"}], "description": "Filter by tags (e.g. tags=vendor:cisco&tags=model:7200)", "title": "Tags"}, "description": "Filter by tags (e.g. tags=vendor:cisco&tags=model:7200)"}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Template"}, "title": "Response Get Templates V3 Templates Get"}}}}, "404": {"description": "Could not find template", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/templates/{template_id}": {"get": {"tags": ["Templates"], "summary": "Get Template", "description": "Return a template.\n\nRequired privilege: Template.Audit", "operationId": "get_template_v3_templates__template_id__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "template_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Template Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Template"}}}}, "404": {"description": "Could not find template", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Templates"], "summary": "Update Template", "description": "Update a template.\n\nRequired privilege: Template.Modify", "operationId": "update_template_v3_templates__template_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "template_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Template Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Template"}}}}, "404": {"description": "Could not find template", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Templates"], "summary": "Delete Template", "description": "Delete a template.\n\nRequired privilege: Template.Allocate", "operationId": "delete_template_v3_templates__template_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "template_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Template Id"}}, {"name": "prune_images", "in": "query", "required": false, "schema": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Prune Images"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find template", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/templates/{template_id}/duplicate": {"post": {"tags": ["Templates"], "summary": "Duplicate Template", "description": "Duplicate a template.\n\nRequired privilege: Template.Allocate", "operationId": "duplicate_template_v3_templates__template_id__duplicate_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "template_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Template Id"}}], "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Template"}}}}, "404": {"description": "Could not find template", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/templates/{template_id}/base-config/{filename}": {"get": {"tags": ["Templates"], "summary": "Get Base Config", "operationId": "get_base_config_v3_templates__template_id__base_config__filename__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "template_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Template Id"}}, {"name": "filename", "in": "path", "required": true, "schema": {"type": "string", "title": "Filename"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Could not find template", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Templates"], "summary": "Update Base Config", "operationId": "update_base_config_v3_templates__template_id__base_config__filename__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "template_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Template Id"}}, {"name": "filename", "in": "path", "required": true, "schema": {"type": "string", "title": "Filename"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Body"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Could not find template", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/templates/{template_id}/base-configs": {"get": {"tags": ["Templates"], "summary": "List Base Configs", "operationId": "list_base_configs_v3_templates__template_id__base_configs_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "template_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Template Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Could not find template", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects": {"get": {"tags": ["Projects"], "summary": "Get Projects", "description": "Return all projects.\n\nRequired privilege: Project.Audit", "operationId": "get_projects_v3_projects_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/Project"}, "type": "array", "title": "Response Get Projects V3 Projects Get"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}, "post": {"tags": ["Projects"], "summary": "Create Project", "description": "Create a new project.\n\nRequired privilege: Project.Allocate", "operationId": "create_project_v3_projects_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectCreate"}}}, "required": true}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Project"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "409": {"description": "Could not create project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/projects/{project_id}": {"get": {"tags": ["Projects"], "summary": "Get Project", "description": "Return a project.\n\nRequired privilege: Project.Audit", "operationId": "get_project_v3_projects__project_id__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Project"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Projects"], "summary": "Update Project", "description": "Update a project.\n\nRequired privilege: Project.Modify", "operationId": "update_project_v3_projects__project_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Project"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Projects"], "summary": "Delete Project", "description": "Delete a project.\n\nRequired privilege: Project.Allocate", "operationId": "delete_project_v3_projects__project_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/stats": {"get": {"tags": ["Projects"], "summary": "Get Project Stats", "description": "Return a project statistics.\n\nRequired privilege: Project.Audit", "operationId": "get_project_stats_v3_projects__project_id__stats_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Get Project Stats V3 Projects Project Id Stats Get"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/markers": {"get": {"tags": ["Projects"], "summary": "Get Project Markers", "description": "Return all traffic-insight markers across every link in the project.\n\nEach entry is keyed ``\"{link_id}/{marker_name}\"`` and carries the\nmarker's BPF, tag, color, enabled flag, plus its parent ``link_id``\nand capture-side ``node_id`` for frontend filtering / grouping.\n\nRequired privilege: Project.Audit", "operationId": "get_project_markers_v3_projects__project_id__markers_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Get Project Markers V3 Projects Project Id Markers Get"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/marker-definitions": {"get": {"tags": ["Projects"], "summary": "Get Marker Definitions", "description": "Return all project-level marker definitions with their bound link IDs.\n\nRequired privilege: Project.Audit", "operationId": "get_marker_definitions_v3_projects__project_id__marker_definitions_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Get Marker Definitions V3 Projects Project Id Marker Definitions Get"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "post": {"tags": ["Projects"], "summary": "Create Marker Definition", "description": "Create a project-level marker definition and fan out to every link.\n\nRequired privilege: Project.Modify", "operationId": "create_marker_definition_v3_projects__project_id__marker_definitions_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MarkerDefinitionCreate"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Create Marker Definition V3 Projects Project Id Marker Definitions Post"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/marker-definitions/{def_name}": {"put": {"tags": ["Projects"], "summary": "Update Marker Definition", "description": "Update a marker definition and sync all inherited copies on every link.\n\nRequired privilege: Project.Modify", "operationId": "update_marker_definition_v3_projects__project_id__marker_definitions__def_name__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "def_name", "in": "path", "required": true, "schema": {"type": "string", "title": "Def Name"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MarkerDefinitionCreate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Update Marker Definition V3 Projects Project Id Marker Definitions Def Name Put"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Projects"], "summary": "Delete Marker Definition", "description": "Delete a marker definition and remove all inherited copies from every link.\n\nRequired privilege: Project.Modify", "operationId": "delete_marker_definition_v3_projects__project_id__marker_definitions__def_name__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "def_name", "in": "path", "required": true, "schema": {"type": "string", "title": "Def Name"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/marker-definitions/{def_name}/pause": {"post": {"tags": ["Projects"], "summary": "Pause Marker Definition", "description": "Pause a definition: toggle off every inherited ``global-{def_name}`` copy\non every link (uBridge ``enable_packet_filter off``, instant \u2014 no NIO\nrebuild). The definition's ``paused`` flag is persisted, so links created\nlater inherit it already paused.\n\nRequired privilege: Project.Modify", "operationId": "pause_marker_definition_v3_projects__project_id__marker_definitions__def_name__pause_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "def_name", "in": "path", "required": true, "schema": {"type": "string", "title": "Def Name"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/marker-definitions/{def_name}/resume": {"post": {"tags": ["Projects"], "summary": "Resume Marker Definition", "description": "Resume a paused definition (toggle on every inherited copy).\n\nRequired privilege: Project.Modify", "operationId": "resume_marker_definition_v3_projects__project_id__marker_definitions__def_name__resume_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "def_name", "in": "path", "required": true, "schema": {"type": "string", "title": "Def Name"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/close": {"post": {"tags": ["Projects"], "summary": "Close Project", "description": "Close a project.\n\nRequired privilege: Project.Allocate", "operationId": "close_project_v3_projects__project_id__close_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "409": {"description": "Could not close project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/open": {"post": {"tags": ["Projects"], "summary": "Open Project", "description": "Open a project.\n\nRequired privilege: Project.Allocate", "operationId": "open_project_v3_projects__project_id__open_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Project"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "409": {"description": "Could not open project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/load": {"post": {"tags": ["Projects"], "summary": "Load Project", "description": "Load a project (local server only).\n\nRequired privilege: Project.Allocate", "operationId": "load_project_v3_projects_load_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Body_load_project_v3_projects_load_post"}}}, "required": true}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Project"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "409": {"description": "Could not load project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/projects/{project_id}/notifications": {"get": {"tags": ["Projects"], "summary": "Project Http Notifications", "description": "Receive project notifications about the controller from HTTP stream.\n\nRequired privilege: Project.Audit", "operationId": "project_http_notifications_v3_projects__project_id__notifications_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/export": {"get": {"tags": ["Projects"], "summary": "Export Project", "description": "Export a project as a portable archive.\n\nRequired privilege: Project.Audit", "operationId": "export_project_v3_projects__project_id__export_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "include_snapshots", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Include Snapshots"}}, {"name": "include_images", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Include Images"}}, {"name": "reset_mac_addresses", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Reset Mac Addresses"}}, {"name": "keep_compute_ids", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Keep Compute Ids"}}, {"name": "compression", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/ProjectCompression", "default": "zstd"}}, {"name": "compression_level", "in": "query", "required": false, "schema": {"type": "integer", "title": "Compression Level"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/import": {"post": {"tags": ["Projects"], "summary": "Import Project", "description": "Import a project from a portable archive.\n\nRequired privilege: Project.Allocate", "operationId": "import_project_v3_projects__project_id__import_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "name", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}}], "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Project"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/duplicate": {"post": {"tags": ["Projects"], "summary": "Duplicate Project", "description": "Duplicate a project.\n\nRequired privilege: Project.Audit", "operationId": "duplicate_project_v3_projects__project_id__duplicate_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectDuplicate"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Project"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "409": {"description": "Could not duplicate project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/locked": {"get": {"tags": ["Projects"], "summary": "Locked Project", "description": "Returns whether a project is locked or not.\n\nRequired privilege: Project.Audit", "operationId": "locked_project_v3_projects__project_id__locked_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "boolean", "title": "Response Locked Project V3 Projects Project Id Locked Get"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/lock": {"post": {"tags": ["Projects"], "summary": "Lock Project", "description": "Lock all drawings and nodes in a given project.\n\nRequired privilege: Project.Audit", "operationId": "lock_project_v3_projects__project_id__lock_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/unlock": {"post": {"tags": ["Projects"], "summary": "Unlock Project", "description": "Unlock all drawings and nodes in a given project.\n\nRequired privilege: Project.Modify", "operationId": "unlock_project_v3_projects__project_id__unlock_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/files/{file_path}": {"get": {"tags": ["Projects"], "summary": "Get File", "description": "Return a file from a project.\n\nRequired privilege: Project.Audit", "operationId": "get_file_v3_projects__project_id__files__file_path__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "file_path", "in": "path", "required": true, "schema": {"type": "string", "title": "File Path"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "post": {"tags": ["Projects"], "summary": "Write File", "description": "Write a file to a project.\n\nRequired privilege: Project.Modify", "operationId": "write_file_v3_projects__project_id__files__file_path__post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "file_path", "in": "path", "required": true, "schema": {"type": "string", "title": "File Path"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/templates/{template_id}": {"post": {"tags": ["Projects"], "summary": "Create Node From Template", "description": "Create a new node from a template.\n\nRequired privilege: Node.Allocate", "operationId": "create_node_from_template_v3_projects__project_id__templates__template_id__post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "template_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Template Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateUsage"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Node"}}}}, "404": {"description": "Could not find project or template", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes": {"post": {"tags": ["Nodes"], "summary": "Create Node", "description": "Create a new node.\n\nRequired privilege: Node.Allocate", "operationId": "create_node_v3_projects__project_id__nodes_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NodeCreate"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Node"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "409": {"description": "Could not create node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "get": {"tags": ["Nodes"], "summary": "Get Nodes", "description": "Return all nodes belonging to a given project.\n\nRequired privilege: Node.Audit\n\nQuery Parameters:\n- tags: Filter by tags. Multiple tags are ANDed together.\n Example: ?tags=vendor:cisco&tags=model:7200", "operationId": "get_nodes_v3_projects__project_id__nodes_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "tags", "in": "query", "required": false, "schema": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "null"}], "description": "Filter by tags (e.g. tags=vendor:cisco&tags=model:7200)", "title": "Tags"}, "description": "Filter by tags (e.g. tags=vendor:cisco&tags=model:7200)"}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Node"}, "title": "Response Get Nodes V3 Projects Project Id Nodes Get"}}}}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/start": {"post": {"tags": ["Nodes"], "summary": "Start All Nodes", "description": "Start all nodes belonging to a given project.\n\nRequired privilege: Node.PowerMgmt", "operationId": "start_all_nodes_v3_projects__project_id__nodes_start_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/stop": {"post": {"tags": ["Nodes"], "summary": "Stop All Nodes", "description": "Stop all nodes belonging to a given project.\n\nRequired privilege: Node.PowerMgmt", "operationId": "stop_all_nodes_v3_projects__project_id__nodes_stop_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/suspend": {"post": {"tags": ["Nodes"], "summary": "Suspend All Nodes", "description": "Suspend all nodes belonging to a given project.\n\nRequired privilege: Node.PowerMgmt", "operationId": "suspend_all_nodes_v3_projects__project_id__nodes_suspend_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/reload": {"post": {"tags": ["Nodes"], "summary": "Reload All Nodes", "description": "Reload all nodes belonging to a given project.\n\nRequired privilege: Node.PowerMgmt", "operationId": "reload_all_nodes_v3_projects__project_id__nodes_reload_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}": {"get": {"tags": ["Nodes"], "summary": "Get Node", "description": "Return a node from a given project.\n\nRequired privilege: Node.Audit", "operationId": "get_node_v3_projects__project_id__nodes__node_id__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Node"}}}}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Nodes"], "summary": "Update Node", "description": "Update a node.\n\nRequired privilege: Node.Modify", "operationId": "update_node_v3_projects__project_id__nodes__node_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NodeUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Node"}}}}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Nodes"], "summary": "Delete Node", "description": "Delete a node from a project.\n\nRequired privilege: Node.Allocate", "operationId": "delete_node_v3_projects__project_id__nodes__node_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "409": {"description": "Cannot delete node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/duplicate": {"post": {"tags": ["Nodes"], "summary": "Duplicate Node", "description": "Duplicate a node.\n\nRequired privilege: Node.Allocate", "operationId": "duplicate_node_v3_projects__project_id__nodes__node_id__duplicate_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NodeDuplicate"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Node"}}}}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/start": {"post": {"tags": ["Nodes"], "summary": "Start Node", "description": "Start a node.\n\nRequired privilege: Node.PowerMgmt", "operationId": "start_node_v3_projects__project_id__nodes__node_id__start_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"content": {"application/json": {"schema": {"anyOf": [{"type": "object", "additionalProperties": true}, {"type": "null"}], "title": "Start Data"}}}}, "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/stop": {"post": {"tags": ["Nodes"], "summary": "Stop Node", "description": "Stop a node.\n\nRequired privilege: Node.PowerMgmt", "operationId": "stop_node_v3_projects__project_id__nodes__node_id__stop_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/suspend": {"post": {"tags": ["Nodes"], "summary": "Suspend Node", "description": "Suspend a node.\n\nRequired privilege: Node.PowerMgmt", "operationId": "suspend_node_v3_projects__project_id__nodes__node_id__suspend_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/reload": {"post": {"tags": ["Nodes"], "summary": "Reload Node", "description": "Reload a node.\n\nRequired privilege: Node.PowerMgmt", "operationId": "reload_node_v3_projects__project_id__nodes__node_id__reload_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/isolate": {"post": {"tags": ["Nodes"], "summary": "Isolate Node", "description": "Isolate a node (suspend all attached links).\n\nRequired privilege: Link.Modify", "operationId": "isolate_node_v3_projects__project_id__nodes__node_id__isolate_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/unisolate": {"post": {"tags": ["Nodes"], "summary": "Unisolate Node", "description": "Un-isolate a node (resume all attached suspended links).\n\nRequired privilege: Link.Modify", "operationId": "unisolate_node_v3_projects__project_id__nodes__node_id__unisolate_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/links": {"get": {"tags": ["Nodes"], "summary": "Get Node Links", "description": "Return all the links connected to a node.\n\nRequired privilege: Link.Audit", "operationId": "get_node_links_v3_projects__project_id__nodes__node_id__links_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Link"}, "title": "Response Get Node Links V3 Projects Project Id Nodes Node Id Links Get"}}}}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/dynamips/auto_idlepc": {"get": {"tags": ["Nodes"], "summary": "Auto Idlepc", "description": "Compute an Idle-PC value for a Dynamips node\n\nRequired privilege: Node.Audit", "operationId": "auto_idlepc_v3_projects__project_id__nodes__node_id__dynamips_auto_idlepc_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Auto Idlepc V3 Projects Project Id Nodes Node Id Dynamips Auto Idlepc Get"}}}}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/dynamips/idlepc_proposals": {"get": {"tags": ["Nodes"], "summary": "Idlepc Proposals", "description": "Compute a list of potential idle-pc values for a Dynamips node\n\nRequired privilege: Node.Audit", "operationId": "idlepc_proposals_v3_projects__project_id__nodes__node_id__dynamips_idlepc_proposals_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"type": "string"}, "title": "Response Idlepc Proposals V3 Projects Project Id Nodes Node Id Dynamips Idlepc Proposals Get"}}}}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/qemu/disk_image/{disk_name}": {"post": {"tags": ["Nodes"], "summary": "Create Disk Image", "description": "Create a Qemu disk image.\n\nRequired privilege: Node.Allocate", "operationId": "create_disk_image_v3_projects__project_id__nodes__node_id__qemu_disk_image__disk_name__post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "disk_name", "in": "path", "required": true, "schema": {"type": "string", "title": "Disk Name"}}, {"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/QemuDiskImageCreate"}}}}, "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Nodes"], "summary": "Update Disk Image", "description": "Update a Qemu disk image.\n\nRequired privilege: Node.Allocate", "operationId": "update_disk_image_v3_projects__project_id__nodes__node_id__qemu_disk_image__disk_name__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "disk_name", "in": "path", "required": true, "schema": {"type": "string", "title": "Disk Name"}}, {"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/QemuDiskImageUpdate"}}}}, "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Nodes"], "summary": "Delete Disk Image", "description": "Delete a Qemu disk image.\n\nRequired privilege: Node.Allocate", "operationId": "delete_disk_image_v3_projects__project_id__nodes__node_id__qemu_disk_image__disk_name__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "disk_name", "in": "path", "required": true, "schema": {"type": "string", "title": "Disk Name"}}, {"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/files": {"get": {"tags": ["Nodes"], "summary": "List Node Files", "description": "List files in a node directory with detailed metadata.\n\nBy default lists only the current directory level (non-recursive).\nUse recursive=true for a full recursive listing.\n\nRequired privilege: Node.Audit", "operationId": "list_node_files_v3_projects__project_id__nodes__node_id__files_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "path", "in": "query", "required": false, "schema": {"type": "string", "description": "Subdirectory path within node directory", "default": "", "title": "Path"}, "description": "Subdirectory path within node directory"}, {"name": "recursive", "in": "query", "required": false, "schema": {"type": "boolean", "description": "Recursively list all files", "default": false, "title": "Recursive"}, "description": "Recursively list all files"}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/NodeFile"}, "title": "Response List Node Files V3 Projects Project Id Nodes Node Id Files Get"}}}}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/files/{file_path}": {"get": {"tags": ["Nodes"], "summary": "Get File", "description": "Return a file from the node directory.\n\nRequired privilege: Node.Audit", "operationId": "get_file_v3_projects__project_id__nodes__node_id__files__file_path__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "file_path", "in": "path", "required": true, "schema": {"type": "string", "title": "File Path"}}, {"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "post": {"tags": ["Nodes"], "summary": "Post File", "description": "Write a file in the node directory.\n\nRequired privilege: Node.Modify", "operationId": "post_file_v3_projects__project_id__nodes__node_id__files__file_path__post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "file_path", "in": "path", "required": true, "schema": {"type": "string", "title": "File Path"}}, {"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Nodes"], "summary": "Delete Node File", "description": "Delete a file from the node directory.\n\nRequired privilege: Node.Modify", "operationId": "delete_node_file_v3_projects__project_id__nodes__node_id__files__file_path__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "file_path", "in": "path", "required": true, "schema": {"type": "string", "title": "File Path"}}, {"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/console/reset": {"post": {"tags": ["Nodes"], "summary": "Reset Console All Nodes", "description": "Reset console for all nodes belonging to the project.\n\nRequired privilege: Node.Console", "operationId": "reset_console_all_nodes_v3_projects__project_id__nodes_console_reset_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/nodes/{node_id}/console/reset": {"post": {"tags": ["Nodes"], "summary": "Console Reset", "description": "Reset a console for a given node.\n\nRequired privilege: Node.Console", "operationId": "console_reset_v3_projects__project_id__nodes__node_id__console_reset_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "node_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Node Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or node", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/links": {"get": {"tags": ["Links"], "summary": "Get Links", "description": "Return all links for a given project.\n\nRequired privilege: Link.Audit", "operationId": "get_links_v3_projects__project_id__links_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Link"}, "title": "Response Get Links V3 Projects Project Id Links Get"}}}}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "post": {"tags": ["Links"], "summary": "Create Link", "description": "Create a new link.\n\nRequired privilege: Link.Allocate", "operationId": "create_link_v3_projects__project_id__links_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LinkCreate"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Link"}}}}, "404": {"description": "Could not find project", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "409": {"description": "Could not create link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/links/{link_id}/available_filters": {"get": {"tags": ["Links"], "summary": "Get Filters", "description": "Return all filters available for a given link.\n\nRequired privilege: Link.Audit", "operationId": "get_filters_v3_projects__project_id__links__link_id__available_filters_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"type": "object", "additionalProperties": true}, "title": "Response Get Filters V3 Projects Project Id Links Link Id Available Filters Get"}}}}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/links/{link_id}": {"get": {"tags": ["Links"], "summary": "Get Link", "description": "Return a link.\n\nRequired privilege: Link.Audit", "operationId": "get_link_v3_projects__project_id__links__link_id__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Link"}}}}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Links"], "summary": "Update Link", "description": "Update a link.\n\nRequired privilege: Link.Modify", "operationId": "update_link_v3_projects__project_id__links__link_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LinkUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Link"}}}}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Links"], "summary": "Delete Link", "description": "Delete a link.\n\nRequired privilege: Link.Allocate", "operationId": "delete_link_v3_projects__project_id__links__link_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/links/{link_id}/reset": {"post": {"tags": ["Links"], "summary": "Reset Link", "description": "Reset a link.\n\nRequired privilege: Link.Modify", "operationId": "reset_link_v3_projects__project_id__links__link_id__reset_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Link"}}}}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/links/{link_id}/capture/start": {"post": {"tags": ["Links"], "summary": "Start Capture", "description": "Start packet capture on the link.\n\nRequired privilege: Link.Capture", "operationId": "start_capture_v3_projects__project_id__links__link_id__capture_start_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LinkCapture"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Link"}}}}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/links/{link_id}/capture/stop": {"post": {"tags": ["Links"], "summary": "Stop Capture", "description": "Stop packet capture on the link.\n\nRequired privilege: Link.Capture", "operationId": "stop_capture_v3_projects__project_id__links__link_id__capture_stop_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/links/{link_id}/capture/wireshark/restart": {"post": {"tags": ["Links"], "summary": "Restart Wireshark", "description": "Restart Wireshark window without stopping the capture.\n\nThis allows recovery after accidentally closing the Wireshark window.\n\nRequired privilege: Link.Capture", "operationId": "restart_wireshark_v3_projects__project_id__links__link_id__capture_wireshark_restart_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Restart Wireshark V3 Projects Project Id Links Link Id Capture Wireshark Restart Post"}}}}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/links/{link_id}/capture/stream": {"get": {"tags": ["Links"], "summary": "Stream Pcap", "description": "Stream the PCAP capture file from compute.\n\nRequired privilege: Link.Capture", "operationId": "stream_pcap_v3_projects__project_id__links__link_id__capture_stream_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/links/{link_id}/capture/file": {"get": {"tags": ["Links"], "summary": "Download Capture File", "description": "Download the PCAP capture file.\n\nThis endpoint allows downloading the capture file even while capture is active.\nThe file is streamed directly, so partial data may be received if capture is still running.\n\nRequired privilege: Link.Capture", "operationId": "download_capture_file_v3_projects__project_id__links__link_id__capture_file_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "responses": {"200": {"description": "Successful Response"}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/links/{link_id}/markers": {"get": {"tags": ["Links"], "summary": "Get Markers", "description": "Return all traffic-insight markers configured on this link.\n\nRequired privilege: Link.Audit", "operationId": "get_markers_v3_projects__project_id__links__link_id__markers_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Get Markers V3 Projects Project Id Links Link Id Markers Get"}}}}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "post": {"tags": ["Links"], "summary": "Create Marker", "description": "Attach a traffic-insight marker to the link.\nOn BPF match uBridge emits MARK signals and appends packets to a pcap.\n\nRequired privilege: Link.Modify", "operationId": "create_marker_v3_projects__project_id__links__link_id__markers_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MarkerCreate"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Create Marker V3 Projects Project Id Links Link Id Markers Post"}}}}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/links/{link_id}/markers/{marker_name}": {"delete": {"tags": ["Links"], "summary": "Delete Marker", "description": "Remove a traffic-insight marker from the link.\n\nRequired privilege: Link.Modify", "operationId": "delete_marker_v3_projects__project_id__links__link_id__markers__marker_name__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "marker_name", "in": "path", "required": true, "schema": {"type": "string", "title": "Marker Name"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Links"], "summary": "Update Marker", "description": "Update a traffic-insight marker (change BPF, tag, or enabled).\n\nRequired privilege: Link.Modify", "operationId": "update_marker_v3_projects__project_id__links__link_id__markers__marker_name__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "marker_name", "in": "path", "required": true, "schema": {"type": "string", "title": "Marker Name"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MarkerUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Update Marker V3 Projects Project Id Links Link Id Markers Marker Name Put"}}}}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/links/{link_id}/iface": {"get": {"tags": ["Links"], "summary": "Get Iface", "description": "Return iface info for links to Cloud or NAT devices.\n\nRequired privilege: Link.Audit", "operationId": "get_iface_v3_projects__project_id__links__link_id__iface_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "link_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Link Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/UDPPortInfo"}, {"$ref": "#/components/schemas/EthernetPortInfo"}], "title": "Response Get Iface V3 Projects Project Id Links Link Id Iface Get"}}}}, "404": {"description": "Could not find project or link", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/drawings": {"get": {"tags": ["Drawings"], "summary": "Get Drawings", "description": "Return the list of all drawings for a given project.\n\nRequired privilege: Drawing.Audit", "operationId": "get_drawings_v3_projects__project_id__drawings_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Drawing"}, "title": "Response Get Drawings V3 Projects Project Id Drawings Get"}}}}, "404": {"description": "Project or drawing not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "post": {"tags": ["Drawings"], "summary": "Create Drawing", "description": "Create a new drawing.\n\nRequired privilege: Drawing.Allocate", "operationId": "create_drawing_v3_projects__project_id__drawings_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Drawing"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Drawing"}}}}, "404": {"description": "Project or drawing not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/drawings/{drawing_id}": {"get": {"tags": ["Drawings"], "summary": "Get Drawing", "description": "Return a drawing.\n\nRequired privilege: Drawing.Audit", "operationId": "get_drawing_v3_projects__project_id__drawings__drawing_id__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "drawing_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Drawing Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Drawing"}}}}, "404": {"description": "Project or drawing not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Drawings"], "summary": "Update Drawing", "description": "Update a drawing.\n\nRequired privilege: Drawing.Modify", "operationId": "update_drawing_v3_projects__project_id__drawings__drawing_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "drawing_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Drawing Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Drawing"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Drawing"}}}}, "404": {"description": "Project or drawing not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Drawings"], "summary": "Delete Drawing", "description": "Delete a drawing.\n\nRequired privilege: Drawing.Allocate", "operationId": "delete_drawing_v3_projects__project_id__drawings__drawing_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "drawing_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Drawing Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Project or drawing not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/symbols": {"get": {"tags": ["Symbols"], "summary": "Get Symbols", "description": "Return all symbols.\n\nRequired privilege: Symbol.Audit", "operationId": "get_symbols_v3_symbols_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"additionalProperties": true, "type": "object"}, "type": "array", "title": "Response Get Symbols V3 Symbols Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/symbols/{symbol_id}/raw": {"get": {"tags": ["Symbols"], "summary": "Get Symbol", "description": "Download a symbol file.\n\nRequired privilege: Symbol.Audit", "operationId": "get_symbol_v3_symbols__symbol_id__raw_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "symbol_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Symbol Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Could not find symbol", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "post": {"tags": ["Symbols"], "summary": "Upload Symbol", "description": "Upload a symbol file.\n\nRequired privilege: Symbol.Allocate", "operationId": "upload_symbol_v3_symbols__symbol_id__raw_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "symbol_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Symbol Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/symbols/{symbol_id}/dimensions": {"get": {"tags": ["Symbols"], "summary": "Get Symbol Dimensions", "description": "Get a symbol dimensions.\n\nRequired privilege: Symbol.Audit", "operationId": "get_symbol_dimensions_v3_symbols__symbol_id__dimensions_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "symbol_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Symbol Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Get Symbol Dimensions V3 Symbols Symbol Id Dimensions Get"}}}}, "404": {"description": "Could not find symbol", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/symbols/default_symbols": {"get": {"tags": ["Symbols"], "summary": "Get Default Symbols", "description": "Return all default symbols.\n\nRequired privilege: Symbol.Audit", "operationId": "get_default_symbols_v3_symbols_default_symbols_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"additionalProperties": true, "type": "object", "title": "Response Get Default Symbols V3 Symbols Default Symbols Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/symbols/{symbol_id}": {"delete": {"tags": ["Symbols"], "summary": "Delete Symbol", "description": "Delete a custom symbol file.\n\nRequired privilege: Symbol.Allocate", "operationId": "delete_symbol_v3_symbols__symbol_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "symbol_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Symbol Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/snapshots": {"post": {"tags": ["Snapshots"], "summary": "Create Snapshot", "description": "Create a new snapshot of a project.\n\nRequired privilege: Snapshot.Allocate", "operationId": "create_snapshot_v3_projects__project_id__snapshots_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SnapshotCreate"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Snapshot"}}}}, "404": {"description": "Could not find project or snapshot", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "get": {"tags": ["Snapshots"], "summary": "Get Snapshots", "description": "Return all snapshots belonging to a given project.\n\nRequired privilege: Snapshot.Audit", "operationId": "get_snapshots_v3_projects__project_id__snapshots_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Snapshot"}, "title": "Response Get Snapshots V3 Projects Project Id Snapshots Get"}}}}, "404": {"description": "Could not find project or snapshot", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/snapshots/{snapshot_id}": {"delete": {"tags": ["Snapshots"], "summary": "Delete Snapshot", "description": "Delete a snapshot.\n\nRequired privilege: Snapshot.Allocate", "operationId": "delete_snapshot_v3_projects__project_id__snapshots__snapshot_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "snapshot_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Snapshot Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Could not find project or snapshot", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/projects/{project_id}/snapshots/{snapshot_id}/restore": {"post": {"tags": ["Snapshots"], "summary": "Restore Snapshot", "description": "Restore a snapshot.\n\nRequired privilege: Snapshot.Restore", "operationId": "restore_snapshot_v3_projects__project_id__snapshots__snapshot_id__restore_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "snapshot_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Snapshot Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Project"}}}}, "404": {"description": "Could not find project or snapshot", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/computes": {"post": {"tags": ["Computes"], "summary": "Create Compute", "description": "Create a new compute on the controller.\n\nRequired privilege: Compute.Allocate", "operationId": "create_compute_v3_computes_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "connect", "in": "query", "required": false, "schema": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Connect"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ComputeCreate"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Compute"}}}}, "404": {"description": "Could not connect to compute", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "409": {"description": "Could not create compute", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "401": {"description": "Invalid authentication for compute", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "get": {"tags": ["Computes"], "summary": "Get Computes", "description": "Return all computes known by the controller.\n\nRequired privilege: Compute.Audit", "operationId": "get_computes_v3_computes_get", "security": [{"OAuth2PasswordBearer": []}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Compute"}, "title": "Response Get Computes V3 Computes Get"}}}}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/computes/{compute_id}/connect": {"post": {"tags": ["Computes"], "summary": "Connect Compute", "description": "Connect to compute on the controller.\n\nRequired privilege: Compute.Audit", "operationId": "connect_compute_v3_computes__compute_id__connect_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "compute_id", "in": "path", "required": true, "schema": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/computes/{compute_id}": {"get": {"tags": ["Computes"], "summary": "Get Compute", "description": "Return a compute from the controller.\n\nRequired privilege: Compute.Audit", "operationId": "get_compute_v3_computes__compute_id__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "compute_id", "in": "path", "required": true, "schema": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Compute"}}}}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Computes"], "summary": "Update Compute", "description": "Update a compute on the controller.\n\nRequired privilege: Compute.Modify", "operationId": "update_compute_v3_computes__compute_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "compute_id", "in": "path", "required": true, "schema": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ComputeUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Compute"}}}}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Computes"], "summary": "Delete Compute", "description": "Delete a compute from the controller.\n\nRequired privilege: Compute.Allocate", "operationId": "delete_compute_v3_computes__compute_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "compute_id", "in": "path", "required": true, "schema": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/computes/{compute_id}/docker/images": {"get": {"tags": ["Computes"], "summary": "Docker Get Images", "description": "Get Docker images from a compute.", "operationId": "docker_get_images_v3_computes__compute_id__docker_images_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "compute_id", "in": "path", "required": true, "schema": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ComputeDockerImage"}, "title": "Response Docker Get Images V3 Computes Compute Id Docker Images Get"}}}}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/computes/{compute_id}/docker/images/pull": {"post": {"tags": ["Computes"], "summary": "Docker Pull Image", "description": "Pull or update a Docker image on a compute.\n\nRequired privilege: Compute.Modify", "operationId": "docker_pull_image_v3_computes__compute_id__docker_images_pull_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "compute_id", "in": "path", "required": true, "schema": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Body_docker_pull_image_v3_computes__compute_id__docker_images_pull_post"}}}}, "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/computes/{compute_id}/virtualbox/vms": {"get": {"tags": ["Computes"], "summary": "Virtualbox Vms", "description": "Get VirtualBox VMs from a compute.", "operationId": "virtualbox_vms_v3_computes__compute_id__virtualbox_vms_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "compute_id", "in": "path", "required": true, "schema": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ComputeVirtualBoxVM"}, "title": "Response Virtualbox Vms V3 Computes Compute Id Virtualbox Vms Get"}}}}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/computes/{compute_id}/vmware/vms": {"get": {"tags": ["Computes"], "summary": "Vmware Vms", "description": "Get VMware VMs from a compute.", "operationId": "vmware_vms_v3_computes__compute_id__vmware_vms_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "compute_id", "in": "path", "required": true, "schema": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ComputeVMwareVM"}, "title": "Response Vmware Vms V3 Computes Compute Id Vmware Vms Get"}}}}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/computes/{compute_id}/dynamips/auto_idlepc": {"post": {"tags": ["Computes"], "summary": "Dynamips Autoidlepc", "description": "Find a suitable Idle-PC value for a given IOS image. This may take a few minutes.", "operationId": "dynamips_autoidlepc_v3_computes__compute_id__dynamips_auto_idlepc_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "compute_id", "in": "path", "required": true, "schema": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AutoIdlePC"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/computes/{compute_id}/{emulator}/{endpoint_path}": {"get": {"tags": ["Computes"], "summary": "Forward Get", "description": "Forward a GET request to a compute.\nRead the full compute API documentation for available routes.", "operationId": "forward_get_v3_computes__compute_id___emulator___endpoint_path__get", "deprecated": true, "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "compute_id", "in": "path", "required": true, "schema": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}, {"name": "emulator", "in": "path", "required": true, "schema": {"type": "string", "title": "Emulator"}}, {"name": "endpoint_path", "in": "path", "required": true, "schema": {"type": "string", "title": "Endpoint Path"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"title": "Response Forward Get V3 Computes Compute Id Emulator Endpoint Path Get"}}}}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "post": {"tags": ["Computes"], "summary": "Forward Post", "description": "Forward a POST request to a compute.\nRead the full compute API documentation for available routes.", "operationId": "forward_post_v3_computes__compute_id___emulator___endpoint_path__post", "deprecated": true, "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "compute_id", "in": "path", "required": true, "schema": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}, {"name": "emulator", "in": "path", "required": true, "schema": {"type": "string", "title": "Emulator"}}, {"name": "endpoint_path", "in": "path", "required": true, "schema": {"type": "string", "title": "Endpoint Path"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Compute Data"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"title": "Response Forward Post V3 Computes Compute Id Emulator Endpoint Path Post"}}}}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Computes"], "summary": "Forward Put", "description": "Forward a PUT request to a compute.\nRead the full compute API documentation for available routes.", "operationId": "forward_put_v3_computes__compute_id___emulator___endpoint_path__put", "deprecated": true, "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "compute_id", "in": "path", "required": true, "schema": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}, {"name": "emulator", "in": "path", "required": true, "schema": {"type": "string", "title": "Emulator"}}, {"name": "endpoint_path", "in": "path", "required": true, "schema": {"type": "string", "title": "Endpoint Path"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Compute Data"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"title": "Response Forward Put V3 Computes Compute Id Emulator Endpoint Path Put"}}}}, "404": {"description": "Compute not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/appliances": {"get": {"tags": ["Appliances"], "summary": "Get Appliances", "description": "Return all appliances known by the controller.\n\nRequired privilege: Appliance.Audit", "operationId": "get_appliances_v3_appliances_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "update", "in": "query", "required": false, "schema": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Update"}}, {"name": "symbol_theme", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Symbol Theme"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"oneOf": [{"$ref": "#/components/schemas/ApplianceV1_6"}, {"$ref": "#/components/schemas/ApplianceV8"}], "discriminator": {"propertyName": "registry_version", "mapping": {"1": "#/components/schemas/ApplianceV1_6", "2": "#/components/schemas/ApplianceV1_6", "3": "#/components/schemas/ApplianceV1_6", "4": "#/components/schemas/ApplianceV1_6", "5": "#/components/schemas/ApplianceV1_6", "6": "#/components/schemas/ApplianceV1_6", "8": "#/components/schemas/ApplianceV8"}}}, "title": "Response Get Appliances V3 Appliances Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/appliances/{appliance_id}": {"get": {"tags": ["Appliances"], "summary": "Get Appliance", "description": "Get an appliance file.\n\nRequired privilege: Appliance.Audit", "operationId": "get_appliance_v3_appliances__appliance_id__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "appliance_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Appliance Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"oneOf": [{"$ref": "#/components/schemas/ApplianceV1_6"}, {"$ref": "#/components/schemas/ApplianceV8"}], "discriminator": {"propertyName": "registry_version", "mapping": {"1": "#/components/schemas/ApplianceV1_6", "2": "#/components/schemas/ApplianceV1_6", "3": "#/components/schemas/ApplianceV1_6", "4": "#/components/schemas/ApplianceV1_6", "5": "#/components/schemas/ApplianceV1_6", "6": "#/components/schemas/ApplianceV1_6", "8": "#/components/schemas/ApplianceV8"}}, "title": "Response Get Appliance V3 Appliances Appliance Id Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/appliances/{appliance_id}/version": {"post": {"tags": ["Appliances"], "summary": "Add Appliance Version", "description": "Add a version to an appliance.\n\nRequired privilege: Appliance.Allocate", "operationId": "add_appliance_version_v3_appliances__appliance_id__version_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "appliance_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Appliance Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/ApplianceVersion"}, {"$ref": "#/components/schemas/ApplianceVersionV8"}], "title": "Appliance Version"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Add Appliance Version V3 Appliances Appliance Id Version Post"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/appliances/{appliance_id}/install": {"post": {"tags": ["Appliances"], "summary": "Install Appliance", "description": "Install an appliance.\n\nRequired privilege: Appliance.Allocate", "operationId": "install_appliance_v3_appliances__appliance_id__install_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "appliance_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Appliance Id"}}, {"name": "version", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Version"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/netmiko/device_types": {"get": {"tags": ["Netmiko"], "summary": "Get Netmiko Device Types", "description": "Return the device types supported by the Netmiko library installed on this server.\n\nRequired privilege: None (authenticated users only)", "operationId": "get_netmiko_device_types_v3_netmiko_device_types_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetmikoDeviceTypeList"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/pools": {"get": {"tags": ["Resource pools"], "summary": "Get Resource Pools", "description": "Get all resource pools.\n\nRequired privilege: Pool.Audit", "operationId": "get_resource_pools_v3_pools_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ResourcePool"}, "type": "array", "title": "Response Get Resource Pools V3 Pools Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}, "post": {"tags": ["Resource pools"], "summary": "Create Resource Pool", "description": "Create a new resource pool\n\nRequired privilege: Pool.Allocate", "operationId": "create_resource_pool_v3_pools_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourcePoolCreate"}}}, "required": true}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourcePool"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/pools/{resource_pool_id}": {"get": {"tags": ["Resource pools"], "summary": "Get Resource Pool", "description": "Get a resource pool.\n\nRequired privilege: Pool.Audit", "operationId": "get_resource_pool_v3_pools__resource_pool_id__get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "resource_pool_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Resource Pool Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourcePool"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["Resource pools"], "summary": "Update Resource Pool", "description": "Update a resource pool.\n\nRequired privilege: Pool.Modify", "operationId": "update_resource_pool_v3_pools__resource_pool_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "resource_pool_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Resource Pool Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourcePoolUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourcePool"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Resource pools"], "summary": "Delete Resource Pool", "description": "Delete a resource pool.\n\nRequired privilege: Pool.Allocate", "operationId": "delete_resource_pool_v3_pools__resource_pool_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "resource_pool_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Resource Pool Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/pools/{resource_pool_id}/resources": {"get": {"tags": ["Resource pools"], "summary": "Get Pool Resources", "description": "Get all resource in a pool.\n\nRequired privilege: Pool.Audit", "operationId": "get_pool_resources_v3_pools__resource_pool_id__resources_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "resource_pool_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Resource Pool Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Resource"}, "title": "Response Get Pool Resources V3 Pools Resource Pool Id Resources Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/pools/{resource_pool_id}/resources/{resource_id}": {"put": {"tags": ["Resource pools"], "summary": "Add Resource To Pool", "description": "Add resource to a resource pool.\n\nRequired privilege: Pool.Modify", "operationId": "add_resource_to_pool_v3_pools__resource_pool_id__resources__resource_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "resource_pool_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Resource Pool Id"}}, {"name": "resource_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Resource Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["Resource pools"], "summary": "Remove Resource From Pool", "description": "Remove resource from a resource pool.\n\nRequired privilege: Pool.Modify", "operationId": "remove_resource_from_pool_v3_pools__resource_pool_id__resources__resource_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "resource_pool_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Resource Pool Id"}}, {"name": "resource_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Resource Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/gns3vm/engines": {"get": {"tags": ["GNS3 VM"], "summary": "Get Engines", "description": "Return the list of supported engines for the GNS3VM.", "operationId": "get_engines_v3_gns3vm_engines_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"additionalProperties": true, "type": "object"}, "type": "array", "title": "Response Get Engines V3 Gns3Vm Engines Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "deprecated": true, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/gns3vm/engines/{engine}/vms": {"get": {"tags": ["GNS3 VM"], "summary": "Get Vms", "description": "Return all the available VMs for a specific virtualization engine.", "operationId": "get_vms_v3_gns3vm_engines__engine__vms_get", "deprecated": true, "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "engine", "in": "path", "required": true, "schema": {"type": "string", "title": "Engine"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"type": "object", "additionalProperties": true}, "title": "Response Get Vms V3 Gns3Vm Engines Engine Vms Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/gns3vm": {"get": {"tags": ["GNS3 VM"], "summary": "Get Gns3Vm Settings", "description": "Return the GNS3 VM settings.", "operationId": "get_gns3vm_settings_v3_gns3vm_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GNS3VM"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "deprecated": true, "security": [{"OAuth2PasswordBearer": []}]}, "put": {"tags": ["GNS3 VM"], "summary": "Update Gns3Vm Settings", "description": "Update the GNS3 VM settings.", "operationId": "update_gns3vm_settings_v3_gns3vm_put", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GNS3VM"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GNS3VM"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "deprecated": true, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/access/users/{user_id}/llm-model-configs": {"get": {"tags": ["LLM Model Configurations"], "summary": "Get User Llm Model Configs", "description": "Get user's effective LLM model configurations (own + inherited from groups).\n\nRequired privilege: LLMConfig.Audit", "operationId": "get_user_llm_model_configs_v3_access_users__user_id__llm_model_configs_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigInheritedResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "post": {"tags": ["LLM Model Configurations"], "summary": "Create User Llm Model Config", "description": "Create a new LLM model configuration for a user.\n\nRequired privilege: LLMConfig.Modify\n\nIMPORTANT: context_limit is REQUIRED. Unit is K tokens (e.g., 128 = 128K = 128,000 tokens).\nPlease check your model provider's documentation for the current context window size.", "operationId": "create_user_llm_model_config_v3_access_users__user_id__llm_model_configs_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigCreate"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/users/{user_id}/llm-model-configs/own": {"get": {"tags": ["LLM Model Configurations"], "summary": "Get User Own Llm Model Configs", "description": "Get user's own LLM model configurations (excluding inherited ones).\n\nRequired privilege: LLMConfig.Audit", "operationId": "get_user_own_llm_model_configs_v3_access_users__user_id__llm_model_configs_own_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/LLMModelConfigResponse"}, "title": "Response Get User Own Llm Model Configs V3 Access Users User Id Llm Model Configs Own Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/users/{user_id}/llm-model-configs/default": {"get": {"tags": ["LLM Model Configurations"], "summary": "Get User Default Llm Model Config", "description": "Get user's default LLM model configuration.\n\nRequired privilege: LLMConfig.Audit", "operationId": "get_user_default_llm_model_config_v3_access_users__user_id__llm_model_configs_default_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/users/{user_id}/llm-model-configs/{config_id}": {"put": {"tags": ["LLM Model Configurations"], "summary": "Update User Llm Model Config", "description": "Update a user's LLM model configuration.\nSupports optimistic locking via expected_version field.\n\nRequired privilege: LLMConfig.Modify", "operationId": "update_user_llm_model_config_v3_access_users__user_id__llm_model_configs__config_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}, {"name": "config_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Config Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["LLM Model Configurations"], "summary": "Delete User Llm Model Config", "description": "Delete a user's LLM model configuration.\n\nRequired privilege: LLMConfig.Modify", "operationId": "delete_user_llm_model_config_v3_access_users__user_id__llm_model_configs__config_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}, {"name": "config_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Config Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/users/{user_id}/llm-model-configs/default/{config_id}": {"put": {"tags": ["LLM Model Configurations"], "summary": "Set User Default Llm Model Config", "description": "Set a user's default LLM model configuration.\n\nRequired privilege: LLMConfig.Modify", "operationId": "set_user_default_llm_model_config_v3_access_users__user_id__llm_model_configs_default__config_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "user_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "User Id"}}, {"name": "config_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Config Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/groups/{group_id}/llm-model-configs": {"get": {"tags": ["LLM Model Configurations"], "summary": "Get Group Llm Model Configs", "description": "Get all LLM model configurations for a user group.\n\nRequired privilege: Group.Audit", "operationId": "get_group_llm_model_configs_v3_access_groups__group_id__llm_model_configs_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "group_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Group Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigListResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "post": {"tags": ["LLM Model Configurations"], "summary": "Create Group Llm Model Config", "description": "Create a new LLM model configuration for a user group.\n\nRequired privilege: Group.Modify\n\nIMPORTANT: context_limit is REQUIRED. Unit is K tokens (e.g., 128 = 128K = 128,000 tokens).\nPlease check your model provider's documentation for the current context window size.", "operationId": "create_group_llm_model_config_v3_access_groups__group_id__llm_model_configs_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "group_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Group Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigCreate"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/groups/{group_id}/llm-model-configs/default": {"get": {"tags": ["LLM Model Configurations"], "summary": "Get Group Default Llm Model Config", "description": "Get group's default LLM model configuration.\n\nRequired privilege: Group.Audit", "operationId": "get_group_default_llm_model_config_v3_access_groups__group_id__llm_model_configs_default_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "group_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Group Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/groups/{group_id}/llm-model-configs/{config_id}": {"put": {"tags": ["LLM Model Configurations"], "summary": "Update Group Llm Model Config", "description": "Update a group's LLM model configuration.\nSupports optimistic locking via expected_version field.\n\nRequired privilege: Group.Modify", "operationId": "update_group_llm_model_config_v3_access_groups__group_id__llm_model_configs__config_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "group_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Group Id"}}, {"name": "config_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Config Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigUpdate"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["LLM Model Configurations"], "summary": "Delete Group Llm Model Config", "description": "Delete a group's LLM model configuration.\n\nRequired privilege: Group.Modify", "operationId": "delete_group_llm_model_config_v3_access_groups__group_id__llm_model_configs__config_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "group_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Group Id"}}, {"name": "config_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Config Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/groups/{group_id}/llm-model-configs/default/{config_id}": {"put": {"tags": ["LLM Model Configurations"], "summary": "Set Group Default Llm Model Config", "description": "Set a group's default LLM model configuration.\n\nRequired privilege: Group.Modify", "operationId": "set_group_default_llm_model_config_v3_access_groups__group_id__llm_model_configs_default__config_id__put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "group_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Group Id"}}, {"name": "config_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Config Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LLMModelConfigResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/copilot/reload/skills": {"post": {"tags": ["GNS3 Copilot"], "summary": "Reload Skills", "description": "Hot reload skills and prompts from the external GNS3-Skills repository.\n\nReloads injection skills, system prompts, and forbidden commands\nfrom the skills repository without restarting the server.\n\nRequires superadmin privileges.", "operationId": "reload_skills_v3_copilot_reload_skills_post", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"additionalProperties": true, "type": "object", "title": "Response Reload Skills V3 Copilot Reload Skills Post"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/copilot/projects/{project_id}/chat/stream": {"post": {"tags": ["GNS3 Copilot"], "summary": "Stream chat responses from GNS3 Copilot", "description": "Send a message to GNS3 Copilot and stream the response via Server-Sent Events (SSE).", "operationId": "stream_chat_v3_copilot_projects__project_id__chat_stream_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChatRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Resource not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/copilot/projects/{project_id}/chat/sessions": {"get": {"tags": ["GNS3 Copilot"], "summary": "List chat sessions", "description": "List all chat sessions for a project, optionally filtered by copilot_mode.", "operationId": "list_sessions_v3_copilot_projects__project_id__chat_sessions_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "copilot_mode", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Copilot Mode"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ChatSession"}, "title": "Response List Sessions V3 Copilot Projects Project Id Chat Sessions Get"}}}}, "404": {"description": "Resource not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/copilot/projects/{project_id}/chat/sessions/{session_id}/history": {"get": {"tags": ["GNS3 Copilot"], "summary": "Get conversation history", "description": "Retrieve the conversation history for a specific session/thread.", "operationId": "get_history_v3_copilot_projects__project_id__chat_sessions__session_id__history_get", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "session_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Session Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "default": 100, "title": "Limit"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConversationHistory"}}}}, "404": {"description": "Resource not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/copilot/projects/{project_id}/chat/sessions/{session_id}": {"delete": {"tags": ["GNS3 Copilot"], "summary": "Delete a chat session", "description": "Delete a specific chat session and its checkpoints.", "operationId": "delete_session_v3_copilot_projects__project_id__chat_sessions__session_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "session_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Session Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"204": {"description": "Successful Response"}, "404": {"description": "Resource not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "patch": {"tags": ["GNS3 Copilot"], "summary": "Rename a chat session", "description": "Rename a specific chat session.", "operationId": "rename_session_v3_copilot_projects__project_id__chat_sessions__session_id__patch", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "session_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Session Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RenameSession"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChatSession"}}}}, "404": {"description": "Resource not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/copilot/projects/{project_id}/chat/sessions/{session_id}/abort": {"post": {"tags": ["GNS3 Copilot"], "summary": "Abort a streaming session", "description": "Abort an ongoing streaming session for a specific session.", "operationId": "abort_session_v3_copilot_projects__project_id__chat_sessions__session_id__abort_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "session_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Session Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Resource not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/copilot/projects/{project_id}/chat/sessions/{session_id}/pin": {"put": {"tags": ["GNS3 Copilot"], "summary": "Pin a chat session", "description": "Pin a chat session to the top of the list.", "operationId": "pin_session_v3_copilot_projects__project_id__chat_sessions__session_id__pin_put", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "session_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Session Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChatSession"}}}}, "404": {"description": "Resource not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["GNS3 Copilot"], "summary": "Unpin a chat session", "description": "Unpin a chat session from the top of the list.", "operationId": "unpin_session_v3_copilot_projects__project_id__chat_sessions__session_id__pin_delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "session_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Session Id"}}, {"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChatSession"}}}}, "404": {"description": "Resource not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/copilot/projects/{project_id}/chat/inject": {"post": {"tags": ["GNS3 Copilot"], "summary": "Inject a network fault for troubleshooting practice", "description": "Inject a realistic network fault into the GNS3 lab for troubleshooting training.", "operationId": "inject_issue_v3_copilot_projects__project_id__chat_inject_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "project_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Project Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChatRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Resource not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorMessage"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/api-keys": {"get": {"tags": ["API Keys", "API Keys"], "summary": "List Api Keys", "description": "List all API keys for the current user.", "operationId": "list_api_keys_v3_access_api_keys_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"additionalProperties": true, "type": "object"}, "type": "array", "title": "Response List Api Keys V3 Access Api Keys Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}, "post": {"tags": ["API Keys", "API Keys"], "summary": "Create Api Key", "description": "Create a new API key. The full key is returned only once.", "operationId": "create_api_key_v3_access_api_keys_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiKeyCreate"}}}, "required": true}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"additionalProperties": true, "type": "object", "title": "Response Create Api Key V3 Access Api Keys Post"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"OAuth2PasswordBearer": []}]}}, "/v3/access/api-keys/{api_key_id}/revoke": {"post": {"tags": ["API Keys", "API Keys"], "summary": "Revoke Api Key", "description": "Revoke an API key. It will immediately stop working, but can be restored.", "operationId": "revoke_api_key_v3_access_api_keys__api_key_id__revoke_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "api_key_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Api Key Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Revoke Api Key V3 Access Api Keys Api Key Id Revoke Post"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/api-keys/{api_key_id}/restore": {"post": {"tags": ["API Keys", "API Keys"], "summary": "Restore Api Key", "description": "Restore a previously revoked API key.", "operationId": "restore_api_key_v3_access_api_keys__api_key_id__restore_post", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "api_key_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Api Key Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true, "title": "Response Restore Api Key V3 Access Api Keys Api Key Id Restore Post"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/access/api-keys/{api_key_id}": {"delete": {"tags": ["API Keys", "API Keys"], "summary": "Delete Api Key", "description": "Permanently delete an API key. Cannot be undone.", "operationId": "delete_api_key_v3_access_api_keys__api_key_id__delete", "security": [{"OAuth2PasswordBearer": []}], "parameters": [{"name": "api_key_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Api Key Id"}}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/v3/mcp/": {"get": {"tags": ["MCP", "MCP"], "summary": "Mcp Root", "description": "MCP service metadata.", "operationId": "mcp_root_v3_mcp__get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}}, "components": {"schemas": {"ACE": {"properties": {"ace_type": {"$ref": "#/components/schemas/ACEType", "description": "Type of the ACE"}, "path": {"type": "string", "title": "Path"}, "propagate": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Propagate", "default": true}, "allowed": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Allowed", "default": true}, "user_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "User Id"}, "group_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Group Id"}, "role_id": {"type": "string", "format": "uuid", "title": "Role Id"}, "created_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Updated At"}, "ace_id": {"type": "string", "format": "uuid", "title": "Ace Id"}}, "type": "object", "required": ["ace_type", "path", "role_id", "ace_id"], "title": "ACE"}, "ACECreate": {"properties": {"ace_type": {"$ref": "#/components/schemas/ACEType", "description": "Type of the ACE"}, "path": {"type": "string", "title": "Path"}, "propagate": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Propagate", "default": true}, "allowed": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Allowed", "default": true}, "user_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "User Id"}, "group_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Group Id"}, "role_id": {"type": "string", "format": "uuid", "title": "Role Id"}}, "type": "object", "required": ["ace_type", "path", "role_id"], "title": "ACECreate", "description": "Properties to create an ACE."}, "ACEType": {"type": "string", "enum": ["user", "group"], "title": "ACEType"}, "ACEUpdate": {"properties": {"ace_type": {"$ref": "#/components/schemas/ACEType", "description": "Type of the ACE"}, "path": {"type": "string", "title": "Path"}, "propagate": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Propagate", "default": true}, "allowed": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Allowed", "default": true}, "user_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "User Id"}, "group_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Group Id"}, "role_id": {"type": "string", "format": "uuid", "title": "Role Id"}}, "type": "object", "required": ["ace_type", "path", "role_id"], "title": "ACEUpdate", "description": "Properties to update an ACE."}, "ApiKeyCreate": {"properties": {"name": {"type": "string", "title": "Name"}}, "type": "object", "required": ["name"], "title": "ApiKeyCreate", "description": "Schema for creating a new API key."}, "ApplianceImage": {"properties": {"filename": {"type": "string", "title": "Filename"}, "version": {"type": "string", "title": "Version of the file"}, "md5sum": {"anyOf": [{"type": "string", "pattern": "^[a-f0-9]{32}$"}, {"type": "null"}], "title": "md5sum of the file"}, "filesize": {"type": "integer", "title": "File size in bytes"}, "download_url": {"anyOf": [{"type": "string", "minLength": 1, "format": "uri"}, {"type": "string", "maxLength": 0}, {"type": "null"}], "title": "Download url where you can download the appliance from a browser"}, "direct_download_url": {"anyOf": [{"type": "string", "minLength": 1, "format": "uri"}, {"type": "string", "maxLength": 0}, {"type": "null"}], "title": "Optional. Non authenticated url to the image file where you can download the image."}, "compression": {"anyOf": [{"$ref": "#/components/schemas/Compression"}, {"type": "null"}], "title": "Optional, compression type of direct download url image."}, "checksum": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "checksum of the image file"}, "checksum_type": {"anyOf": [{"$ref": "#/components/schemas/ChecksumType"}, {"type": "null"}], "title": "checksum type of the image file"}, "compression_target": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Optional, file name of the image file inside the compressed file."}}, "type": "object", "required": ["filename", "version", "filesize"], "title": "ApplianceImage", "description": "Appliance image definition - compatible with both versions"}, "ApplianceMetadata": {"properties": {"appliance_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Appliance Id", "description": "ID of the appliance the template was installed from"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}, "vendor_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Vendor Name"}, "vendor_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Vendor Url"}, "vendor_logo_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Vendor Logo Url"}, "documentation_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Documentation Url"}, "product_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Product Name"}, "product_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Product Url"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "availability": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Availability"}, "maintainer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Maintainer"}, "maintainer_email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Maintainer Email"}, "installation_instructions": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Installation Instructions"}, "default_username": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default Username"}, "default_password": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default Password"}}, "additionalProperties": true, "type": "object", "title": "ApplianceMetadata", "description": "Metadata kept on a template installed from an appliance: vendor\ninformation, default credentials and other fields that describe\nthe appliance but are not node properties."}, "ApplianceV1_6": {"properties": {"registry_version": {"type": "integer", "enum": [1, 2, 3, 4, 5, 6], "title": "Version of the registry compatible with this appliance"}, "appliance_id": {"type": "string", "format": "uuid", "title": "Appliance ID"}, "name": {"type": "string", "title": "Appliance name"}, "builtin": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Whether the appliance is builtin or not"}, "category": {"$ref": "#/components/schemas/gns3server__schemas__controller__appliances__Category", "title": "Category of the appliance"}, "description": {"type": "string", "title": "Description of the appliance. Could be a marketing description"}, "vendor_name": {"type": "string", "title": "Name of the vendor"}, "vendor_url": {"anyOf": [{"type": "string", "minLength": 1, "format": "uri"}, {"type": "string", "maxLength": 0}, {"type": "null"}], "title": "Website of the vendor"}, "documentation_url": {"anyOf": [{"type": "string", "minLength": 1, "format": "uri"}, {"type": "string", "maxLength": 0}, {"type": "null"}], "title": "An optional documentation for using the appliance on vendor website"}, "product_name": {"type": "string", "title": "Product name"}, "product_url": {"anyOf": [{"type": "string", "minLength": 1, "format": "uri"}, {"type": "string", "maxLength": 0}, {"type": "null"}], "title": "An optional product url on vendor website"}, "status": {"$ref": "#/components/schemas/Status", "title": "Document if the appliance is working or not"}, "availability": {"anyOf": [{"$ref": "#/components/schemas/Availability"}, {"type": "null"}], "title": "About image availability: can be downloaded directly; download requires a free registration; paid but a trial version (time or feature limited) is available; not available publicly"}, "maintainer": {"type": "string", "title": "Maintainer name"}, "maintainer_email": {"anyOf": [{"type": "string", "format": "email"}, {"type": "string", "maxLength": 0}, {"type": "null"}], "title": "Maintainer email"}, "usage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "How to use the appliance"}, "symbol": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "An optional symbol for the appliance"}, "netmiko_device_type": {"anyOf": [{"type": "string", "pattern": "^[a-z0-9_]+$|^$"}, {"type": "null"}], "title": "Device type for Netmiko-based automation tools"}, "first_port_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Optional name of the first networking port example: eth0"}, "port_name_format": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Optional formating of the networking port example: eth{0}"}, "port_segment_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Optional port segment size. A port segment is a block of port. For example Ethernet0/0 Ethernet0/1 is the module 0 with a port segment size of 2"}, "custom_adapters": {"anyOf": [{"items": {"$ref": "#/components/schemas/CustomAdapterItem"}, "type": "array"}, {"type": "null"}], "title": "Optional per-adapter overrides (port name, adapter type, MAC address)"}, "linked_clone": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "False if you don't want to use a single image for all nodes"}, "docker": {"anyOf": [{"$ref": "#/components/schemas/Docker"}, {"type": "null"}], "title": "Docker specific options"}, "iou": {"anyOf": [{"$ref": "#/components/schemas/Iou"}, {"type": "null"}], "title": "IOU specific options"}, "dynamips": {"anyOf": [{"$ref": "#/components/schemas/Dynamips"}, {"type": "null"}], "title": "Dynamips specific options"}, "qemu": {"anyOf": [{"$ref": "#/components/schemas/Qemu"}, {"type": "null"}], "title": "Qemu specific options"}, "tags": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "User-defined metadata tags for the appliance"}, "images": {"anyOf": [{"items": {"$ref": "#/components/schemas/ApplianceImage"}, "type": "array"}, {"type": "null"}], "title": "Images for this appliance"}, "versions": {"anyOf": [{"items": {"$ref": "#/components/schemas/ApplianceVersion"}, "type": "array"}, {"type": "null"}], "title": "Versions of the appliance"}}, "type": "object", "required": ["registry_version", "appliance_id", "name", "category", "description", "vendor_name", "product_name", "status", "maintainer"], "title": "ApplianceV1_6", "description": "GNS3 Appliance model for registry versions 1-6"}, "ApplianceV8": {"properties": {"registry_version": {"type": "integer", "const": 8, "title": "Version of the registry compatible with this appliance (version >=8 introduced breaking changes)"}, "appliance_id": {"type": "string", "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", "title": "Appliance ID"}, "name": {"type": "string", "title": "Appliance name"}, "builtin": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Whether the appliance is builtin or not"}, "category": {"$ref": "#/components/schemas/gns3server__schemas__controller__appliances__Category", "title": "Category of the appliance"}, "description": {"type": "string", "title": "Description of the appliance. Could be a marketing description"}, "vendor_name": {"type": "string", "title": "Name of the vendor"}, "vendor_url": {"type": "string", "minLength": 1, "format": "uri", "title": "Website of the vendor"}, "vendor_logo_url": {"anyOf": [{"type": "string", "minLength": 1, "format": "uri"}, {"type": "null"}], "title": "Link to the vendor logo (used by the GNS3 marketplace)"}, "documentation_url": {"anyOf": [{"type": "string", "minLength": 1, "format": "uri"}, {"type": "null"}], "title": "An optional documentation for using the appliance on vendor website"}, "product_name": {"type": "string", "title": "Product name"}, "product_url": {"anyOf": [{"type": "string", "minLength": 1, "format": "uri"}, {"type": "null"}], "title": "An optional product url on vendor website"}, "status": {"$ref": "#/components/schemas/Status", "title": "Document if the appliance is working or not"}, "availability": {"anyOf": [{"$ref": "#/components/schemas/Availability"}, {"type": "null"}], "title": "About image availability: can be downloaded directly; download requires a free registration; paid but a trial version (time or feature limited) is available; not available publicly"}, "maintainer": {"type": "string", "title": "Maintainer name"}, "maintainer_email": {"type": "string", "format": "email", "title": "Maintainer email"}, "installation_instructions": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Optional installation instructions"}, "usage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "How to use the appliance"}, "default_username": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default username for the appliance"}, "default_password": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default password for the appliance"}, "symbol": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "An optional symbol for the appliance"}, "netmiko_device_type": {"anyOf": [{"type": "string", "pattern": "^[a-z0-9_]+$|^$"}, {"type": "null"}], "title": "Device type for Netmiko-based automation tools"}, "tags": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "User-defined metadata tags for the appliance"}, "settings": {"items": {"$ref": "#/components/schemas/TemplateSetting"}, "type": "array", "title": "Settings for running the appliance"}, "images": {"anyOf": [{"items": {"$ref": "#/components/schemas/ApplianceImage"}, "type": "array"}, {"type": "null"}], "title": "Images for this appliance"}, "versions": {"anyOf": [{"items": {"$ref": "#/components/schemas/ApplianceVersionV8"}, "type": "array"}, {"type": "null"}], "title": "Versions of the appliance"}}, "type": "object", "required": ["registry_version", "appliance_id", "name", "category", "description", "vendor_name", "vendor_url", "product_name", "status", "maintainer", "maintainer_email", "settings"], "title": "ApplianceV8", "description": "GNS3 Appliance model for registry version 8"}, "ApplianceVersion": {"properties": {"name": {"type": "string", "title": "Name of the version"}, "idlepc": {"anyOf": [{"type": "string", "pattern": "^0x[0-9a-f]{8}"}, {"type": "null"}], "title": "Idlepc"}, "images": {"anyOf": [{"$ref": "#/components/schemas/ApplianceVersionImages"}, {"type": "null"}], "title": "Images used for this version"}}, "type": "object", "required": ["name"], "title": "ApplianceVersion", "description": "Appliance version definition for v1-6"}, "ApplianceVersionImages": {"properties": {"kernel_image": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Kernel image"}, "initrd": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initrd disk image"}, "image": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "OS image"}, "bios_image": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Bios image"}, "hda_disk_image": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Hda disk image"}, "hdb_disk_image": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Hdc disk image"}, "hdc_disk_image": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Hdd disk image"}, "hdd_disk_image": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Hdd diskimage"}, "cdrom_image": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "cdrom image"}}, "type": "object", "title": "ApplianceVersionImages", "description": "Appliance version images configuration for v1-6"}, "ApplianceVersionV8": {"properties": {"name": {"type": "string", "title": "Name of the version"}, "settings": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Template settings to use to run the version"}, "idlepc": {"anyOf": [{"type": "string", "pattern": "^0x[0-9a-f]{8}"}, {"type": "null"}], "title": "Idlepc"}, "category": {"anyOf": [{"$ref": "#/components/schemas/gns3server__schemas__controller__appliances__Category"}, {"type": "null"}], "title": "Category of the version"}, "installation_instructions": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Optional installation instructions for the version"}, "usage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Optional instructions about using the version"}, "default_username": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default username for the version"}, "default_password": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default password for the version"}, "symbol": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "An optional symbol for the version"}, "images": {"anyOf": [{"$ref": "#/components/schemas/ApplianceVersionImages"}, {"type": "null"}], "title": "Images used for this version"}}, "type": "object", "required": ["name"], "title": "ApplianceVersionV8", "description": "Appliance version definition (v8)"}, "AutoIdlePC": {"properties": {"platform": {"type": "string", "title": "Platform", "description": "Cisco platform"}, "image": {"type": "string", "title": "Image", "description": "Image path"}, "ram": {"type": "integer", "title": "Ram", "description": "Amount of RAM in MB"}}, "type": "object", "required": ["platform", "image", "ram"], "title": "AutoIdlePC", "description": "Data for auto Idle-PC request.", "example": {"image": "/path/to/c7200_image.bin", "platform": "c7200", "ram": 256}}, "Availability": {"type": "string", "enum": ["free", "with-registration", "free-to-try", "service-contract"], "title": "Availability", "description": "Image availability enum"}, "Body_docker_pull_image_v3_computes__compute_id__docker_images_pull_post": {"properties": {"image": {"type": "string", "minLength": 1, "pattern": "^\\S+$", "title": "Image"}}, "type": "object", "required": ["image"], "title": "Body_docker_pull_image_v3_computes__compute_id__docker_images_pull_post"}, "Body_load_project_v3_projects_load_post": {"properties": {"path": {"type": "string", "title": "Path"}}, "type": "object", "required": ["path"], "title": "Body_load_project_v3_projects_load_post"}, "Body_login_v3_access_users_login_post": {"properties": {"grant_type": {"anyOf": [{"type": "string", "pattern": "^password$"}, {"type": "null"}], "title": "Grant Type"}, "username": {"type": "string", "title": "Username"}, "password": {"type": "string", "format": "password", "title": "Password"}, "scope": {"type": "string", "title": "Scope", "default": ""}, "client_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Client Id"}, "client_secret": {"anyOf": [{"type": "string"}, {"type": "null"}], "format": "password", "title": "Client Secret"}}, "type": "object", "required": ["username", "password"], "title": "Body_login_v3_access_users_login_post"}, "Capabilities": {"properties": {"version": {"type": "string", "title": "Version", "description": "Compute version number"}, "node_types": {"items": {"$ref": "#/components/schemas/NodeType"}, "type": "array", "title": "Node Types", "description": "Node types supported by the compute"}, "platform": {"type": "string", "title": "Platform", "description": "Platform where the compute is running (Linux, Windows or macOS)"}, "cpus": {"type": "integer", "title": "Cpus", "description": "Number of CPUs on this compute"}, "memory": {"type": "integer", "title": "Memory", "description": "Amount of memory on this compute"}, "disk_size": {"type": "integer", "title": "Disk Size", "description": "Disk size on this compute"}}, "type": "object", "required": ["version", "node_types", "platform", "cpus", "memory", "disk_size"], "title": "Capabilities", "description": "Capabilities supported by a compute."}, "ChatRequest": {"properties": {"message": {"type": "string", "title": "Message", "description": "User message content"}, "session_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Session Id", "description": "Session ID (auto-generated if not provided)"}, "stream": {"type": "boolean", "title": "Stream", "description": "Enable streaming response", "default": true}, "temperature": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Temperature", "description": "LLM temperature parameter (NOTE: currently not used. Temperature is loaded from user's LLM config in database. Reserved for future runtime override support.)"}, "mode": {"type": "string", "const": "text", "title": "Mode", "description": "Interaction mode", "default": "text"}}, "type": "object", "required": ["message"], "title": "ChatRequest", "description": "Chat request model."}, "ChatSession": {"properties": {"id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Id", "description": "Database ID"}, "thread_id": {"type": "string", "title": "Thread Id", "description": "Thread/session ID"}, "user_id": {"type": "string", "title": "User Id", "description": "User ID"}, "project_id": {"type": "string", "title": "Project Id", "description": "Associated GNS3 project ID"}, "title": {"type": "string", "title": "Title", "description": "Session title"}, "message_count": {"type": "integer", "title": "Message Count", "description": "Number of messages", "default": 0}, "llm_calls_count": {"type": "integer", "title": "Llm Calls Count", "description": "Number of LLM calls", "default": 0}, "input_tokens": {"type": "integer", "title": "Input Tokens", "description": "Input tokens used", "default": 0}, "output_tokens": {"type": "integer", "title": "Output Tokens", "description": "Output tokens generated", "default": 0}, "total_tokens": {"type": "integer", "title": "Total Tokens", "description": "Total tokens used", "default": 0}, "last_message_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Message At", "description": "Last message timestamp (ISO 8601)"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At", "description": "Creation timestamp (ISO 8601)"}, "updated_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Updated At", "description": "Last update timestamp (ISO 8601)"}, "metadata": {"additionalProperties": true, "type": "object", "title": "Metadata", "description": "Session metadata"}, "stats": {"additionalProperties": true, "type": "object", "title": "Stats", "description": "Session statistics"}, "pinned": {"type": "boolean", "title": "Pinned", "description": "Whether the session is pinned to the top", "default": false}}, "type": "object", "required": ["thread_id", "user_id", "project_id", "title"], "title": "ChatSession", "description": "Chat session model."}, "ChecksumType": {"type": "string", "enum": ["md5"], "title": "ChecksumType", "description": "Checksum type enum"}, "Compression": {"type": "string", "enum": ["bzip2", "gzip", "lzma", "xz", "rar", "zip", "7z"], "title": "Compression", "description": "Compression type enum"}, "Compute": {"properties": {"protocol": {"$ref": "#/components/schemas/Protocol"}, "host": {"type": "string", "title": "Host"}, "port": {"type": "integer", "maximum": 65535.0, "exclusiveMinimum": 0.0, "title": "Port"}, "user": {"type": "string", "title": "User"}, "password": {"anyOf": [{"type": "string", "format": "password", "writeOnly": true}, {"type": "null"}], "title": "Password"}, "name": {"type": "string", "title": "Name"}, "created_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Updated At"}, "compute_id": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}, "connected": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Connected", "description": "Whether the controller is connected to the compute or not"}, "cpu_usage_percent": {"anyOf": [{"type": "number", "maximum": 100.0, "minimum": 0.0}, {"type": "null"}], "title": "Cpu Usage Percent", "description": "CPU usage of the compute"}, "memory_usage_percent": {"anyOf": [{"type": "number", "maximum": 100.0, "minimum": 0.0}, {"type": "null"}], "title": "Memory Usage Percent", "description": "Memory usage of the compute"}, "disk_usage_percent": {"anyOf": [{"type": "number", "maximum": 100.0, "minimum": 0.0}, {"type": "null"}], "title": "Disk Usage Percent", "description": "Disk usage of the compute"}, "last_error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Error", "description": "Last error found on the compute"}, "capabilities": {"anyOf": [{"$ref": "#/components/schemas/Capabilities"}, {"type": "null"}]}}, "type": "object", "required": ["protocol", "host", "port", "name", "compute_id"], "title": "Compute", "description": "Data returned for a compute."}, "ComputeCreate": {"properties": {"protocol": {"$ref": "#/components/schemas/Protocol"}, "host": {"type": "string", "title": "Host"}, "port": {"type": "integer", "maximum": 65535.0, "exclusiveMinimum": 0.0, "title": "Port"}, "user": {"type": "string", "title": "User"}, "password": {"anyOf": [{"type": "string", "format": "password", "writeOnly": true}, {"type": "null"}], "title": "Password"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "compute_id": {"anyOf": [{"type": "string"}, {"type": "string", "format": "uuid"}], "title": "Compute Id"}}, "type": "object", "required": ["protocol", "host", "port"], "title": "ComputeCreate", "description": "Data to create a compute.", "example": {"host": "127.0.0.1", "name": "My compute", "password": "password", "port": 3080, "user": "user"}}, "ComputeDockerImage": {"properties": {"image": {"type": "string", "title": "Image", "description": "Docker image name"}}, "type": "object", "required": ["image"], "title": "ComputeDockerImage", "description": "Docker image from compute."}, "ComputeUpdate": {"properties": {"protocol": {"anyOf": [{"$ref": "#/components/schemas/Protocol"}, {"type": "null"}]}, "host": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Host"}, "port": {"anyOf": [{"type": "integer", "maximum": 65535.0, "exclusiveMinimum": 0.0}, {"type": "null"}], "title": "Port"}, "user": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "User"}, "password": {"anyOf": [{"type": "string", "format": "password", "writeOnly": true}, {"type": "null"}], "title": "Password"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}}, "type": "object", "title": "ComputeUpdate", "description": "Data to update a compute.", "example": {"host": "10.0.0.1", "port": 8080}}, "ComputeVMwareVM": {"properties": {"vmname": {"type": "string", "title": "Vmname", "description": "VMware VM name"}, "vmx_path": {"type": "string", "title": "Vmx Path", "description": "Path to the vmx file"}}, "type": "object", "required": ["vmname", "vmx_path"], "title": "ComputeVMwareVM", "description": "VMware VM from compute."}, "ComputeVirtualBoxVM": {"properties": {"vmname": {"type": "string", "title": "Vmname", "description": "VirtualBox VM name"}, "ram": {"type": "integer", "title": "Ram", "description": "VirtualBox VM memory"}}, "type": "object", "required": ["vmname", "ram"], "title": "ComputeVirtualBoxVM", "description": "VirtualBox VM from compute."}, "ConsoleType": {"type": "string", "enum": ["vnc", "telnet", "ssh", "http", "https", "spice", "spice+agent", "none", "docker_exec"], "title": "ConsoleType", "description": "Supported console types."}, "ConversationHistory": {"properties": {"thread_id": {"type": "string", "title": "Thread Id", "description": "Thread/session ID"}, "title": {"type": "string", "title": "Title", "description": "Conversation title"}, "messages": {"items": {"$ref": "#/components/schemas/OpenAIMessage"}, "type": "array", "title": "Messages", "description": "Conversation messages"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At", "description": "Creation timestamp (ISO 8601)"}, "updated_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Updated At", "description": "Last update timestamp (ISO 8601)"}, "llm_calls": {"type": "integer", "title": "Llm Calls", "description": "Total LLM calls in this conversation", "default": 0}}, "type": "object", "required": ["thread_id", "title"], "title": "ConversationHistory", "description": "Conversation history model."}, "Credentials": {"properties": {"username": {"type": "string", "title": "Username"}, "password": {"type": "string", "title": "Password"}}, "type": "object", "required": ["username", "password"], "title": "Credentials"}, "CustomAdapter": {"properties": {"adapter_number": {"type": "integer", "title": "Adapter Number"}, "port_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Port Name"}, "adapter_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Adapter Type"}, "mac_address": {"anyOf": [{"type": "string", "pattern": "^([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})$"}, {"type": "null"}], "title": "Mac Address"}}, "type": "object", "required": ["adapter_number"], "title": "CustomAdapter", "description": "Custom adapter data."}, "CustomAdapterItem": {"properties": {"adapter_number": {"type": "integer", "title": "Adapter number"}, "port_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Custom port name"}, "adapter_type": {"anyOf": [{"$ref": "#/components/schemas/QemuAdapterType"}, {"type": "null"}], "title": "Custom adapter type"}, "mac_address": {"anyOf": [{"type": "string", "pattern": "^([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})$"}, {"type": "null"}], "title": "Custom MAC address"}}, "type": "object", "required": ["adapter_number"], "title": "CustomAdapterItem", "description": "Custom adapter configuration (v8)"}, "Docker": {"properties": {"adapters": {"type": "integer", "title": "Number of Ethernet adapters"}, "image": {"type": "string", "title": "Docker image in the Docker Hub"}, "start_command": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Command executed when the container start. Empty will use the default"}, "environment": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "One KEY=VAR environment by line"}, "console_type": {"anyOf": [{"$ref": "#/components/schemas/DockerConsoleType"}, {"type": "null"}], "title": "Type of console connection for the administration of the appliance"}, "console_http_port": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Console Http Port", "description": "Internal port in the container of the HTTP server"}, "console_http_path": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Console Http Path", "description": "Path of the web interface"}, "extra_hosts": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Extra Hosts", "description": "Hosts which will be written to /etc/hosts into container"}, "extra_volumes": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Extra Volumes", "description": "Additional directories to make persistent that are not included in the images VOLUME directive"}, "extra_configs": {"anyOf": [{"items": {"$ref": "#/components/schemas/ExtraConfig"}, "type": "array"}, {"type": "null"}], "title": "Extra Configs", "description": "Configuration files injected into the container (bind-mounted read-only)"}}, "type": "object", "required": ["adapters", "image"], "title": "Docker", "description": "Docker configuration for v1-6"}, "DockerConsoleType": {"type": "string", "enum": ["telnet", "ssh", "vnc", "http", "https", "none", "docker_exec"], "title": "DockerConsoleType", "description": "Docker console type enum"}, "DockerPropertiesV8": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name of the template"}, "category": {"anyOf": [{"$ref": "#/components/schemas/gns3server__schemas__controller__appliances__Category"}, {"type": "null"}], "title": "Category of the template"}, "default_name_format": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default name format"}, "usage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "How to use the template"}, "symbol": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Symbol of the template"}, "image": {"type": "string", "title": "Docker image"}, "adapters": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Number of ethernet adapters"}, "start_command": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Command executed when the container start. Empty will use the default"}, "environment": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "One KEY=VAR environment by line"}, "console_type": {"anyOf": [{"$ref": "#/components/schemas/DockerConsoleType"}, {"type": "null"}], "title": "Type of console"}, "console_http_port": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Internal port in the container of the HTTP server"}, "console_http_path": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Path of the web interface"}, "console_resolution": {"anyOf": [{"type": "string", "pattern": "^[0-9]+x[0-9]+$"}, {"type": "null"}], "title": "Console resolution for VNC, for example 1024x768"}, "extra_hosts": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Docker extra hosts (added to /etc/hosts)"}, "extra_volumes": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Additional directories to make persistent"}, "custom_adapters": {"anyOf": [{"items": {"$ref": "#/components/schemas/CustomAdapterItem"}, "type": "array"}, {"type": "null"}], "title": "Custom adapters"}, "extra_configs": {"anyOf": [{"items": {"$ref": "#/components/schemas/ExtraConfig"}, "type": "array"}, {"type": "null"}], "title": "Configuration files injected into the container (bind-mounted read-only)"}}, "type": "object", "required": ["image"], "title": "DockerPropertiesV8", "description": "Docker template properties (v8)"}, "Drawing": {"properties": {"drawing_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Drawing Id"}, "project_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Project Id"}, "x": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "X"}, "y": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Y"}, "z": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Z"}, "locked": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Locked"}, "rotation": {"anyOf": [{"type": "integer", "maximum": 360.0, "minimum": -359.0}, {"type": "null"}], "title": "Rotation"}, "svg": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Svg"}}, "type": "object", "title": "Drawing", "description": "Drawing data."}, "Dynamips": {"properties": {"chassis": {"anyOf": [{"$ref": "#/components/schemas/DynamipsChassis"}, {"type": "null"}], "title": "Chassis type"}, "platform": {"$ref": "#/components/schemas/DynamipsPlatform", "title": "Platform type"}, "ram": {"type": "integer", "minimum": 1.0, "title": "Amount of ram"}, "nvram": {"type": "integer", "minimum": 1.0, "title": "Amount of nvram"}, "startup_config": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Config loaded at startup"}, "wic0": {"anyOf": [{"$ref": "#/components/schemas/DynamipsWic"}, {"type": "null"}]}, "wic1": {"anyOf": [{"$ref": "#/components/schemas/DynamipsWic"}, {"type": "null"}]}, "wic2": {"anyOf": [{"$ref": "#/components/schemas/DynamipsWic"}, {"type": "null"}]}, "slot0": {"anyOf": [{"$ref": "#/components/schemas/DynamipsSlot"}, {"type": "null"}]}, "slot1": {"anyOf": [{"$ref": "#/components/schemas/DynamipsSlot"}, {"type": "null"}]}, "slot2": {"anyOf": [{"$ref": "#/components/schemas/DynamipsSlot"}, {"type": "null"}]}, "slot3": {"anyOf": [{"$ref": "#/components/schemas/DynamipsSlot"}, {"type": "null"}]}, "slot4": {"anyOf": [{"$ref": "#/components/schemas/DynamipsSlot"}, {"type": "null"}]}, "slot5": {"anyOf": [{"$ref": "#/components/schemas/DynamipsSlot"}, {"type": "null"}]}, "slot6": {"anyOf": [{"$ref": "#/components/schemas/DynamipsSlot"}, {"type": "null"}]}, "midplane": {"anyOf": [{"$ref": "#/components/schemas/DynamipsMidplane"}, {"type": "null"}]}, "npe": {"anyOf": [{"$ref": "#/components/schemas/DynamipsNpe"}, {"type": "null"}]}}, "type": "object", "required": ["platform", "ram", "nvram"], "title": "Dynamips", "description": "Dynamips configuration for v1-6"}, "DynamipsChassis": {"type": "string", "enum": ["1720", "1721", "1750", "1751", "1760", "2610", "2620", "2610XM", "2620XM", "2650XM", "2621", "2611XM", "2621XM", "2651XM", "3620", "3640", "3660", ""], "title": "DynamipsChassis", "description": "Dynamips chassis enum"}, "DynamipsMidplane": {"type": "string", "enum": ["std", "vxr"], "title": "DynamipsMidplane", "description": "Dynamips midplane enum"}, "DynamipsNpe": {"type": "string", "enum": ["npe-100", "npe-150", "npe-175", "npe-200", "npe-225", "npe-300", "npe-400", "npe-g2"], "title": "DynamipsNpe", "description": "Dynamips NPE enum"}, "DynamipsPlatform": {"type": "string", "enum": ["c1700", "c2600", "c2691", "c3725", "c3745", "c3600", "c7200"], "title": "DynamipsPlatform", "description": "Dynamips platform enum"}, "DynamipsPropertiesV8": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name of the template"}, "category": {"anyOf": [{"$ref": "#/components/schemas/gns3server__schemas__controller__appliances__Category"}, {"type": "null"}], "title": "Category of the template"}, "default_name_format": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default name format"}, "usage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "How to use the template"}, "symbol": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Symbol of the template"}, "chassis": {"anyOf": [{"$ref": "#/components/schemas/DynamipsChassis"}, {"type": "null"}], "title": "Chassis type"}, "platform": {"anyOf": [{"$ref": "#/components/schemas/DynamipsPlatform"}, {"type": "null"}], "title": "Platform type"}, "ram": {"anyOf": [{"type": "integer", "minimum": 1.0}, {"type": "null"}], "title": "Amount of ram"}, "nvram": {"anyOf": [{"type": "integer", "minimum": 1.0}, {"type": "null"}], "title": "Amount of nvram"}, "idlepc": {"anyOf": [{"type": "string", "pattern": "^0x[0-9a-f]{8}"}, {"type": "null"}], "title": "Idlepc"}, "startup_config": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Config loaded at startup"}, "wic0": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Wic0"}, "wic1": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Wic1"}, "wic2": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Wic2"}, "slot0": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Slot0"}, "slot1": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Slot1"}, "slot2": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Slot2"}, "slot3": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Slot3"}, "slot4": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Slot4"}, "slot5": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Slot5"}, "slot6": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Slot6"}, "midplane": {"anyOf": [{"$ref": "#/components/schemas/DynamipsMidplane"}, {"type": "null"}]}, "npe": {"anyOf": [{"$ref": "#/components/schemas/DynamipsNpe"}, {"type": "null"}]}}, "type": "object", "title": "DynamipsPropertiesV8", "description": "Dynamips template properties (v8)"}, "DynamipsSlot": {"type": "string", "enum": ["C7200-IO-2FE", "C7200-IO-FE", "C7200-IO-GE-E", "NM-16ESW", "NM-1E", "NM-1FE-TX", "NM-4E", "NM-4T", "PA-2FE-TX", "PA-4E", "PA-4T+", "PA-8E", "PA-8T", "PA-A1", "PA-FE-TX", "PA-GE", "PA-POS-OC3", "C2600-MB-2FE", "C2600-MB-1E", "C1700-MB-1FE", "C2600-MB-2E", "C2600-MB-1FE", "C1700-MB-WIC1", "GT96100-FE", "Leopard-2FE", ""], "title": "DynamipsSlot", "description": "Dynamips slot enum"}, "DynamipsWic": {"type": "string", "enum": ["WIC-1ENET", "WIC-1T", "WIC-2T", ""], "title": "DynamipsWic", "description": "Dynamips WIC enum"}, "Engine": {"type": "string", "enum": ["vmware", "virtualbox", "hyper-v", "none"], "title": "Engine", "description": "\"The engine to use for the GNS3 VM."}, "ErrorMessage": {"properties": {"message": {"type": "string", "title": "Message"}}, "type": "object", "required": ["message"], "title": "ErrorMessage", "description": "Error message."}, "EthernetPortInfo": {"properties": {"node_id": {"type": "string", "format": "uuid", "title": "Node Id"}, "interface": {"type": "string", "title": "Interface"}, "type": {"type": "string", "title": "Type"}}, "type": "object", "required": ["node_id", "interface", "type"], "title": "EthernetPortInfo", "description": "Ethernet port information."}, "ExtraConfig": {"properties": {"target": {"type": "string", "title": "Target", "description": "Absolute path inside the container where the file is mounted"}, "content": {"type": "string", "title": "Content", "description": "File content written by GNS3 and bind-mounted read-only into the container", "default": ""}}, "type": "object", "required": ["target"], "title": "ExtraConfig", "description": "A configuration file injected into a Docker container.\n\nGNS3 writes ``content`` to a host file and bind-mounts it read-only at\n``target`` inside the container. Used to seed NOS startup configs (e.g.\nXRd first-boot config, FRR frr.conf) without rebuilding the image."}, "GNS3VM": {"properties": {"enable": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Enable", "description": "Enable/disable the GNS3 VM"}, "vmname": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Vmname", "description": "GNS3 VM name"}, "when_exit": {"anyOf": [{"$ref": "#/components/schemas/WhenExit"}, {"type": "null"}], "description": "Action when the GNS3 VM exits"}, "headless": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Headless", "description": "Start the GNS3 VM GUI or not"}, "engine": {"anyOf": [{"$ref": "#/components/schemas/Engine"}, {"type": "null"}], "description": "The engine to use for the GNS3 VM"}, "allocate_vcpus_ram": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Allocate Vcpus Ram", "description": "Allocate vCPUS and RAM settings"}, "vcpus": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Vcpus", "description": "Number of CPUs to allocate for the GNS3 VM"}, "ram": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Ram", "description": "Amount of memory to allocate for the GNS3 VM"}, "port": {"anyOf": [{"type": "integer", "maximum": 65535.0, "exclusiveMinimum": 0.0}, {"type": "null"}], "title": "Port"}}, "type": "object", "title": "GNS3VM", "description": "GNS3 VM data."}, "HTTPValidationError": {"properties": {"detail": {"items": {"$ref": "#/components/schemas/ValidationError"}, "type": "array", "title": "Detail"}}, "type": "object", "title": "HTTPValidationError"}, "IOULicense": {"properties": {"iourc_content": {"type": "string", "title": "Iourc Content", "description": "Content of iourc file"}, "license_check": {"type": "boolean", "title": "License Check", "description": "Whether the license must be checked or not"}}, "type": "object", "required": ["iourc_content", "license_check"], "title": "IOULicense"}, "Image": {"properties": {"filename": {"type": "string", "title": "Filename", "description": "Image filename"}, "path": {"type": "string", "title": "Path", "description": "Image path"}, "image_type": {"$ref": "#/components/schemas/ImageType", "description": "Image type"}, "image_size": {"type": "integer", "title": "Image Size", "description": "Image size in bytes"}, "checksum": {"type": "string", "title": "Checksum", "description": "Checksum value"}, "checksum_algorithm": {"type": "string", "title": "Checksum Algorithm", "description": "Checksum algorithm"}, "created_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Updated At"}}, "type": "object", "required": ["filename", "path", "image_type", "image_size", "checksum", "checksum_algorithm"], "title": "Image"}, "ImageType": {"type": "string", "enum": ["qemu", "ios", "iou"], "title": "ImageType"}, "Iou": {"properties": {"ethernet_adapters": {"type": "integer", "title": "Number of Ethernet adapters"}, "serial_adapters": {"type": "integer", "title": "Number of serial adapters"}, "nvram": {"type": "integer", "title": "Host NVRAM"}, "ram": {"type": "integer", "title": "Host RAM"}, "startup_config": {"type": "string", "title": "Config loaded at startup"}}, "type": "object", "required": ["ethernet_adapters", "serial_adapters", "nvram", "ram", "startup_config"], "title": "Iou", "description": "IOU configuration for v1-6"}, "IouPropertiesV8": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name of the template"}, "category": {"anyOf": [{"$ref": "#/components/schemas/gns3server__schemas__controller__appliances__Category"}, {"type": "null"}], "title": "Category of the template"}, "default_name_format": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default name format"}, "usage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "How to use the template"}, "symbol": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Symbol of the template"}, "ethernet_adapters": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Number of ethernet adapters"}, "serial_adapters": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Number of serial adapters"}, "ram": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Host RAM"}, "nvram": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Host NVRAM"}, "startup_config": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Config loaded at startup"}}, "type": "object", "title": "IouPropertiesV8", "description": "IOU template properties (v8)"}, "Kvm": {"type": "string", "enum": ["require", "allow", "disable"], "title": "Kvm", "description": "KVM requirements enum"}, "LLMModelConfigCreate": {"properties": {"name": {"type": "string", "maxLength": 100, "minLength": 1, "title": "Name", "description": "Configuration name"}, "model_type": {"type": "string", "enum": ["text", "vision", "stt", "tts", "multimodal", "embedding", "reranking", "other"], "title": "Model Type", "description": "Model type"}, "is_default": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Is Default", "description": "Set as default configuration", "default": false}, "provider": {"type": "string", "title": "Provider", "description": "LLM provider"}, "base_url": {"type": "string", "title": "Base Url", "description": "API base URL"}, "model": {"type": "string", "title": "Model", "description": "Model name"}, "temperature": {"type": "number", "maximum": 2.0, "minimum": 0.0, "title": "Temperature", "default": 0.7}, "api_key": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Api Key"}, "max_tokens": {"anyOf": [{"type": "integer", "exclusiveMinimum": 0.0}, {"type": "null"}], "title": "Max Tokens"}, "context_limit": {"type": "integer", "exclusiveMinimum": 0.0, "title": "Context Limit", "description": "Model context window limit in K tokens (e.g., 128 = 128K tokens)"}, "context_strategy": {"type": "string", "enum": ["conservative", "balanced", "aggressive"], "title": "Context Strategy", "description": "Context trimming strategy", "default": "balanced"}, "copilot_mode": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Copilot Mode", "description": "GNS3-Copilot mode: 'teaching_assistant' or 'lab_automation_assistant'"}}, "additionalProperties": true, "type": "object", "required": ["name", "model_type", "provider", "base_url", "model", "context_limit"], "title": "LLMModelConfigCreate", "description": "Request to create a new LLM model configuration."}, "LLMModelConfigDataWithoutSecret": {"properties": {"provider": {"type": "string", "title": "Provider", "description": "LLM provider (e.g., 'openai', 'anthropic', 'ollama')"}, "base_url": {"type": "string", "title": "Base Url", "description": "API base URL"}, "model": {"type": "string", "title": "Model", "description": "Model name"}, "temperature": {"type": "number", "maximum": 2.0, "minimum": 0.0, "title": "Temperature", "description": "Temperature parameter", "default": 0.7}, "api_key": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Api Key", "description": "API key (always hidden in API responses)"}, "max_tokens": {"anyOf": [{"type": "integer", "exclusiveMinimum": 0.0}, {"type": "null"}], "title": "Max Tokens", "description": "Max tokens for generation"}, "context_limit": {"type": "integer", "exclusiveMinimum": 0.0, "title": "Context Limit", "description": "Model context window limit in K tokens (e.g., 128 = 128K tokens)"}, "context_strategy": {"type": "string", "enum": ["conservative", "balanced", "aggressive"], "title": "Context Strategy", "description": "Context trimming strategy: conservative (60%), balanced (75%), aggressive (85%)", "default": "balanced"}, "copilot_mode": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Copilot Mode", "description": "GNS3-Copilot mode: 'teaching_assistant' or 'lab_automation_assistant'"}}, "additionalProperties": true, "type": "object", "required": ["provider", "base_url", "model", "context_limit"], "title": "LLMModelConfigDataWithoutSecret", "description": "LLM model configuration data WITHOUT sensitive information."}, "LLMModelConfigInheritedResponse": {"properties": {"configs": {"items": {"$ref": "#/components/schemas/LLMModelConfigWithSource"}, "type": "array", "title": "Configs"}, "default_config": {"anyOf": [{"$ref": "#/components/schemas/LLMModelConfigWithSource"}, {"type": "null"}]}, "total": {"type": "integer", "title": "Total"}}, "type": "object", "required": ["configs", "total"], "title": "LLMModelConfigInheritedResponse", "description": "Response containing user's effective configs (own + inherited from groups)."}, "LLMModelConfigListResponse": {"properties": {"configs": {"items": {"$ref": "#/components/schemas/LLMModelConfigResponse"}, "type": "array", "title": "Configs"}, "default_config": {"anyOf": [{"$ref": "#/components/schemas/LLMModelConfigResponse"}, {"type": "null"}]}, "total": {"type": "integer", "title": "Total"}}, "type": "object", "required": ["configs", "total"], "title": "LLMModelConfigListResponse", "description": "Response containing a list of model configurations with default."}, "LLMModelConfigResponse": {"properties": {"created_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Updated At"}, "config_id": {"type": "string", "format": "uuid", "title": "Config Id"}, "name": {"type": "string", "title": "Name"}, "model_type": {"type": "string", "enum": ["text", "vision", "stt", "tts", "multimodal", "embedding", "reranking", "other"], "title": "Model Type"}, "config": {"$ref": "#/components/schemas/LLMModelConfigDataWithoutSecret"}, "user_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "User Id"}, "group_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Group Id"}, "is_default": {"type": "boolean", "title": "Is Default"}, "version": {"type": "integer", "title": "Version", "description": "Optimistic locking version"}}, "type": "object", "required": ["config_id", "name", "model_type", "config", "is_default", "version"], "title": "LLMModelConfigResponse", "description": "LLM model configuration response (without API key for security)."}, "LLMModelConfigUpdate": {"properties": {"name": {"anyOf": [{"type": "string", "maxLength": 100, "minLength": 1}, {"type": "null"}], "title": "Name"}, "model_type": {"anyOf": [{"type": "string", "enum": ["text", "vision", "stt", "tts", "multimodal", "embedding", "reranking", "other"]}, {"type": "null"}], "title": "Model Type"}, "is_default": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Is Default"}, "expected_version": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Expected Version", "description": "Expected version for optimistic locking"}, "provider": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Provider"}, "base_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Base Url"}, "model": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Model"}, "temperature": {"anyOf": [{"type": "number", "maximum": 2.0, "minimum": 0.0}, {"type": "null"}], "title": "Temperature"}, "api_key": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Api Key"}, "max_tokens": {"anyOf": [{"type": "integer"}, {"type": "string"}, {"type": "null"}], "title": "Max Tokens", "description": "Max tokens for generation (can be null)"}, "context_limit": {"anyOf": [{"type": "integer", "exclusiveMinimum": 0.0}, {"type": "null"}], "title": "Context Limit", "description": "Model context window limit in K tokens (e.g., 128 = 128K tokens)"}, "context_strategy": {"anyOf": [{"type": "string", "enum": ["conservative", "balanced", "aggressive"]}, {"type": "null"}], "title": "Context Strategy", "description": "Context trimming strategy"}, "copilot_mode": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Copilot Mode", "description": "GNS3-Copilot mode: 'teaching_assistant' or 'lab_automation_assistant'"}}, "additionalProperties": true, "type": "object", "title": "LLMModelConfigUpdate", "description": "Request to update an existing LLM model configuration."}, "LLMModelConfigWithSource": {"properties": {"created_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Updated At"}, "config_id": {"type": "string", "format": "uuid", "title": "Config Id"}, "name": {"type": "string", "title": "Name"}, "model_type": {"type": "string", "enum": ["text", "vision", "stt", "tts", "multimodal", "embedding", "reranking", "other"], "title": "Model Type"}, "config": {"$ref": "#/components/schemas/LLMModelConfigDataWithoutSecret"}, "user_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "User Id"}, "group_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Group Id"}, "is_default": {"type": "boolean", "title": "Is Default"}, "version": {"type": "integer", "title": "Version"}, "source": {"type": "string", "title": "Source", "description": "Source: 'user' or 'group'"}, "group_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Group Name", "description": "Group name if source is 'group'"}}, "additionalProperties": true, "type": "object", "required": ["config_id", "name", "model_type", "config", "is_default", "version", "source"], "title": "LLMModelConfigWithSource", "description": "Model configuration with source information (for inheritance, without API key for security)."}, "Label": {"properties": {"text": {"type": "string", "title": "Text"}, "style": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Style", "description": "SVG style attribute. Apply default style if null"}, "x": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "X", "description": "Relative X position of the label. Center it if null"}, "y": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Y", "description": "Relative Y position of the label"}, "rotation": {"anyOf": [{"type": "integer", "maximum": 360.0, "minimum": -359.0}, {"type": "null"}], "title": "Rotation", "description": "Rotation of the label"}}, "type": "object", "required": ["text"], "title": "Label", "description": "Label data."}, "Link": {"properties": {"nodes": {"anyOf": [{"items": {"$ref": "#/components/schemas/LinkNode"}, "type": "array", "maxItems": 2, "minItems": 0}, {"type": "null"}], "title": "Nodes"}, "suspend": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Suspend"}, "link_style": {"anyOf": [{"$ref": "#/components/schemas/LinkStyle"}, {"type": "null"}]}, "filters": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Filters"}, "markers": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Markers", "description": "Traffic-insight markers on this link: name \u2192 {bpf, tag, enabled}"}, "show_filters_icon": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Filters Icon", "description": "Show filters icon in Web UI", "default": true}, "link_id": {"type": "string", "format": "uuid", "title": "Link Id"}, "project_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Project Id"}, "link_type": {"anyOf": [{"$ref": "#/components/schemas/gns3server__schemas__controller__links__LinkType"}, {"type": "null"}]}, "capturing": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Capturing", "description": "Read only property. True if a capture running on the link"}, "capture_file_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Capture File Name", "description": "Read only property. The name of the capture file if a capture is running"}, "capture_file_path": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Capture File Path", "description": "Read only property. The full path of the capture file if a capture is running"}, "capture_compute_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Capture Compute Id", "description": "Read only property. The compute identifier where a capture is running"}, "wireshark": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Wireshark", "description": "Read only property. True if a Web Wireshark session is active on the link", "default": false}}, "type": "object", "required": ["link_id"], "title": "Link"}, "LinkCapture": {"properties": {"data_link_type": {"type": "string", "title": "Data Link Type", "default": "DLT_EN10MB"}, "capture_file_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Capture File Name"}, "wireshark": {"type": "boolean", "title": "Wireshark", "default": false}}, "type": "object", "title": "LinkCapture", "description": "Link capture data."}, "LinkCreate": {"properties": {"nodes": {"items": {"$ref": "#/components/schemas/LinkNode"}, "type": "array", "maxItems": 2, "minItems": 2, "title": "Nodes"}, "suspend": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Suspend"}, "link_style": {"anyOf": [{"$ref": "#/components/schemas/LinkStyle"}, {"type": "null"}]}, "filters": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Filters"}, "markers": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Markers", "description": "Traffic-insight markers on this link: name \u2192 {bpf, tag, enabled}"}, "show_filters_icon": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Filters Icon", "description": "Show filters icon in Web UI", "default": true}, "link_id": {"type": "string", "format": "uuid", "title": "Link Id"}}, "type": "object", "required": ["nodes"], "title": "LinkCreate"}, "LinkNode": {"properties": {"node_id": {"type": "string", "format": "uuid", "title": "Node Id"}, "adapter_number": {"type": "integer", "title": "Adapter Number"}, "port_number": {"type": "integer", "title": "Port Number"}, "label": {"anyOf": [{"$ref": "#/components/schemas/Label"}, {"type": "null"}]}}, "type": "object", "required": ["node_id", "adapter_number", "port_number"], "title": "LinkNode", "description": "Link node data."}, "LinkStyle": {"properties": {"color": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Color"}, "width": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Width"}, "type": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Type"}, "link_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Link Type"}, "bezier_curviness": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Bezier Curviness"}, "flowchart_roundness": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Flowchart Roundness"}, "control_offset": {"anyOf": [{"prefixItems": [{"type": "number"}, {"type": "number"}], "type": "array", "maxItems": 2, "minItems": 2}, {"type": "null"}], "title": "Control Offset"}}, "type": "object", "title": "LinkStyle"}, "LinkUpdate": {"properties": {"nodes": {"anyOf": [{"items": {"$ref": "#/components/schemas/LinkNode"}, "type": "array", "maxItems": 2, "minItems": 0}, {"type": "null"}], "title": "Nodes"}, "suspend": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Suspend"}, "link_style": {"anyOf": [{"$ref": "#/components/schemas/LinkStyle"}, {"type": "null"}]}, "filters": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Filters"}, "markers": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Markers", "description": "Traffic-insight markers on this link: name \u2192 {bpf, tag, enabled}"}, "show_filters_icon": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Filters Icon", "description": "Show filters icon in Web UI", "default": true}}, "type": "object", "title": "LinkUpdate"}, "LoggedInUserUpdate": {"properties": {"password": {"anyOf": [{"type": "string", "maxLength": 100, "minLength": 8, "format": "password", "writeOnly": true}, {"type": "null"}], "title": "Password"}, "email": {"anyOf": [{"type": "string", "format": "email"}, {"type": "null"}], "title": "Email"}, "full_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Full Name"}}, "type": "object", "title": "LoggedInUserUpdate", "description": "Properties to update a logged-in user."}, "MarkerCreate": {"properties": {"name": {"anyOf": [{"type": "string", "maxLength": 32, "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]*$"}, {"type": "null"}], "title": "Name", "description": "Unique marker name on the link. Auto-generated when absent."}, "bpf": {"type": "string", "title": "Bpf"}, "tag": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Tag"}, "link_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Link Id"}, "color": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Color", "description": "User-chosen hex color for this marker in the Web UI, e.g. '#ff5722'"}, "highlight_duration": {"anyOf": [{"type": "integer", "minimum": 1.0}, {"type": "null"}], "title": "Highlight Duration", "description": "How long (milliseconds) the Web UI keeps this marker highlighted after a match. Omitted = use the UI default. Pure render hint \u2014 stored on the link, never sent to uBridge."}, "enabled": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Enabled", "description": "Whether the marker is active. Defaults to true on creation."}, "direction": {"anyOf": [{"type": "string", "pattern": "^(tx|rx|both)$"}, {"type": "null"}], "title": "Direction", "description": "Direction filter: 'tx' = capture node sending only, 'rx' = capture node receiving only, 'both' or null = both directions."}, "capture_node_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Capture Node Id", "description": "Which endpoint's uBridge hosts this marker (the 'observer'). tx/rx in `direction` are interpreted from this node's perspective. Must be one of the link's two endpoints and a marker-capable type. Omitted = server auto-picks (first started marker-capable endpoint)."}, "data_link_type": {"type": "string", "title": "Data Link Type", "description": "pcap link-layer type the marker's BPF compiles against and its capture file is written with (a uBridge `linktype` token). Defaults to DLT_EN10MB (Ethernet), which is omitted from the uBridge command. Only meaningful for serial links: set it to the matching serial DLT from the port's data_link_types \u2014 DLT_C_HDLC / DLT_PPP_SERIAL / DLT_FRELAY / DLT_ATM_RFC1483 \u2014 so the BPF offsets and pcap decode match the encapsulation configured in IOS. Create-only (changing it would invalidate the pcap).", "default": "DLT_EN10MB"}}, "type": "object", "required": ["bpf"], "title": "MarkerCreate", "description": "Body for attaching a traffic-insight marker to a link.\n\n``name`` is optional at the controller REST layer (auto-generated when\nabsent) but always set when the controller forwards to the compute."}, "MarkerDefinitionCreate": {"properties": {"name": {"anyOf": [{"type": "string", "maxLength": 32, "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]*$"}, {"type": "null"}], "title": "Name", "description": "Unique definition name. Auto-generated when absent."}, "bpf": {"type": "string", "title": "Bpf"}, "tag": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Tag"}, "color": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Color", "description": "User-chosen hex color for the marker in the Web UI, e.g. '#ff5722'"}, "highlight_duration": {"anyOf": [{"type": "integer", "minimum": 1.0}, {"type": "null"}], "title": "Highlight Duration", "description": "How long (milliseconds) the Web UI keeps this marker highlighted after a match. Omitted = use the UI default. Pure render hint \u2014 stored with the definition, never sent to uBridge."}, "direction": {"anyOf": [{"type": "string", "pattern": "^(tx|rx|both)$"}, {"type": "null"}], "title": "Direction", "description": "Direction filter: 'tx' = capture node sending only, 'rx' = capture node receiving only, 'both' or null = both directions."}, "data_link_type": {"type": "string", "title": "Data Link Type", "description": "pcap link-layer type for inherited markers on serial links (uBridge `linktype`). Defaults to DLT_EN10MB (Ethernet): the definition then applies only to Ethernet links and serial links are skipped. Set a serial DLT \u2014 DLT_C_HDLC / DLT_PPP_SERIAL / DLT_FRELAY / DLT_ATM_RFC1483 \u2014 to also cover serial links with that encapsulation; Ethernet links stay EN10MB regardless. Changing it re-fans-out.", "default": "DLT_EN10MB"}}, "type": "object", "required": ["bpf"], "title": "MarkerDefinitionCreate", "description": "Body for creating / updating a project-level marker definition.\n\nThe definition is a template \u2014 when applied to a link the marker name is\nprefixed with ``global-`` (e.g. ``arp`` \u2192 ``global-arp``) so it can never\ncollide with a per-link private marker."}, "MarkerUpdate": {"properties": {"bpf": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Bpf"}, "tag": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Tag"}, "direction": {"anyOf": [{"type": "string", "pattern": "^(tx|rx|both)$"}, {"type": "null"}], "title": "Direction", "description": "Direction filter; 'both' or an explicit null clears it to both. Omit to keep."}, "color": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Color", "description": "Hex color render hint, e.g. '#ff5722'"}, "highlight_duration": {"anyOf": [{"type": "integer", "minimum": 1.0}, {"type": "null"}], "title": "Highlight Duration", "description": "UI highlight duration in ms; null = UI default"}, "enabled": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Enabled", "description": "Toggle the marker on/off (instant)."}}, "type": "object", "title": "MarkerUpdate", "description": "Body for updating a marker \u2014 partial update, every field optional.\n\n``bpf`` is optional here (it is required on create). ``capture_node_id`` and\n``name`` are create-only / path-driven and intentionally absent; an explicit\n``direction: null`` clears the direction back to both (omitting keeps it)."}, "NetmikoDeviceType": {"properties": {"name": {"type": "string", "title": "Name", "description": "Device type name to store in the netmiko_device_type field"}, "telnet": {"type": "boolean", "title": "Telnet", "description": "Whether the device type connects over Telnet", "default": false}, "custom": {"type": "boolean", "title": "Custom", "description": "Whether the device type is a GNS3-copilot custom driver (gns3_ prefix)", "default": false}}, "type": "object", "required": ["name"], "title": "NetmikoDeviceType", "description": "A Netmiko device type supported by the installed Netmiko library."}, "NetmikoDeviceTypeList": {"properties": {"netmiko_version": {"type": "string", "title": "Netmiko Version", "description": "Version of the installed Netmiko library"}, "device_types": {"items": {"$ref": "#/components/schemas/NetmikoDeviceType"}, "type": "array", "title": "Device Types", "description": "Supported device types, sorted by name"}}, "type": "object", "required": ["netmiko_version", "device_types"], "title": "NetmikoDeviceTypeList", "description": "List of Netmiko device types supported by the installed Netmiko library."}, "Node": {"properties": {"compute_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "string"}], "title": "Compute Id"}, "name": {"type": "string", "title": "Name"}, "node_type": {"$ref": "#/components/schemas/NodeType"}, "node_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Node Id"}, "console": {"anyOf": [{"type": "integer", "maximum": 65535.0, "exclusiveMinimum": 0.0}, {"type": "null"}], "title": "Console", "description": "Console TCP port"}, "console_type": {"anyOf": [{"$ref": "#/components/schemas/ConsoleType"}, {"type": "null"}]}, "console_auto_start": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Console Auto Start", "description": "Automatically start the console when the node has started", "default": false}, "netmiko_device_type": {"anyOf": [{"type": "string", "pattern": "^[a-z0-9_]+$|^$"}, {"type": "null"}], "title": "Netmiko Device Type", "description": "Device type for Netmiko-based automation tools, overrides the template value"}, "default_username": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default Username", "description": "Default username to log into the node, seeded from the template appliance metadata"}, "default_password": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default Password", "description": "Default password to log into the node, seeded from the template appliance metadata"}, "aux": {"anyOf": [{"type": "integer", "maximum": 65535.0, "exclusiveMinimum": 0.0}, {"type": "null"}], "title": "Aux", "description": "Auxiliary console TCP port"}, "aux_type": {"anyOf": [{"$ref": "#/components/schemas/ConsoleType"}, {"type": "null"}]}, "properties": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Properties", "description": "Properties specific to an emulator"}, "label": {"anyOf": [{"$ref": "#/components/schemas/Label"}, {"type": "null"}]}, "symbol": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Symbol"}, "x": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "X", "default": 0}, "y": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Y", "default": 0}, "z": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Z", "default": 1}, "locked": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Locked", "description": "Whether the element locked or not", "default": false}, "port_name_format": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Port Name Format", "description": "Formatting for port name {0} will be replace by port number"}, "port_segment_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Port Segment Size", "description": "Size of the port segment"}, "first_port_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "First Port Name", "description": "Name of the first port"}, "custom_adapters": {"anyOf": [{"items": {"$ref": "#/components/schemas/CustomAdapter"}, "type": "array"}, {"type": "null"}], "title": "Custom Adapters"}, "tags": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Tags", "description": "User-defined metadata tags (e.g. 'vendor:cisco' or 'model:7200')"}, "template_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Template Id", "description": "Template UUID from which the node has been created. Read only"}, "project_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Project Id"}, "node_directory": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Node Directory", "description": "Working directory of the node. Read only"}, "status": {"anyOf": [{"$ref": "#/components/schemas/NodeStatus"}, {"type": "null"}], "description": "Node status. Read only"}, "command_line": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Command Line", "description": "Command line use to start the node. Read only"}, "width": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Width", "description": "Width of the node. Read only"}, "height": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Height", "description": "Height of the node. Read only"}, "ports": {"anyOf": [{"items": {"$ref": "#/components/schemas/NodePort"}, "type": "array"}, {"type": "null"}], "title": "Ports", "description": "List of node ports. Read only"}, "console_host": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Console Host", "description": "Console host. Warning if the host is 0.0.0.0 or :: (listen on all interfaces) you need to use the same address you use to connect to the controller"}}, "type": "object", "required": ["compute_id", "name", "node_type"], "title": "Node"}, "NodeCreate": {"properties": {"compute_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "string"}], "title": "Compute Id"}, "name": {"type": "string", "title": "Name"}, "node_type": {"$ref": "#/components/schemas/NodeType"}, "node_id": {"type": "string", "format": "uuid", "title": "Node Id"}, "console": {"anyOf": [{"type": "integer", "maximum": 65535.0, "exclusiveMinimum": 0.0}, {"type": "null"}], "title": "Console", "description": "Console TCP port"}, "console_type": {"anyOf": [{"$ref": "#/components/schemas/ConsoleType"}, {"type": "null"}]}, "console_auto_start": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Console Auto Start", "description": "Automatically start the console when the node has started", "default": false}, "netmiko_device_type": {"anyOf": [{"type": "string", "pattern": "^[a-z0-9_]+$|^$"}, {"type": "null"}], "title": "Netmiko Device Type", "description": "Device type for Netmiko-based automation tools, overrides the template value"}, "default_username": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default Username", "description": "Default username to log into the node, seeded from the template appliance metadata"}, "default_password": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default Password", "description": "Default password to log into the node, seeded from the template appliance metadata"}, "aux": {"anyOf": [{"type": "integer", "maximum": 65535.0, "exclusiveMinimum": 0.0}, {"type": "null"}], "title": "Aux", "description": "Auxiliary console TCP port"}, "aux_type": {"anyOf": [{"$ref": "#/components/schemas/ConsoleType"}, {"type": "null"}]}, "properties": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Properties", "description": "Properties specific to an emulator"}, "label": {"anyOf": [{"$ref": "#/components/schemas/Label"}, {"type": "null"}]}, "symbol": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Symbol"}, "x": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "X", "default": 0}, "y": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Y", "default": 0}, "z": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Z", "default": 1}, "locked": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Locked", "description": "Whether the element locked or not", "default": false}, "port_name_format": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Port Name Format", "description": "Formatting for port name {0} will be replace by port number"}, "port_segment_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Port Segment Size", "description": "Size of the port segment"}, "first_port_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "First Port Name", "description": "Name of the first port"}, "custom_adapters": {"anyOf": [{"items": {"$ref": "#/components/schemas/CustomAdapter"}, "type": "array"}, {"type": "null"}], "title": "Custom Adapters"}, "tags": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Tags", "description": "User-defined metadata tags (e.g. 'vendor:cisco' or 'model:7200')"}}, "type": "object", "required": ["compute_id", "name", "node_type"], "title": "NodeCreate"}, "NodeDuplicate": {"properties": {"x": {"type": "integer", "title": "X"}, "y": {"type": "integer", "title": "Y"}, "z": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Z", "default": 0}}, "type": "object", "required": ["x", "y"], "title": "NodeDuplicate", "description": "Data to duplicate a node."}, "NodeFile": {"properties": {"path": {"type": "string", "title": "Path", "description": "File name"}, "size": {"type": "integer", "title": "Size", "description": "File size in bytes"}, "created_at": {"type": "string", "title": "Created At", "description": "File creation time (ISO 8601)"}, "modified_at": {"type": "string", "title": "Modified At", "description": "File modification time (ISO 8601)"}, "file_type": {"type": "string", "title": "File Type", "description": "File type determined by the file command"}}, "type": "object", "required": ["path", "size", "created_at", "modified_at", "file_type"], "title": "NodeFile", "description": "Detailed file information for node files."}, "NodePort": {"properties": {"name": {"type": "string", "title": "Name", "description": "Port name"}, "short_name": {"type": "string", "title": "Short Name", "description": "Port name"}, "adapter_number": {"type": "integer", "title": "Adapter Number", "description": "Adapter slot"}, "adapter_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Adapter Type", "description": "Adapter type"}, "port_number": {"type": "integer", "title": "Port Number", "description": "Port slot"}, "link_type": {"$ref": "#/components/schemas/gns3server__schemas__controller__nodes__LinkType", "description": "Type of link"}, "data_link_types": {"additionalProperties": true, "type": "object", "title": "Data Link Types", "description": "Available PCAP types for capture"}, "mac_address": {"anyOf": [{"type": "string", "pattern": "^([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})$"}, {"type": "null"}], "title": "Mac Address"}}, "type": "object", "required": ["name", "short_name", "adapter_number", "port_number", "link_type", "data_link_types"], "title": "NodePort", "description": "Node port data."}, "NodeStatus": {"type": "string", "enum": ["stopped", "started", "suspended"], "title": "NodeStatus", "description": "Supported node statuses."}, "NodeType": {"type": "string", "enum": ["cloud", "nat", "ethernet_hub", "ethernet_switch", "frame_relay_switch", "atm_switch", "docker", "dynamips", "vpcs", "virtualbox", "vmware", "iou", "qemu"], "title": "NodeType", "description": "Supported node types."}, "NodeUpdate": {"properties": {"compute_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "string"}, {"type": "null"}], "title": "Compute Id"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "node_type": {"anyOf": [{"$ref": "#/components/schemas/NodeType"}, {"type": "null"}]}, "node_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Node Id"}, "console": {"anyOf": [{"type": "integer", "maximum": 65535.0, "exclusiveMinimum": 0.0}, {"type": "null"}], "title": "Console", "description": "Console TCP port"}, "console_type": {"anyOf": [{"$ref": "#/components/schemas/ConsoleType"}, {"type": "null"}]}, "console_auto_start": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Console Auto Start", "description": "Automatically start the console when the node has started", "default": false}, "netmiko_device_type": {"anyOf": [{"type": "string", "pattern": "^[a-z0-9_]+$|^$"}, {"type": "null"}], "title": "Netmiko Device Type", "description": "Device type for Netmiko-based automation tools, overrides the template value"}, "default_username": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default Username", "description": "Default username to log into the node, seeded from the template appliance metadata"}, "default_password": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default Password", "description": "Default password to log into the node, seeded from the template appliance metadata"}, "aux": {"anyOf": [{"type": "integer", "maximum": 65535.0, "exclusiveMinimum": 0.0}, {"type": "null"}], "title": "Aux", "description": "Auxiliary console TCP port"}, "aux_type": {"anyOf": [{"$ref": "#/components/schemas/ConsoleType"}, {"type": "null"}]}, "properties": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Properties", "description": "Properties specific to an emulator"}, "label": {"anyOf": [{"$ref": "#/components/schemas/Label"}, {"type": "null"}]}, "symbol": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Symbol"}, "x": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "X", "default": 0}, "y": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Y", "default": 0}, "z": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Z", "default": 1}, "locked": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Locked", "description": "Whether the element locked or not", "default": false}, "port_name_format": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Port Name Format", "description": "Formatting for port name {0} will be replace by port number"}, "port_segment_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Port Segment Size", "description": "Size of the port segment"}, "first_port_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "First Port Name", "description": "Name of the first port"}, "custom_adapters": {"anyOf": [{"items": {"$ref": "#/components/schemas/CustomAdapter"}, "type": "array"}, {"type": "null"}], "title": "Custom Adapters"}, "tags": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Tags", "description": "User-defined metadata tags (e.g. 'vendor:cisco' or 'model:7200')"}}, "type": "object", "title": "NodeUpdate", "description": "Data to update a node."}, "OpenAIMessage": {"properties": {"id": {"type": "string", "title": "Id", "description": "Message ID"}, "role": {"type": "string", "enum": ["user", "assistant", "system", "tool"], "title": "Role", "description": "Message role"}, "content": {"type": "string", "title": "Content", "description": "Message content"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name", "description": "Tool message name"}, "tool_call_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Tool Call Id", "description": "Associated tool call ID (for tool messages)"}, "tool_calls": {"anyOf": [{"items": {"$ref": "#/components/schemas/OpenAIToolCall"}, "type": "array"}, {"type": "null"}], "title": "Tool Calls", "description": "Tool calls (for assistant messages)"}, "metadata": {"additionalProperties": true, "type": "object", "title": "Metadata", "description": "Message metadata (includes created_at)"}}, "type": "object", "required": ["id", "role", "content"], "title": "OpenAIMessage", "description": "Message model for conversation history."}, "OpenAIToolCall": {"properties": {"id": {"type": "string", "title": "Id", "description": "Tool call ID"}, "type": {"type": "string", "const": "function", "title": "Type", "description": "Tool call type", "default": "function"}, "function": {"additionalProperties": true, "type": "object", "title": "Function", "description": "Function name and arguments"}}, "type": "object", "required": ["id", "function"], "title": "OpenAIToolCall", "description": "Tool call information (OpenAI compatible format)."}, "Privilege": {"properties": {"name": {"type": "string", "title": "Name"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}, "created_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Updated At"}, "privilege_id": {"type": "string", "format": "uuid", "title": "Privilege Id"}}, "type": "object", "required": ["name", "privilege_id"], "title": "Privilege"}, "Project": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "project_id": {"type": "string", "format": "uuid", "title": "Project Id"}, "path": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Path", "description": "Project directory"}, "auto_close": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Close", "description": "Close project when last client leaves"}, "auto_open": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Open", "description": "Project opens when GNS3 starts"}, "auto_start": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Start", "description": "Project starts when opened"}, "scene_height": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Scene Height", "description": "Height of the drawing area"}, "scene_width": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Scene Width", "description": "Width of the drawing area"}, "zoom": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Zoom", "description": "Zoom of the drawing area"}, "show_layers": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Layers", "description": "Show layers on the drawing area"}, "snap_to_grid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Snap To Grid", "description": "Snap to grid on the drawing area"}, "show_grid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Grid", "description": "Show the grid on the drawing area"}, "grid_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Grid Size", "description": "Grid size for the drawing area for nodes"}, "drawing_grid_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Drawing Grid Size", "description": "Grid size for the drawing area for drawings"}, "show_interface_labels": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Interface Labels", "description": "Show interface labels on the drawing area"}, "supplier": {"anyOf": [{"$ref": "#/components/schemas/Supplier"}, {"type": "null"}], "description": "Supplier of the project"}, "variables": {"anyOf": [{"items": {"$ref": "#/components/schemas/Variable"}, "type": "array"}, {"type": "null"}], "title": "Variables", "description": "Variables required to run the project"}, "status": {"anyOf": [{"$ref": "#/components/schemas/ProjectStatus"}, {"type": "null"}]}, "filename": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Filename"}, "created_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created By", "description": "Username of the user who created the project"}}, "type": "object", "required": ["project_id"], "title": "Project"}, "ProjectCompression": {"type": "string", "enum": ["none", "zip", "bzip2", "lzma", "zstd"], "title": "ProjectCompression", "description": "Supported project compression."}, "ProjectCreate": {"properties": {"name": {"type": "string", "title": "Name"}, "project_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Project Id"}, "path": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Path", "description": "Project directory"}, "auto_close": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Close", "description": "Close project when last client leaves"}, "auto_open": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Open", "description": "Project opens when GNS3 starts"}, "auto_start": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Start", "description": "Project starts when opened"}, "scene_height": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Scene Height", "description": "Height of the drawing area"}, "scene_width": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Scene Width", "description": "Width of the drawing area"}, "zoom": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Zoom", "description": "Zoom of the drawing area"}, "show_layers": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Layers", "description": "Show layers on the drawing area"}, "snap_to_grid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Snap To Grid", "description": "Snap to grid on the drawing area"}, "show_grid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Grid", "description": "Show the grid on the drawing area"}, "grid_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Grid Size", "description": "Grid size for the drawing area for nodes"}, "drawing_grid_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Drawing Grid Size", "description": "Grid size for the drawing area for drawings"}, "show_interface_labels": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Interface Labels", "description": "Show interface labels on the drawing area"}, "supplier": {"anyOf": [{"$ref": "#/components/schemas/Supplier"}, {"type": "null"}], "description": "Supplier of the project"}, "variables": {"anyOf": [{"items": {"$ref": "#/components/schemas/Variable"}, "type": "array"}, {"type": "null"}], "title": "Variables", "description": "Variables required to run the project"}}, "type": "object", "required": ["name"], "title": "ProjectCreate", "description": "Properties for project creation."}, "ProjectDuplicate": {"properties": {"name": {"type": "string", "title": "Name"}, "project_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Project Id"}, "path": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Path", "description": "Project directory"}, "auto_close": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Close", "description": "Close project when last client leaves"}, "auto_open": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Open", "description": "Project opens when GNS3 starts"}, "auto_start": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Start", "description": "Project starts when opened"}, "scene_height": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Scene Height", "description": "Height of the drawing area"}, "scene_width": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Scene Width", "description": "Width of the drawing area"}, "zoom": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Zoom", "description": "Zoom of the drawing area"}, "show_layers": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Layers", "description": "Show layers on the drawing area"}, "snap_to_grid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Snap To Grid", "description": "Snap to grid on the drawing area"}, "show_grid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Grid", "description": "Show the grid on the drawing area"}, "grid_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Grid Size", "description": "Grid size for the drawing area for nodes"}, "drawing_grid_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Drawing Grid Size", "description": "Grid size for the drawing area for drawings"}, "show_interface_labels": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Interface Labels", "description": "Show interface labels on the drawing area"}, "supplier": {"anyOf": [{"$ref": "#/components/schemas/Supplier"}, {"type": "null"}], "description": "Supplier of the project"}, "variables": {"anyOf": [{"items": {"$ref": "#/components/schemas/Variable"}, "type": "array"}, {"type": "null"}], "title": "Variables", "description": "Variables required to run the project"}, "reset_mac_addresses": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Reset Mac Addresses", "description": "Reset MAC addresses for this project", "default": false}}, "type": "object", "required": ["name"], "title": "ProjectDuplicate", "description": "Properties for project duplication."}, "ProjectStatus": {"type": "string", "enum": ["opened", "closed"], "title": "ProjectStatus", "description": "Supported project statuses."}, "ProjectUpdate": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "project_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Project Id"}, "path": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Path", "description": "Project directory"}, "auto_close": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Close", "description": "Close project when last client leaves"}, "auto_open": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Open", "description": "Project opens when GNS3 starts"}, "auto_start": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Start", "description": "Project starts when opened"}, "scene_height": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Scene Height", "description": "Height of the drawing area"}, "scene_width": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Scene Width", "description": "Width of the drawing area"}, "zoom": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Zoom", "description": "Zoom of the drawing area"}, "show_layers": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Layers", "description": "Show layers on the drawing area"}, "snap_to_grid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Snap To Grid", "description": "Snap to grid on the drawing area"}, "show_grid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Grid", "description": "Show the grid on the drawing area"}, "grid_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Grid Size", "description": "Grid size for the drawing area for nodes"}, "drawing_grid_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Drawing Grid Size", "description": "Grid size for the drawing area for drawings"}, "show_interface_labels": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Show Interface Labels", "description": "Show interface labels on the drawing area"}, "supplier": {"anyOf": [{"$ref": "#/components/schemas/Supplier"}, {"type": "null"}], "description": "Supplier of the project"}, "variables": {"anyOf": [{"items": {"$ref": "#/components/schemas/Variable"}, "type": "array"}, {"type": "null"}], "title": "Variables", "description": "Variables required to run the project"}}, "type": "object", "title": "ProjectUpdate", "description": "Properties for project update."}, "Protocol": {"type": "string", "enum": ["http", "https"], "title": "Protocol", "description": "Protocol supported to communicate with a compute."}, "Qemu": {"properties": {"adapter_type": {"$ref": "#/components/schemas/QemuAdapterType", "title": "Type of network adapter"}, "adapters": {"type": "integer", "title": "Number of adapters"}, "ram": {"type": "integer", "title": "RAM allocated to the appliance (MB)"}, "cpus": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Number of Virtual CPU"}, "hda_disk_interface": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskInterface"}, {"type": "null"}], "title": "Disk interface for the installed hda_disk_image"}, "hdb_disk_interface": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskInterface"}, {"type": "null"}], "title": "Disk interface for the installed hdb_disk_image"}, "hdc_disk_interface": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskInterface"}, {"type": "null"}], "title": "Disk interface for the installed hdc_disk_image"}, "hdd_disk_interface": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskInterface"}, {"type": "null"}], "title": "Disk interface for the installed hdd_disk_image"}, "arch": {"$ref": "#/components/schemas/QemuPlatform", "title": "Architecture emulated"}, "console_type": {"$ref": "#/components/schemas/QemuConsoleType", "title": "Type of console connection for the administration of the appliance"}, "boot_priority": {"anyOf": [{"$ref": "#/components/schemas/QemuBootPriority"}, {"type": "null"}], "title": "Disk boot priority"}, "kernel_command_line": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Command line parameters sent to the kernel"}, "kvm": {"$ref": "#/components/schemas/Kvm", "title": "KVM requirements"}, "options": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Optional additional qemu command line options"}, "cpu_throttling": {"anyOf": [{"type": "number", "maximum": 100.0, "minimum": 0.0}, {"type": "null"}], "title": "Throttle the CPU"}, "on_close": {"anyOf": [{"$ref": "#/components/schemas/QemuOnClose"}, {"type": "null"}], "title": "Action to execute on the VM is closed"}, "process_priority": {"anyOf": [{"$ref": "#/components/schemas/QemuProcessPriority"}, {"type": "null"}], "title": "Process priority for QEMU"}}, "type": "object", "required": ["adapter_type", "adapters", "ram", "arch", "console_type", "kvm"], "title": "Qemu", "description": "QEMU configuration for v1-6"}, "QemuAdapterType": {"type": "string", "enum": ["e1000", "i82550", "i82551", "i82557a", "i82557b", "i82557c", "i82558a", "i82558b", "i82559a", "i82559b", "i82559c", "i82559er", "i82562", "i82801", "igb", "ne2k_pci", "pcnet", "rtl8139", "virtio", "virtio-net-pci", "vmxnet3"], "title": "QemuAdapterType", "description": "Qemu adapter type enum"}, "QemuBootPriority": {"type": "string", "enum": ["c", "d", "n", "cn", "cd", "dn", "dc", "nc", "nd"], "title": "QemuBootPriority", "description": "Boot priority enum"}, "QemuConsoleType": {"type": "string", "enum": ["telnet", "ssh", "vnc", "spice", "spice+agent", "none"], "title": "QemuConsoleType", "description": "Qemu console type enum"}, "QemuDiskImageAdapterType": {"type": "string", "enum": ["ide", "lsilogic", "buslogic", "legacyESX"], "title": "QemuDiskImageAdapterType", "description": "Supported Qemu disk image on/off options."}, "QemuDiskImageCreate": {"properties": {"format": {"$ref": "#/components/schemas/QemuDiskImageFormat", "description": "Image format type"}, "size": {"type": "integer", "title": "Size", "description": "Image size in Megabytes"}, "preallocation": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImagePreallocation"}, {"type": "null"}]}, "cluster_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Cluster Size"}, "refcount_bits": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Refcount Bits"}, "lazy_refcounts": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImageOnOff"}, {"type": "null"}]}, "subformat": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImageSubformat"}, {"type": "null"}]}, "static": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImageOnOff"}, {"type": "null"}]}, "zeroed_grain": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImageOnOff"}, {"type": "null"}]}, "adapter_type": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImageAdapterType"}, {"type": "null"}]}}, "type": "object", "required": ["format", "size"], "title": "QemuDiskImageCreate"}, "QemuDiskImageFormat": {"type": "string", "enum": ["qcow2", "qcow", "vpc", "vdi", "vdmk", "raw"], "title": "QemuDiskImageFormat", "description": "Supported Qemu disk image formats."}, "QemuDiskImageOnOff": {"type": "string", "enum": ["on", "off"], "title": "QemuDiskImageOnOff", "description": "Supported Qemu image on/off options."}, "QemuDiskImagePreallocation": {"type": "string", "enum": ["off", "metadata", "falloc", "full"], "title": "QemuDiskImagePreallocation", "description": "Supported Qemu disk image pre-allocation options."}, "QemuDiskImageSubformat": {"type": "string", "enum": ["dynamic", "fixed", "streamOptimized", "twoGbMaxExtentSparse", "twoGbMaxExtentFlat", "monolithicSparse", "monolithicFlat"], "title": "QemuDiskImageSubformat", "description": "Supported Qemu disk image sub-format options."}, "QemuDiskImageUpdate": {"properties": {"format": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImageFormat"}, {"type": "null"}], "description": "Image format type"}, "size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Size", "description": "Image size in Megabytes"}, "preallocation": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImagePreallocation"}, {"type": "null"}]}, "cluster_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Cluster Size"}, "refcount_bits": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Refcount Bits"}, "lazy_refcounts": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImageOnOff"}, {"type": "null"}]}, "subformat": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImageSubformat"}, {"type": "null"}]}, "static": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImageOnOff"}, {"type": "null"}]}, "zeroed_grain": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImageOnOff"}, {"type": "null"}]}, "adapter_type": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskImageAdapterType"}, {"type": "null"}]}, "extend": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Extend", "description": "Number of Megabytes to extend the image"}}, "type": "object", "title": "QemuDiskImageUpdate"}, "QemuDiskInterface": {"type": "string", "enum": ["ide", "sata", "nvme", "scsi", "sd", "mtd", "floppy", "pflash", "virtio", "none"], "title": "QemuDiskInterface", "description": "Disk interface enum"}, "QemuOnClose": {"type": "string", "enum": ["power_off", "shutdown_signal", "save_vm_state"], "title": "QemuOnClose", "description": "Qemu on_close action enum"}, "QemuPlatform": {"type": "string", "enum": ["aarch64", "alpha", "arm", "cris", "i386", "lm32", "m68k", "microblaze", "microblazeel", "mips", "mips64", "mips64el", "mipsel", "moxie", "or32", "ppc", "ppc64", "ppcemb", "s390x", "sh4", "sh4eb", "sparc", "sparc64", "tricore", "unicore32", "x86_64", "xtensa", "xtensaeb"], "title": "QemuPlatform", "description": "Qemu platform enum"}, "QemuProcessPriority": {"type": "string", "enum": ["realtime", "very high", "high", "normal", "low", "very low"], "title": "QemuProcessPriority", "description": "Qemu process priority enum"}, "QemuPropertiesV8": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name of the template"}, "category": {"anyOf": [{"$ref": "#/components/schemas/gns3server__schemas__controller__appliances__Category"}, {"type": "null"}], "title": "Category of the template"}, "default_name_format": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default name format"}, "usage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "How to use the template"}, "symbol": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Symbol of the template"}, "adapter_type": {"anyOf": [{"$ref": "#/components/schemas/QemuAdapterType"}, {"type": "null"}], "title": "Type of network adapter"}, "adapters": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Number of adapters"}, "custom_adapters": {"anyOf": [{"items": {"$ref": "#/components/schemas/CustomAdapterItem"}, "type": "array"}, {"type": "null"}], "title": "Custom adapters"}, "first_port_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Optional name of the first networking port example: eth0"}, "port_name_format": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Optional formating of the networking port example: eth{0}"}, "port_segment_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Optional port segment size. A port segment is a block of port. For example Ethernet0/0 Ethernet0/1 is the module 0 with a port segment size of 2"}, "linked_clone": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "False if you don't want to use a single image for all nodes"}, "ram": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Ram allocated to the appliance (MB)"}, "cpus": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Number of Virtual CPU"}, "hda_disk_interface": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskInterface"}, {"type": "null"}], "title": "Disk interface for the installed hda_disk_image"}, "hdb_disk_interface": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskInterface"}, {"type": "null"}], "title": "Disk interface for the installed hdb_disk_image"}, "hdc_disk_interface": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskInterface"}, {"type": "null"}], "title": "Disk interface for the installed hdc_disk_image"}, "hdd_disk_interface": {"anyOf": [{"$ref": "#/components/schemas/QemuDiskInterface"}, {"type": "null"}], "title": "Disk interface for the installed hdd_disk_image"}, "platform": {"anyOf": [{"$ref": "#/components/schemas/QemuPlatform"}, {"type": "null"}], "title": "Platform to emulate"}, "console_type": {"anyOf": [{"$ref": "#/components/schemas/QemuConsoleType"}, {"type": "null"}], "title": "Type of console connection for the administration of the appliance"}, "boot_priority": {"anyOf": [{"$ref": "#/components/schemas/QemuBootPriority"}, {"type": "null"}], "title": "Optional define the disk boot priory. Refer to -boot option in qemu manual for more details."}, "kernel_command_line": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Command line parameters send to the kernel"}, "kvm": {"anyOf": [{"$ref": "#/components/schemas/Kvm"}, {"type": "null"}], "title": "KVM requirements"}, "options": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Optional additional qemu command line options"}, "cpu_throttling": {"anyOf": [{"type": "integer", "maximum": 800.0, "minimum": 0.0}, {"type": "null"}], "title": "Throttle the CPU"}, "tpm": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Enable the Trusted Platform Module (TPM)"}, "uefi": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Enable the UEFI boot mode"}, "on_close": {"anyOf": [{"$ref": "#/components/schemas/QemuOnClose"}, {"type": "null"}], "title": "Action to execute on the VM is closed"}, "process_priority": {"anyOf": [{"$ref": "#/components/schemas/QemuProcessPriority"}, {"type": "null"}], "title": "Process priority for QEMU"}}, "type": "object", "title": "QemuPropertiesV8", "description": "Qemu template properties (v8)"}, "RefreshTokenRequest": {"properties": {"refresh_token": {"type": "string", "title": "Refresh Token"}}, "type": "object", "required": ["refresh_token"], "title": "RefreshTokenRequest", "description": "Schema for requesting a token refresh."}, "RenameSession": {"properties": {"title": {"type": "string", "maxLength": 255, "minLength": 1, "title": "Title", "description": "New session title"}}, "type": "object", "required": ["title"], "title": "RenameSession", "description": "Rename session request model."}, "Resource": {"properties": {"resource_id": {"type": "string", "format": "uuid", "title": "Resource Id"}, "resource_type": {"$ref": "#/components/schemas/ResourceType", "description": "Type of the resource"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "created_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Updated At"}}, "type": "object", "required": ["resource_id", "resource_type"], "title": "Resource"}, "ResourcePool": {"properties": {"name": {"type": "string", "title": "Name"}, "created_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Updated At"}, "resource_pool_id": {"type": "string", "format": "uuid", "title": "Resource Pool Id"}}, "type": "object", "required": ["name", "resource_pool_id"], "title": "ResourcePool"}, "ResourcePoolCreate": {"properties": {"name": {"type": "string", "title": "Name"}}, "type": "object", "required": ["name"], "title": "ResourcePoolCreate", "description": "Properties to create a resource pool."}, "ResourcePoolUpdate": {"properties": {"name": {"type": "string", "title": "Name"}}, "type": "object", "required": ["name"], "title": "ResourcePoolUpdate", "description": "Properties to update a resource pool."}, "ResourceType": {"type": "string", "enum": ["project"], "title": "ResourceType"}, "Role": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}, "created_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Updated At"}, "role_id": {"type": "string", "format": "uuid", "title": "Role Id"}, "is_builtin": {"type": "boolean", "title": "Is Builtin"}, "privileges": {"items": {"$ref": "#/components/schemas/Privilege"}, "type": "array", "title": "Privileges"}}, "type": "object", "required": ["role_id", "is_builtin", "privileges"], "title": "Role"}, "RoleCreate": {"properties": {"name": {"type": "string", "title": "Name"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}}, "type": "object", "required": ["name"], "title": "RoleCreate", "description": "Properties to create a role."}, "RoleUpdate": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}}, "type": "object", "title": "RoleUpdate", "description": "Properties to update a role."}, "Snapshot": {"properties": {"name": {"type": "string", "title": "Name", "description": "Name of the snapshot"}, "description": {"type": "string", "title": "Description", "description": "Description of the snapshot"}, "snapshot_id": {"type": "string", "format": "uuid", "title": "Snapshot Id"}, "project_id": {"type": "string", "format": "uuid", "title": "Project Id"}, "filename": {"type": "string", "title": "Filename", "description": "Filename of the snapshot"}, "created_at": {"type": "integer", "title": "Created At", "description": "Date of the snapshot (UTC timestamp)"}}, "type": "object", "required": ["name", "description", "snapshot_id", "project_id", "filename", "created_at"], "title": "Snapshot"}, "SnapshotCreate": {"properties": {"name": {"type": "string", "title": "Name", "description": "Name of the snapshot"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description", "description": "Description of the snapshot"}}, "type": "object", "required": ["name"], "title": "SnapshotCreate", "description": "Properties for snapshot creation."}, "Status": {"type": "string", "enum": ["stable", "experimental", "broken"], "title": "Status", "description": "Appliance status enum"}, "Supplier": {"properties": {"logo": {"type": "string", "title": "Logo", "description": "Path to the project supplier logo"}, "url": {"anyOf": [{"type": "string", "maxLength": 2083, "minLength": 1, "format": "uri"}, {"type": "null"}], "title": "Url", "description": "URL to the project supplier site"}}, "type": "object", "required": ["logo"], "title": "Supplier"}, "Template": {"properties": {"template_id": {"type": "string", "format": "uuid", "title": "Template Id"}, "name": {"type": "string", "title": "Name"}, "version": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Version"}, "category": {"$ref": "#/components/schemas/gns3server__schemas__controller__templates__Category"}, "default_name_format": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default Name Format"}, "symbol": {"type": "string", "title": "Symbol"}, "template_type": {"$ref": "#/components/schemas/NodeType"}, "compute_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Compute Id"}, "usage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Usage", "default": ""}, "netmiko_device_type": {"anyOf": [{"type": "string", "pattern": "^[a-z0-9_]+$|^$"}, {"type": "null"}], "title": "Netmiko Device Type", "description": "Device type for Netmiko-based automation tools (e.g. 'cisco_xr' or 'nokia_srl')"}, "tags": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Tags", "description": "User-defined metadata tags (e.g. 'vendor:cisco' or 'model:7200')"}, "appliance_metadata": {"anyOf": [{"$ref": "#/components/schemas/ApplianceMetadata"}, {"type": "null"}], "description": "Metadata inherited from the appliance the template was installed from"}, "created_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Updated At"}, "builtin": {"type": "boolean", "title": "Builtin"}}, "additionalProperties": true, "type": "object", "required": ["template_id", "name", "category", "symbol", "template_type", "builtin"], "title": "Template"}, "TemplateCreate": {"properties": {"template_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Template Id"}, "name": {"type": "string", "title": "Name"}, "version": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Version"}, "category": {"anyOf": [{"$ref": "#/components/schemas/gns3server__schemas__controller__templates__Category"}, {"type": "null"}]}, "default_name_format": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default Name Format"}, "symbol": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Symbol"}, "template_type": {"$ref": "#/components/schemas/NodeType"}, "compute_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Compute Id"}, "usage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Usage", "default": ""}, "netmiko_device_type": {"anyOf": [{"type": "string", "pattern": "^[a-z0-9_]+$|^$"}, {"type": "null"}], "title": "Netmiko Device Type", "description": "Device type for Netmiko-based automation tools (e.g. 'cisco_xr' or 'nokia_srl')"}, "tags": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Tags", "description": "User-defined metadata tags (e.g. 'vendor:cisco' or 'model:7200')"}, "appliance_metadata": {"anyOf": [{"$ref": "#/components/schemas/ApplianceMetadata"}, {"type": "null"}], "description": "Metadata inherited from the appliance the template was installed from"}}, "additionalProperties": true, "type": "object", "required": ["name", "template_type"], "title": "TemplateCreate", "description": "Properties to create a template."}, "TemplateSetting": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name of the settings set"}, "default": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Whether these are the default settings"}, "inherit_default_properties": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Whether the default properties should be used", "default": true}, "template_type": {"$ref": "#/components/schemas/TemplateType", "title": "Type of emulator properties"}, "template_properties": {"anyOf": [{"$ref": "#/components/schemas/QemuPropertiesV8"}, {"$ref": "#/components/schemas/DynamipsPropertiesV8"}, {"$ref": "#/components/schemas/IouPropertiesV8"}, {"$ref": "#/components/schemas/DockerPropertiesV8"}], "title": "Properties for the template"}}, "type": "object", "required": ["template_type", "template_properties"], "title": "TemplateSetting", "description": "Emulator settings configuration (v8)"}, "TemplateType": {"type": "string", "enum": ["docker", "iou", "dynamips", "qemu"], "title": "TemplateType", "description": "Template type enum"}, "TemplateUpdate": {"properties": {"template_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Template Id"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "version": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Version"}, "category": {"anyOf": [{"$ref": "#/components/schemas/gns3server__schemas__controller__templates__Category"}, {"type": "null"}]}, "default_name_format": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Default Name Format"}, "symbol": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Symbol"}, "template_type": {"anyOf": [{"$ref": "#/components/schemas/NodeType"}, {"type": "null"}]}, "compute_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Compute Id"}, "usage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Usage", "default": ""}, "netmiko_device_type": {"anyOf": [{"type": "string", "pattern": "^[a-z0-9_]+$|^$"}, {"type": "null"}], "title": "Netmiko Device Type", "description": "Device type for Netmiko-based automation tools (e.g. 'cisco_xr' or 'nokia_srl')"}, "tags": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Tags", "description": "User-defined metadata tags (e.g. 'vendor:cisco' or 'model:7200')"}, "appliance_metadata": {"anyOf": [{"$ref": "#/components/schemas/ApplianceMetadata"}, {"type": "null"}], "description": "Metadata inherited from the appliance the template was installed from"}}, "additionalProperties": true, "type": "object", "title": "TemplateUpdate"}, "TemplateUsage": {"properties": {"x": {"type": "integer", "title": "X"}, "y": {"type": "integer", "title": "Y"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name", "description": "Use this name to create a new node"}, "compute_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Compute Id", "description": "Used if the template doesn't have a default compute"}}, "type": "object", "required": ["x", "y"], "title": "TemplateUsage"}, "Token": {"properties": {"access_token": {"type": "string", "title": "Access Token"}, "token_type": {"type": "string", "title": "Token Type"}, "refresh_token": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Refresh Token"}}, "type": "object", "required": ["access_token", "token_type"], "title": "Token"}, "UDPPortInfo": {"properties": {"node_id": {"type": "string", "format": "uuid", "title": "Node Id"}, "lport": {"type": "integer", "title": "Lport"}, "rhost": {"type": "string", "title": "Rhost"}, "rport": {"type": "integer", "title": "Rport"}, "type": {"type": "string", "title": "Type"}}, "type": "object", "required": ["node_id", "lport", "rhost", "rport", "type"], "title": "UDPPortInfo", "description": "UDP port information."}, "User": {"properties": {"username": {"anyOf": [{"type": "string", "minLength": 3, "pattern": "[a-zA-Z0-9_-]+$"}, {"type": "null"}], "title": "Username"}, "is_active": {"type": "boolean", "title": "Is Active", "default": true}, "email": {"anyOf": [{"type": "string", "format": "email"}, {"type": "null"}], "title": "Email"}, "full_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Full Name"}, "created_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Updated At"}, "user_id": {"type": "string", "format": "uuid", "title": "User Id"}, "last_login": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Last Login"}, "is_superadmin": {"type": "boolean", "title": "Is Superadmin", "default": false}}, "type": "object", "required": ["user_id"], "title": "User"}, "UserCreate": {"properties": {"username": {"type": "string", "minLength": 3, "pattern": "[a-zA-Z0-9_-]+$", "title": "Username"}, "is_active": {"type": "boolean", "title": "Is Active", "default": true}, "email": {"anyOf": [{"type": "string", "format": "email"}, {"type": "null"}], "title": "Email"}, "full_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Full Name"}, "password": {"type": "string", "maxLength": 100, "minLength": 8, "format": "password", "title": "Password", "writeOnly": true}}, "type": "object", "required": ["username", "password"], "title": "UserCreate", "description": "Properties to create a user."}, "UserGroup": {"properties": {"name": {"anyOf": [{"type": "string", "minLength": 3, "pattern": "[a-zA-Z0-9_-]+$"}, {"type": "null"}], "title": "Name"}, "created_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Updated At"}, "user_group_id": {"type": "string", "format": "uuid", "title": "User Group Id"}, "is_builtin": {"type": "boolean", "title": "Is Builtin"}}, "type": "object", "required": ["user_group_id", "is_builtin"], "title": "UserGroup"}, "UserGroupCreate": {"properties": {"name": {"anyOf": [{"type": "string", "minLength": 3, "pattern": "[a-zA-Z0-9_-]+$"}, {"type": "null"}], "title": "Name"}}, "type": "object", "required": ["name"], "title": "UserGroupCreate", "description": "Properties to create a user group."}, "UserGroupUpdate": {"properties": {"name": {"anyOf": [{"type": "string", "minLength": 3, "pattern": "[a-zA-Z0-9_-]+$"}, {"type": "null"}], "title": "Name"}}, "type": "object", "title": "UserGroupUpdate", "description": "Properties to update a user group."}, "UserUpdate": {"properties": {"username": {"anyOf": [{"type": "string", "minLength": 3, "pattern": "[a-zA-Z0-9_-]+$"}, {"type": "null"}], "title": "Username"}, "is_active": {"type": "boolean", "title": "Is Active", "default": true}, "email": {"anyOf": [{"type": "string", "format": "email"}, {"type": "null"}], "title": "Email"}, "full_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Full Name"}, "password": {"anyOf": [{"type": "string", "maxLength": 100, "minLength": 8, "format": "password", "writeOnly": true}, {"type": "null"}], "title": "Password"}}, "type": "object", "title": "UserUpdate", "description": "Properties to update a user."}, "ValidationError": {"properties": {"loc": {"items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, "type": "array", "title": "Location"}, "msg": {"type": "string", "title": "Message"}, "type": {"type": "string", "title": "Error Type"}, "input": {"title": "Input"}, "ctx": {"type": "object", "title": "Context"}}, "type": "object", "required": ["loc", "msg", "type"], "title": "ValidationError"}, "Variable": {"properties": {"name": {"type": "string", "title": "Name", "description": "Variable name"}, "value": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Value", "description": "Variable value"}}, "type": "object", "required": ["name"], "title": "Variable"}, "Version": {"properties": {"controller_host": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Controller Host", "description": "Controller hostname or IP address"}, "version": {"type": "string", "title": "Version", "description": "Version number"}, "local": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Local", "description": "Whether this is a local server or not"}}, "type": "object", "required": ["version"], "title": "Version"}, "WhenExit": {"type": "string", "enum": ["stop", "suspend", "keep"], "title": "WhenExit", "description": "What to do with the VM when GNS3 VM exits."}, "gns3server__schemas__controller__appliances__Category": {"type": "string", "enum": ["router", "multilayer_switch", "switch", "firewall", "guest"], "title": "Category", "description": "Appliance category enum"}, "gns3server__schemas__controller__links__LinkType": {"type": "string", "enum": ["ethernet", "serial"], "title": "LinkType", "description": "Link type."}, "gns3server__schemas__controller__nodes__LinkType": {"type": "string", "enum": ["ethernet", "serial"], "title": "LinkType", "description": "Supported link types."}, "gns3server__schemas__controller__templates__Category": {"type": "string", "enum": ["router", "switch", "guest", "firewall"], "title": "Category", "description": "Supported categories"}}, "securitySchemes": {"OAuth2PasswordBearer": {"type": "oauth2", "flows": {"password": {"scopes": {}, "tokenUrl": "/v3/access/users/login"}}}}}}